我有一台运行 Ubuntu 8.04 的服务器。它是 Web 服务器 (mysql/php/apache2) 和邮件服务器 (dovecot/postfix/spam assassin)。
通常情况下,内存使用率很低,一切都运行顺利。但偶尔,内存使用率会突然飙升,系统开始崩溃,然后完全没有响应,需要硬重启。
问题是,我该如何诊断问题?它似乎没有按照任何一致的时间表发生,而且不可预测。我可以设置什么来抓住罪魁祸首?
以下是问题发生时的部分日志:
12 月 5 日 07:58:28 邮件内核:[587023.374916] lowmem_reserve[]: 0 0 0 0 12月5日 07:58:28 邮件内核:[587023.374919] DMA:3*4kB 3*8kB 3*16kB 1*32kB 1*64kB 1*128kB 1*256kB 1*512kB 0*1024kB 0*2048kB 0*4096kB = 1076kB 12月5日 07:58:28 邮件内核:[587023.374926] DMA32:88*4kB 30*8kB 10*16kB 0*32kB 4*64kB 0*128kB 0*256kB 0*512kB 1*1024kB 0*2048kB 0*4096kB = 2032kB 12 月 5 日 07:58:28 邮件内核:[587023.374934] 交换缓存:添加 5959244,删除 5959242,找到 4577237/5361570,竞争 31+2723 12 月 5 日 07:58:28 邮件内核:[587023.374936] 可用交换 = 0kB 12 月 5 日 07:58:28 邮件内核:[587023.374937] 总交换空间 = 524280kB 12 月 5 日 07:58:28 邮件内核:[587023.374939] 可用交换:0kB 12 月 5 日 07:58:28 邮件内核:[587023.377091] 67584 页 RAM 12月5日 07:58:28 邮件内核:[587023.377096] 2652 个保留页面 12 月 5 日 07:58:28 邮件内核:[587023.377098] 共享了 5432 个页面 12 月 5 日 07:58:28 邮件内核:[587023.377099] 2 个页面交换缓存 12 月 5 日 07:58:28 邮件内核:[587078.150437] pickup 调用 oom-killer:gfp_mask=0x1201d2,order=0,oomkilladj=0 12 月 5 日 07:58:28 邮件内核:[587078.150450] Pid:4649,通信:拾取未受污染 2.6.24-22-xen #1 12月5日 07:58:28 邮件内核:[587078.150453] 12 月 5 日 07:58:28 邮件内核:[587078.150453] 调用跟踪: 12月5日 07:58:28 邮件内核:[587078.150473] [] oom_kill_process+0xf6/0x110 12月5日 07:58:28 邮件内核:[587078.150478] [] out_of_memory+0x19e/0x1e0 12月5日 07:58:28 邮件内核:[587078.150483] [] __alloc_pages+0x389/0x3c0 12月5日 07:58:28 邮件内核:[587078.150490] [] __do_page_cache_readahead+0x104/0x260 12月5日 07:58:28 邮件内核:[587078.150495] [] filemap_fault+0x2de/0x3e0 12月5日 07:58:28 邮件内核:[587078.150500] [] __do_fault+0x6a/0x5d0 12月5日 07:58:28 邮件内核:[587078.150504] [] handle_mm_fault+0x1d1/0xd60 12月5日 07:58:28 邮件内核:[587078.150508] [] do_sync_write+0xd9/0x120 12月5日 07:58:28 邮件内核:[587078.150515] [] do_page_fault+0x1f3/0x11e0 12月5日 07:58:28 邮件内核:[587078.150530] [] :ext3:free_rb_tree_fname+0x4c/0xb0 12月5日 07:58:28 邮件内核:[587078.150535] [] vfs_write+0x14e/0x190 12月5日 07:58:28 邮件内核:[587078.150539] [] error_exit+0x0/0x79
“mail” 是服务器的名称。
答案1
当你注意到它正在抖动时,请查看
ps aux
和
top
如果您想要一个“漂亮”的 top 版本,您可以安装“htop”并使用它。
您的日志文件也应该能给您一些线索。以 root 用户身份检查 /var/log 中的日志。
我强烈建议您安装 logwatch 并让它定期通过电子邮件向您发送日志报告,以便您也可以通过这种方式查看日志。
答案2
内存使用问题故障排除
看看这个页
答案3
我遇到过一些 MySQL 查询速度慢导致整个服务器无响应的问题。启用log_slow_queries或许看看你的缓冲区和缓存的大小。
此外,如果生成过多的 Apache 2 进程,它也会占用大量内存。
如果您运行 clamav 对电子邮件进行病毒扫描,并且有大量邮件进入,它也会消耗相当多的资源。