我正在运行Debian GNU /
Linux 5.0,我遇到来自内核的间歇性out_of_memory错误.服务器停止响应除ping之外的所有操作,我必须重新启动服务器.
# uname -a
Linux xxx 2.6.18-164.9.1.el5xen #1 SMP Tue Dec 15 21:31:37 EST 2009 x86_64
GNU/Linux
这似乎是来自/ var / log / messages的重要部分
Dec 28 20:16:25 slarti kernel: Call Trace:
Dec 28 20:16:25 slarti kernel: [] out_of_memory+0x8b/0x203
Dec 28 20:16:25 slarti kernel: [] __alloc_pages+0x245/0x2ce
Dec 28 20:16:25 slarti kernel: [] __do_page_cache_readahead+0xc6/0x1ab
Dec 28 20:16:25 slarti kernel: [] filemap_nopage+0x14c/0x360
Dec 28 20:16:25 slarti kernel: [] __handle_mm_fault+0x443/0x1337
Dec 28 20:16:25 slarti kernel: [] do_page_fault+0xf7b/0x12e0
Dec 28 20:16:25 slarti kernel: [] monotonic_clock+0x35/0x7b
Dec 28 20:16:25 slarti kernel: [] thread_return+0x6c/0x113
Dec 28 20:16:25 slarti kernel: [] remove_vma+0x4c/0x53
Dec 28 20:16:25 slarti kernel: [] _spin_lock_irqsave+0x9/0x14
Dec 28 20:16:25 slarti kernel: [] error_exit+0x0/0x6e
我想也许服务器实际上内存不足(它有1GB的物理内存),但我的Cacti内存图对我来说还不错……
一位朋友在这里纠正了我;他注意到图形实际上是倒置的,因为紫色表示内存空闲(不是标题所示的内存).
但奇怪的是,在内核崩溃之前不久,加载图就会通过屋顶:
我可以查看哪些日志以获取更多信息?
更新:
也许值得注意的是 – 崩溃时cpu的百分比和网络流量图都是正常的.唯一的异常是平均负荷图.
更新2:
我认为当我部署Passenger / Ruby时会发生这种情况,使用top我发现Ruby使用的是大部分内存和相当数量的cpu:
PID USER PR NI VIRT RES SHR S %cpu %MEM TIME+ COMMAND
5189 www-data 18 0 255m 124m 3388 S 0 12.1 12:46.59 ruby1.8
14087 www-data 16 0 241m 117m 2328 S 21 11.4 3:41.04 ruby1.8
15883 www-data 16 0 239m 115m 2328 S 0 11.3 1:35.61 ruby1.8