为什么我的服务器 CPU 使用率只有 1.5%,但负载却很高

为什么我的服务器 CPU 使用率只有 1.5%,但负载却很高

whm apache status 中的内容如下:

Current Time: Sunday, 23-Dec-2012 05:13:40 CST
Restart Time: Saturday, 22-Dec-2012 13:38:12 CST
Parent Server Generation: 9
Server uptime: 15 hours 35 minutes 28 seconds
Total accesses: 3444470 - Total Traffic: 2.1 GB
CPU Usage: u40.86 s113.4 cu748.01 cs0 - 1.61% CPU load
61.4 requests/sec - 38.9 kB/second - 649 B/request
110 requests currently being processed, 0 idle workers 

我已将 whm 中的最大连接数和最大服务器数分别增加到 1500 和 3000。

服务器大量使用硬盘进行缓存。它只有 10 mbps 的连接速度。但是,我并不想增加它,因为它只有 38.9 kB/秒。

如果瓶颈确实是 IO,我该如何检查?

该服务器还会多次 curl 其他站点并缓存结果。

服务器响应非常快,但是有一点延迟。

IO 似乎是问题所在:iostat -xdk 1 20

Device:         rrqm/s   wrqm/s     r/s     w/s    rkB/s    wkB/s avgrq-sz avgqu-sz   await  svctm  %util
sda               1.81   413.86    8.63  201.33   190.15  2463.45    25.28    46.85  223.00   3.79  79.68
sdb               0.00     0.00    0.00    0.00     0.02     0.00     8.07     0.00    0.68   0.68   0.00
sdd               0.00     0.00    0.00    0.00     0.02     0.00     8.07     0.00    0.73   0.72   0.00
sdc               0.00     0.00    0.00    0.00     0.02     0.00     8.07     0.00    0.78   0.78   0.00
dm-0              0.00     0.00    1.94  140.75    49.18   562.97     8.58    23.97  168.00   3.88  55.35
dm-1              0.00     0.00    0.00    0.00     0.02     0.00     8.00     0.00    6.65   2.25   0.00
dm-2              0.00     0.00    8.52  475.11   140.85  1900.43     8.44    47.55   98.32   1.63  78.97

Device:         rrqm/s   wrqm/s     r/s     w/s    rkB/s    wkB/s avgrq-sz avgqu-sz   await  svctm  %util
sda               0.00   292.00    6.00  131.00   244.00  1668.00    27.91     5.14    6.53   2.24  30.70
sdb               0.00     0.00    0.00    0.00     0.00     0.00     0.00     0.00    0.00   0.00   0.00
sdd               0.00     0.00    0.00    0.00     0.00     0.00     0.00     0.00    0.00   0.00   0.00
sdc               0.00     0.00    0.00    0.00     0.00     0.00     0.00     0.00    0.00   0.00   0.00
dm-0              0.00     0.00    0.00  165.00     0.00   660.00     8.00     5.14    3.37   0.21   3.40
dm-1              0.00     0.00    0.00    0.00     0.00     0.00     0.00     0.00    0.00   0.00   0.00
dm-2              0.00     0.00    5.00  394.00   236.00  1576.00     9.08     1.55    3.92   0.67  26.70

%util 经常达到 100%。所以这似乎是瓶颈。

Vmstat 似乎不是问题:

root@host [/var/log]#  vmstat 1 20
procs -----------memory---------- ---swap-- -----io---- --system-- -----cpu-----
 r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa st
12 21      0 1148732 1160660 25192080    0    0    12   155   12   16 24 17 33 26  0
15  0      0 1281500 1160680 25193120    0    0    44  4568 15117 5501 31 19 24 27  0
12  3      0 1313904 1160684 25193728    0    0   104  1576 15960 5996 32 22 45  1  0
 7 10      0 1322328 1160692 25194140    0    0    16  3024 14354 5274 28 19 20 33  0
 6 12      0 1251420 1160704 25194848    0    0    96   452 13551 5208 24 19 32 26  0
20  0      0 1312052 1160708 25195592    0    0    76  4092 14885 5727 28 19 50  3  0
 3  0      0 1341072 1160728 25196652    0    0   456  3888 13056 5113 24 15 57  4  0
 6  1      0 1302052 1160728 25197448    0    0   188   936 11235 4372 20 15 66  0  0
11  9      0 1267768 1160744 25197872    0    0    16  2388 14423 5160 26 20 34 21  0
 5  0      0 1355152 1160748 25198496    0    0    36   504 12269 5302 19 14 52 15  0
 8  0      0 1323712 1160752 25199456    0    0    52  4032 12713 4779 22 16 61  0  0
 7  0      0 1350484 1160760 25199872    0    0    72  2788 13692 5086 25 17 54  4  0
 6  3      0 1334872 1160760 25200320    0    0     8  1088 12882 5193 23 17 60  0  0
 6 10      0 1266724 1160772 25200724    0    0    24  1940 13067 4705 25 19 39 17  0
 6  0      0 1315404 1160776 25201176    0    0    28  1428 11883 4914 19 14 46 21  0
11  0      0 1309244 1160784 25201724    0    0     0  2612 13001 4905 25 17 58  0  0
 4  0      0 1349536 1160796 25202204    0    0    12  2240 13124 4900 24 17 58  2  0
12  1      0 1322520 1160800 25202964    0    0   464  1268 13991 5733 26 19 54  0  0
 5 12      0 1301112 1160804 25203492    0    0    36  2172 13427 4956 25 17 38 20  0
 3  1      0 1374288 1160808 25203780    0    0    96   772 13360 5692 24 16 35 25  0

mpstat 看起来不错

root@host [/var/log]# mpstat -P ALL
Linux 2.6.32-279.19.1.el6.x86_64 (host.buildingsuperteams.com)  12/23/2012      _x86_64_        (16 CPU)

06:17:20 AM  CPU    %usr   %nice    %sys %iowait    %irq   %soft  %steal  %guest   %idle
06:17:20 AM  all   24.23    0.10   16.48   25.59    0.01    0.31    0.00    0.00   33.29
06:17:20 AM    0   24.18    0.09   17.00   34.98    0.00    0.16    0.00    0.00   23.59
06:17:20 AM    1   34.84    0.02   28.32   17.70    0.00    3.39    0.00    0.00   15.74
06:17:20 AM    2   26.35    0.04   20.08   26.29    0.00    0.01    0.00    0.00   27.22
06:17:20 AM    3   19.17    0.03   15.51   29.01    0.00    0.05    0.00    0.00   36.22
06:17:20 AM    4   17.64    0.28    9.33   35.08    0.00    0.26    0.00    0.00   37.42
06:17:20 AM    5   31.61    0.08   24.72   17.62    0.00    0.05    0.00    0.00   25.91
06:17:20 AM    6   24.38    0.07   19.06   20.42    0.00    0.03    0.00    0.00   36.04
06:17:20 AM    7   19.59    0.04   12.55   22.29    0.00    0.02    0.00    0.00   45.50
06:17:20 AM    8   14.21    0.12    8.60   38.27    0.00    0.44    0.00    0.00   38.36
06:17:20 AM    9   34.76    0.20   22.08   23.52    0.19    0.27    0.00    0.00   18.98
06:17:20 AM   10   26.13    0.06   16.03   22.77    0.00    0.01    0.00    0.00   35.00
06:17:20 AM   11   20.32    0.08   10.69   24.18    0.00    0.01    0.00    0.00   44.72
06:17:20 AM   12   16.99    0.21    8.50   35.72    0.00    0.17    0.00    0.00   38.40
06:17:20 AM   13   31.21    0.08   23.08   18.30    0.00    0.01    0.00    0.00   27.32
06:17:20 AM   14   25.72    0.06   16.95   21.02    0.00    0.01    0.00    0.00   36.25
06:17:20 AM   15   20.60    0.09   11.18   22.40    0.00    0.01    0.00    0.00   45.73

答案1

iotop是一个非常好的工具,可以了解你的机器的 IO 使用情况以及所有进程在做什么。

在 rhel/centos 版本中安装

 # yum install iotop -y

对于像 Ubuntu 这样的版本:

 # apt-get install iotop

答案2

你应该绝不使用 apachectl 测量系统的性能。这是从 apache 的角度来看的,对于操作系统其余部分的性能而言,这可能完全是错误的。

iostat 是 sysstat 包的一部分,可以测量 io 性能。如果你想找出哪个特定进程正在占用 io,你也可以使用 iotop(可通过 EPEL 存储库获得 - 不过,我猜它会显示“apache”)。从 iostat 中,你希望它尽可能低,util%这反过来会给你一个非常低的await值。

您的 mpstat 似乎不太好。再次,您显示了较高的 IO 使用率 ( %iowait)。对于一般的网站,您希望 iowaits 低于 1% 才能响应良好。对于典型的 Apache 环境,您还使用了相当高的基于系统的使用率。但目前没有足够的数据来找出原因。

虽然不是所要求的一部分,但您应该熟悉使用它top作为系统的最基本诊断工具,因为它将让您全面了解系统的各个方面。顶部输出中最重要的部分实际上位于输出的顶部(讽刺的是,您在 pastebin 中遗漏了它)。

最后,如果您指的是 apache 的“最大服务器”设置中的 maxclients,那么 3000 对世界上任何系统来说都太高了。我认为即使是那些价值 50 万美元的系统也无法处理那么多 apache 进程。如果 apach 出于某种原因决定增加服务器数量,那么您将陷入真正的困境。然而,理想的数字只能通过在特定机器下测试特定应用程序来测量。基本上,您的最大服务器 * 每个服务器使用的内存量应该等于您的总可用内存(不包括交换空间,因为您不想一直使用交换空间,也包括 apache 的总可用内存,即操作系统、其他服务等之后)。

答案3

当前正在处理 110 个请求,0 个闲置工人

...

我已将 whm 中的最大连接数和最大服务器数分别增加到 1500 和 3000

正如 Peter 所说,这里有相当多的 IO 正在进行 - 但我认为这不是唯一的问题。为什么您的服务器没有很多空闲的工作器?16 个核心?这是一个糟糕的设置。使用大型机器进行网络服务是没有意义的。将 serverlimit 设置为比 maxclients 高得多没有多大意义。看起来有什么东西限制了 apache 线程的数量 - 我们需要从 httpd.conf 查看您的核心设置

我怀疑 irqbalancing 不是最佳的。看起来应用程序工作负载分布均匀。

为什么我的服务器 CPU 使用率只有 1.5%,但负载却很高

但您没有提供任何负载指标。

正如彼得所说,你应该从顶部开始。

该服务器还会对其他站点进行大量 curl 并缓存结果......服务器响应非常快,但有一点延迟。

那么延迟是由于远程访问造成的吗?还是其他原因?

你说这里存在问题 - 但如果不知道你要解决的问题是什么,就很难给出任何建议。当然,有很多写入操作正在进行,数据模式表明有很多非常小的数据块(同样,你的 HTTP 流量看起来很奇怪),但如果不了解这里发生了什么,就不可能给出建议。

答案4

我在 cpanel 上提交了一张票。

那里的能干人员告诉我,问题在于 kjournald 每次写入 5-10MB 的文件。

我不太清楚为什么写了这么多。

我转移到了 SSD,而且它还能正常工作。

基本上我需要运行iostat -o -a并查看 kjournald 是否是罪魁祸首。

它导致太多的 IO 写入,从而导致磁盘利用率始终为 100%。

相关内容