标签: outofmemoryerror

如何阅读 oom-killer 系统日志消息?

我有一个 Ubuntu 12.04 服务器,它有时会完全死机 - 没有 SSH,没有 ping,在物理重新启动之前什么都没有。

重新启动后,我在 syslog 中看到 oom-killer 杀死了几乎所有东西。

其中有很多详细的内存使用信息。如何阅读这些日志以查看导致 OOM 问题的原因?服务器的内存远远超过它需要的内存,所以它不应该耗尽内存。


Oct 25 07:28:04 nldedip4k031 kernel: [87946.529511] oom_kill_process: 9 callbacks suppressed
Oct 25 07:28:04 nldedip4k031 kernel: [87946.529514] irqbalance invoked oom-killer: gfp_mask=0x80d0, order=0, oom_adj=0, oom_score_adj=0
Oct 25 07:28:04 nldedip4k031 kernel: [87946.529516] irqbalance cpuset=/ mems_allowed=0
Oct 25 07:28:04 nldedip4k031 kernel: [87946.529518] Pid: 948, comm: irqbalance Not tainted 3.2.0-55-generic-pae #85-Ubuntu
Oct 25 07:28:04 nldedip4k031 kernel: [87946.529519] Call Trace:
Oct 25 07:28:04 nldedip4k031 kernel: [87946.529525]  [] dump_header.isra.6+0x85/0xc0
Oct 25 …
Run Code Online (Sandbox Code Playgroud)

linux outofmemoryerror

24
推荐指数
1
解决办法
3万
查看次数

如何可靠地进行 Java 堆转储?

我的团队在尝试进行由 OutOfMemoryErrors 触发的良好堆转储时遇到了困难。出于特定原因,我们目前正在使用从 bash 脚本调用的 jmap 进行转储,而不是使用 HeapDumpOnOutOfMemoryError 标志。我们使用的是 64 位 1.6 JVM,堆大小约为 3 GB。我们的堆转储失败 90% 的时间(猜测)。

有什么我们可以做的事情来提高我们获得干净的堆转储的几率,我们可以用它来解决内存问题吗?我已经读到 jmap 在 Java 1.4 中存在重大问题,但现在应该主要解决这些问题。

java outofmemoryerror dump oom

9
推荐指数
2
解决办法
2万
查看次数

是什么导致 JBoss 上的 PermGen OutOfMemoryError?

JBoss 中 PermGen OutOfMemoryError 的根本原因是什么?

我在我的开发环境中运行 JBoss AS 4.2.2,这是在多次重新部署我的 Web 应用程序后发生的。

Christian Vest Hansen 的博客给出的 JVM 选项很有帮助,但并没有完全解决问题:

-XX:+UseConcMarkSweepGC
-XX:+CMSPermGenSweepingEnabled
-XX:+CMSClassUnloadingEnabled
-XX:MaxPermSize=128m
Run Code Online (Sandbox Code Playgroud)

jboss permgen outofmemoryerror

8
推荐指数
1
解决办法
7755
查看次数

这怎么可能?PHP 内存错误——允许的内存大小/字节已用完

Fatal error: Allowed memory size of 134217728 bytes exhausted (tried to allocate 1540673 bytes) in /home/appdev/glicious/Nutrition.php on line 41

如果您没有注意到,134217728 比 1540673 大两个数量级。

memory outofmemoryerror php5 apache-2.2

7
推荐指数
1
解决办法
463
查看次数

内存和交换已满,无法ssh;除了物理重启还有其他选择吗?

错误地,我在我的 ubuntu 服务器上执行了一些使用所有内存(我认为是交换)的应用程序,现在它崩溃了,SSH 不起作用并冻结。除了以下解决方案,您还知道其他选择吗:

  1. 物理重启服务器。
  2. 等到一个过程结束。

当 ssh 不起作用时,有什么方法可以远程重新启动服务器?我仍然可以 ping 服务器,所以想知道是否有任何保留内存用于杀死不友好的进程或基本命令,例如重新启动操作系统。

*使用“nohup”执行的命令,因此它们不会以关闭 ssh 会话而结束。

ubuntu ssh server-crashes outofmemoryerror

6
推荐指数
1
解决办法
4984
查看次数

Mysql 崩溃、oom-killer、内存不足、调优问题?

我刚刚将我所有的网站都移到了具有 4GB RAM 的新服务器上。几乎立即,mysql 开始崩溃,并且有一次没有重新启动,这导致了一次重大中断(因为我没有注意到,直到有人向我指出)。

这是删除 CRON 作业的日志:http : //pastebin.com/9SAUBcFp(apache2 调用了 oom-killer、内存不足错误等)

在没有df -h超过4%的使用率。

这是 free -m 的输出

             total       used       free     shared    buffers     cached
Mem:          4002       2090       1911          0        168       1015
-/+ buffers/cache:        906       3095
Swap:          255          8        247
Run Code Online (Sandbox Code Playgroud)

这是 mysqlreport 的输出

__ Key _________________________________________________________________
Buffer used   849.00k of  16.00M  %Used:   5.18
  Current       2.99M            %Usage:  18.71
Write hit      44.87%
Read hit       98.84%

__ Questions ___________________________________________________________
Total         198.55k    33.8/s
  QC Hits     147.94k    25.1/s  %Total:  74.51
  DMS          31.35k …
Run Code Online (Sandbox Code Playgroud)

mysql performance memory outofmemoryerror oom-killer

5
推荐指数
1
解决办法
6799
查看次数

Postgres 子进程占用大量内存

我们有一个 postgres 9.0 实例,它运行在一台非常强大的机器上(96G RAM/24 个内核)。最近几周,我们经历了由于 OOM 杀手因内存不足而杀死 postgres 子进程而导致的崩溃。似乎由于使用连接池,这些子进程寿命很长(这是有道理的,因为打开和关闭连接需要时间),问题是它们的内存消耗逐渐增长,甚至达到 9Gigs/进程。正如您可能想象的那样,拥有 10 个这样的内存就可以填满可用的内存,并且 oom-killer 就会启动。

问题是:

  1. 如果我们使用默认配置参数,进程怎么可能分配这么多内存?
  2. 为什么这些进程不释放内存?

作为参考,可能影响内存的设置:

max_connections = 950
shared_buffers = 32MB
Run Code Online (Sandbox Code Playgroud)

所有其他设置都不会被覆盖,这意味着我们使用默认值。

postgresql linux outofmemoryerror memory-usage

3
推荐指数
1
解决办法
4214
查看次数

内存不足内核 (3.2.0) 恐慌 (Debian 7.3) 即使有问题的进程被杀死

在尝试将一个相当大的文件夹 (450G) 备份到该服务器中的 2TB 驱动器时,该驱动器仅作为备份目标rdiff-backup(版本 1.2.8 - 最后标记为stable)导致内核崩溃。

系统:

Linux giorgio 3.2.0-4-amd64 #1 SMP Debian 3.2.51-1 x86_64 GNU/Linux
Run Code Online (Sandbox Code Playgroud)

磁盘:软件镜像RAID模式下2块1TB磁盘,1块2TB磁盘专用于备份。

我有一个怀疑:服务器上的内存是2G RAM + 2G swap = 4G。文件大小最大为 16G。是否有可能rdiff-backup在某个时候将整个文件加载到内存中?

在任何情况下,都不应该发生内核恐慌(因为 rdiff 进程被杀死了?所以内存应该再次可用?),所以我想我的问题有两部分,一:关于我的怀疑,二:关于内核恐慌。

顺便说一下,恐慌是最近开始的,相当多的备份已经成功——完整的和增量的——并且那些大 GB 文件已经存在。所以我猜这是新的 Debian 内核的错而不是 rdiff-backup 的错?

发生恐慌时的日志文件部分http://pastebin.com/e9a5fQdh

屏幕上的最后一件事:

编辑/更新:我刚刚尝试创建一个 20GB 的交换文件(使用来自 /dev/zero 的 dd)并且服务器再次关闭,对ping.

从查看日志来看:似乎内核已经杀死了一些进程 - 包括我怀疑导致这一切的那个进程(rdiff-backup) -但说“耗尽了可杀死的进程”。似乎杀死进程并没有释放内存?

linux debian outofmemoryerror rdiff-backup kernel-panic

3
推荐指数
1
解决办法
678
查看次数

btrfs 余额操作期间继续工作安全吗?

我有一个 Rocks 集群系统,带有 NAS,在 RAID 10 配置中使用 btrfs 文件系统。最近,我们一直面临“设备上没有剩余空间”错误,我最终发现元数据几乎完全用完。所以我希望执行平衡操作来解决这个问题。

我不清楚的是,在进行平衡操作时,我们的用户是否可以继续工作并访问他们在 nas 上的目录?平衡手册指出:

“文件系统的磁盘状态始终保持一致,因此意外中断(例如系统崩溃、重新启动)不会损坏文件系统。平衡操作的进度会暂时存储,并将在挂载时恢复,除非挂载选项指定了skip_balance。”

这让我认为数据块只有在该块的平衡完成后才会被重新分配,但我在任何地方都没有找到我的问题的明确答案:用户继续工作、在 nas 上读取/写入数据是否安全在平衡操作期间,或者是否有必要在此过程中使系统离线,这对于我们的 TB 数据可能需要数小时或数天的时间?

network-attached-storage outofmemoryerror memory-usage btrfs

3
推荐指数
1
解决办法
1125
查看次数

Apache2 进程在 512MB VPS 上占用太多内存

我正在运行具有 512MB 内存的 Ubuntu VPS。它只是开发服务器,因此实际上没有流量。尽管如此,我还是时不时地收到 Memory Exhaustion 消息,我的整个内存都被耗尽了。我试图在 SF 浏览各种类似的问题,但无法真正解决没有流量的服务器消耗内存的情况。下面是顶部的输出:

ps aux 的输出为:

USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
root         1  0.0  0.3  23572  1684 ?        Ss   Apr11   0:03 init
root      1177  0.0  0.1  18888  1028 ?        Ss   Apr11   0:01 cron
mysql     1189  0.0  5.6 258344 29680 ?        Ssl  Apr11   1:04 /usr/sbin/mysqld
syslog    1202  0.0  0.1  12536   788 ?        Ss   Apr11   0:01 /sbin/syslogd -u syslog
root      1268  0.0  0.5  49424  2684 ?        Ss   Apr11   0:00 …
Run Code Online (Sandbox Code Playgroud)

ubuntu outofmemoryerror memory-usage apache-2.2

2
推荐指数
1
解决办法
1767
查看次数