我并不是真正的系统管理员,只是想为一些朋友建立一个服务器(实际上是一个租用的 VDS)。
我最近将游戏服务器/MySQL/网站从一个 VPS 转移到另一个 VPS - 虽然新 VPS 上没有任何问题,但我不断看到我的系统负载激增并占用了两个处理器;以前的服务器系统负载平均约为 .3-.5。以前的服务器是 Ubuntu 14,我从那里导出了一个安装的软件包列表,然后 apt-get 将它们安装在新服务器上;我也从旧服务器 rsync 了大多数文件(我想我复制了一些会弄乱我的内核的坏东西……)
无论如何,这是我的 uname -a 的结果:
Linux ophq 3.19.0-18-generic #18-Ubuntu SMP Tue May 19 18:31:35 UTC 2015 x86_64 x86_64 x86_64 GNU/Linux
屏幕上的 Landscape-sysinfo/logging 的结果如下:
Welcome to Ubuntu 15.04 (GNU/Linux 3.19.0-18-generic x86_64)
System load: 2.13 Processes: 11
Usage of /: 22.6% of 196.64GB Users logged in: 1
Memory usage: 32% IP address for eth0: 123.123.123.123
Swap usage: 0%
(目前一个游戏服务器正在使用中,因此内存使用量 - 我必须从默认值减少分配给 Minecraft 的 RAM 量)
顶部结果: http://ericbarber.me/serverproblem/top.png
除此之外 - 如果我按下 F,然后在“进程状态”上按下 S,并重新排序顶部列表,我会在“D”下列出 2 个命令... kworker/u30:0 和 kworker/u30:1,这让我得出了内核假设......
我完全不明白为什么平均负载如此之高 - 我让我的用户在 MC 和 CS:GO 服务器上进行测试,他们没有遇到任何延迟 - 我还测试了网络服务器,它们提供页面的速度非常快(与旧服务器相比)。
我认为这可能是中断问题,所以这里是 cat /proc/interrupts 的结果:
http://ericbarber.me/serverproblem/interrupts2.png
除此之外,另一个问题建议运行 grep . -r /sys/firmware/acpi/interrupts/ 并禁用任何大于 0 的值……尽管不幸的是我的所有值都是 0。
与上面的 serverproblem/interrupts.png 相同的 URL
我安装了 perf 并做了一份快速的 30 秒报告 - 但我不太理解这个输出:
与上面的 serverproblem/perf.png 相同的 URL
我将省略 CPU 信息,但它是 Intel Xeon CPU E5-2690、2 核、2GB RAM,并且我相信大约有 500GB 硬盘。如果这是一个愚蠢的问题或者之前有人问过,我深表歉意 - 我已经研究了几个小时,并且我遇到了 Google 过去的死胡同,只能从头开始……我最好避免这种情况。
对于链接抱歉...新用户有限制。
编辑:添加 mpstat 的结果:
Linux 3.19.0-18-generic (ophq) 06/05/2015 _x86_64_ (2 CPU)
02:10:35 PM CPU %usr %nice %sys %iowait %irq %soft %steal %guest %gnice %idle
02:10:35 PM all 7.28 0.00 1.72 47.13 0.00 0.09 0.53 0.00 0.00 43.24
答案1
最终我认为这是内核错误。更新到 4.0.0-040000-generic #201504121935 后,我的 CPU 等待时间正常,并且在大多数情况下系统负载低于 .10,除非托管服务器上发生某些事情。
无论如何,我使用以下链接来帮助:http://ubuntuhandbook.org/index.php/2015/04/upgrade-to-linux-kernel-4-0-in-ubuntu/
为了遵守规则,我以 root 身份执行以下操作,然后重新启动机器:
wget http://kernel.ubuntu.com/~kernel-ppa/mainline/v4.0-vivid/linux-headers-4.0.0-040000_4.0.0-040000.201504121935_all.deb
wget http://kernel.ubuntu.com/~kernel-ppa/mainline/v4.0-vivid/linux-image-4.0.0-040000-generic_4.0.0-040000.201504121935_amd64.deb
wget http://kernel.ubuntu.com/~kernel-ppa/mainline/v4.0-vivid/linux-headers-4.0.0-040000-generic_4.0.0-040000.201504121935_amd64.deb
dpkg -i linux-headers-4.0.0*.deb linux-image-4.0.0*.deb
update-grub
至于我是如何发现这个问题的 - 在阅读了无数论坛和新闻组/邮件列表却一无所获之后(尝试过修改 BIO、启动选项、commit=60、禁用服务、更改物理服务器位置等),我决定降级或更新内核... 因为 15.04 是新版本,所以我更新了。 我仍然不确定根本原因,因为我没有看到任何其他关于此问题的报告,我的假设是当我从旧的 14.10 系统使用 rsync 时,一个有故障的驱动程序被复制过来或一个有故障的内核文件 - 为什么 4.0.0 会修复这个问题,我不明白... 但至少不再有 kworker 每 5 秒写入 kern.log 和我的硬盘。
答案2
有时硬盘可能会成为瓶颈并导致系统负载过高,因此您可能需要研究这一点。
您可以检查这些链接,获取有关可以使用的工具的各种建议,以查明这是否是您所遇到的问题。
https://serverfault.com/questions/9428/how-can-i-monitor-hard-disk-load-on-linux
答案3
我最近在 14.10 和 15.04 服务器上遇到了类似的问题,将其追溯到一个廉价的显示适配器(pny geforce 210 pci-E),导致 nouveau 在显示器未连接到卡时出现故障。可能与您的问题无关,但从我的盒子中取出卡后,它就解决了