您觉得这件上衣看上去健康吗?

您觉得这件上衣看上去健康吗?

我运行的服务器具有以下规格:

  • 英特尔 i7 920
  • 8 GB 内存
  • Linux 2.6.32-25-服务器 #44-Ubuntu 10.04 SMP 2010 年 9 月 17 日星期五 21:13:39 UTC x86_64 GNU/Linux
  • 75 个 Apache 进程
  • 具有 2 个磁盘的低端硬件 RAID-1

过去,我们在扩展服务时遇到的所有问题都与磁盘限制有关,但目前我们看到的负载数字比以前更高,尤其是在更新到 Ubuntu 10.04 之后。服务器每秒处理大约 50 个请求。交换未使用,不应处于活动状态。MySQL 数据集有几 GB,但访问应该得到相当好的优化。

> top
top - 10:42:50 up 16 days, 18:49,  1 user,  load average: 20.02, 16.17, 11.44
Tasks: 277 total,   4 running, 273 sleeping,   0 stopped,   0 zombie
Cpu0  : 38.6%us,  3.3%sy,  0.0%ni, 58.2%id,  0.0%wa,  0.0%hi,  0.0%si,  0.0%st
Cpu1  : 37.9%us,  3.3%sy,  0.0%ni, 58.8%id,  0.0%wa,  0.0%hi,  0.0%si,  0.0%st
Cpu2  : 25.9%us,  3.0%sy,  0.0%ni, 69.5%id,  1.3%wa,  0.0%hi,  0.3%si,  0.0%st
Cpu3  : 23.5%us,  2.0%sy,  0.0%ni, 67.9%id,  0.0%wa,  0.0%hi,  6.6%si,  0.0%st
Cpu4  : 16.4%us,  1.3%sy,  0.0%ni, 82.3%id,  0.0%wa,  0.0%hi,  0.0%si,  0.0%st
Cpu5  : 15.3%us,  1.3%sy,  0.0%ni, 83.4%id,  0.0%wa,  0.0%hi,  0.0%si,  0.0%st
Cpu6  : 14.3%us,  1.0%sy,  0.0%ni, 84.7%id,  0.0%wa,  0.0%hi,  0.0%si,  0.0%st
Cpu7  :  2.3%us,  0.6%sy,  0.0%ni, 97.1%id,  0.0%wa,  0.0%hi,  0.0%si,  0.0%st
Mem:   8187668k total,  8117276k used,    70392k free,   178920k buffers
Swap:  4198968k total,     2084k used,  4196884k free,  6159328k cached

  PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND
32216 mysql     20   0 2026m 788m 4132 S   41  9.9   1292:40 mysqld
 8104 www-data  20   0  491m 106m  95m S    4  1.3   1:57.62 apache2
27072 www-data  20   0  684m 112m 101m S    4  1.4   2:51.47 apache2
 3391 www-data  20   0  683m 109m  98m S    4  1.4   2:22.29 apache2
16822 www-data  20   0  682m 114m 104m S    4  1.4   3:33.05 apache2
27068 www-data  20   0  555m 113m 102m S    4  1.4   2:53.77 apache2
27118 www-data  20   0  683m 119m 106m S    4  1.5   4:41.48 apache2
 1036 www-data  20   0  685m 112m 100m S    3  1.4   2:27.24 apache2
 3503 www-data  20   0  556m  81m  70m S    3  1.0   0:33.77 apache2
29803 www-data  20   0  682m 111m 101m S    3  1.4   2:47.09 apache2
 1345 www-data  20   0  491m 115m 104m S    3  1.4   4:04.62 apache2
 3001 www-data  20   0  379m 109m  98m S    3  1.4   2:13.36 apache2
[... 75 Apache processes with similar specs, but less CPU]

我的问题是 - 您通常是否看到高负载数字存在任何问题?响应时间有所增加,但只增加了约 30%。负载数字是否在某种程度上包括磁盘活动?您对我在优化期间应该关注什么有什么意见吗?非常感谢!

> iotop
Total DISK READ: 179.70 K/s | Total DISK WRITE: 1735.81 K/s
  TID  PRIO  USER     DISK READ  DISK WRITE  SWAPIN     IO>    COMMAND
16512 be/4 mysql       0.00 B/s   22.94 K/s  ?unavailable?  mysqld
20701 be/4 mysql       0.00 B/s    0.00 B/s  ?unavailable?  mysqld
21556 be/4 mysql       0.00 B/s   22.94 K/s  ?unavailable?  mysqld
28998 be/4 www-data    0.00 B/s    3.82 K/s  ?unavailable?  apache2 -k start
12771 be/4 mysql       0.00 B/s    3.82 K/s  ?unavailable?  mysqld
16824 be/4 www-data    0.00 B/s    3.82 K/s  ?unavailable?  apache2 -k start
 2700 be/4 mysql       0.00 B/s    7.65 K/s  ?unavailable?  mysqld
 3074 be/4 mysql      22.94 K/s    0.00 B/s  ?unavailable?  mysqld
17585 be/4 mysql       0.00 B/s   15.29 K/s  ?unavailable?  mysqld
30723 be/4 mysql       7.65 K/s    0.00 B/s  ?unavailable?  mysqld
29906 be/4 www-data    0.00 B/s    3.82 K/s  ?unavailable?  apache2 -k start
29907 be/4 mysql       0.00 B/s   15.29 K/s  ?unavailable?  mysqld
13547 be/4 www-data    0.00 B/s    3.82 K/s  ?unavailable?  apache2 -k start
 7444 be/4 www-data    0.00 B/s    3.82 K/s  ?unavailable?  apache2 -k start
 1944 be/4 mysql     149.11 K/s    0.00 B/s  ?unavailable?  mysqld
16825 be/4 mysql       0.00 B/s    7.65 K/s  ?unavailable?  mysqld
32223 be/4 mysql       0.00 B/s    3.82 K/s  ?unavailable?  mysqld
 7801 be/4 www-data    0.00 B/s    3.82 K/s  ?unavailable?  apache2 -k start
 5808 be/4 mysql       0.00 B/s   11.47 K/s  ?unavailable?  mysqld
 8104 be/4 www-data    0.00 B/s    3.82 K/s  ?unavailable?  apache2 -k start
18890 be/4 www-data    0.00 B/s    0.00 B/s  ?unavailable?  apache2 -k start
    1 be/4 root        0.00 B/s    0.00 B/s  ?unavailable?  init
    2 be/4 root        0.00 B/s    0.00 B/s  ?unavailable?  [kthreadd]
    3 rt/4 root        0.00 B/s    0.00 B/s  ?unavailable?  [migration/0] 

答案1

在 Linux 上,平均负载包括处于不间断睡眠状态的进程(包括磁盘访问)。但是,您的 top 输出似乎并未显示大量的 IO 等待时间。由于 top 百分比是平均的,因此我可能会以高频率更新(可能是 -d.1 或 -d.5)运行 top,然后查找默认轮询频率中未显示的 IO 等待峰值。

答案2

标准系统指标(负载、CPU、内存等)通常可以很好地指示系统性能如何受限 - 但最终性能值取决于系统处理请求的速度。在实践中,监控这些指标并设置阈值是个好主意,但最终这些指标仅能表明系统的实际性能。

我认为架构可以更好 - 粗略地估计,您描述的服务器的成本可以用来购买 4Gb/双处理器/raid 1+(5/0) 用于数据库,以及至少 2 台低规格机器来运行网络服务器(我猜其中某处也装有 mod_php 或 mod_perl),这样可能会快得多。

当然,这似乎是 mysqld 进程造成了大部分问题 - 但看起来 apache 正在执行相当多的 I/O。您的内存中有多少用于 I/O 缓存?这些 Apache 进程的 RSS 看起来也很高(VIRT 大小也是如此 - 但这可能是高 RSS 的结果),大约是我能找到的最近的 LAMP 盒上值的 10 倍。

我建议遵循这里的常规方法,但首先查看 mysql 的内容:

  1. mysql - 您是否启用了慢查询日志记录?您是否对其进行了分析以确定潜在的数据库优化

  2. 你跑过吗mysqltuner反对你的安装?

  3. HTTP 缓存 - 您是否发送了静态内容的良好缓存信息?禁用条件请求?

  4. 你的 Apache 进程为什么这么大?你真的需要所有这些模块吗?

  5. 您的用户的 RTT 范围是多少?您是否对静态文本/html 内容和脚本输出启用了压缩?

  6. 如果您正在运行 PHP 网站,您是否正在运行操作码缓存(例如 APC、ioncude、Zend)?

高血压

答案3

我个人担心 MySQL 的高 CPU 使用率。不过 top 只是一个快照;如果您看到 mysql 的 CPU 持续固定在 50%,我会执行一些步骤来确定原因。

负载往往会呈指数增长。MySQL 达到 50% 所需的时间将远远超过达到 100% 所需的时间

相关内容