你能帮我找到我服务器的瓶颈吗?在之前我在 SF 上问的问题中,他们告诉我内存没有问题,而且内存充足。
我对 CPU 很感兴趣,也许还有 HD...如果我的用户数增加了,什么能阻止我提供双倍的点击量呢?
我是否需要对 httpd.conf 或 php.ini 进行某种优化?
服务器:16 GB DDR3-RAM ECC HDD RAID1、2x 250 GB SATA II-HDD 7.200 rpm 2 个额外的 80 GB SSD CPU 2x Intel Xeon E5520 四核
软件:php 5.3.6 mysql 5.5 apache 2.2.3 centos 5.5, 2.6.18-238.12.1.el5 #1 SMP 2011 年 5 月 31 日星期二 13:22:04 EDT x86_64 x86_64 x86_64 GNU/Linux
当前非高峰时段顶部:
top - 16:46:17 up 2 days, 14:57, 4 users, load average: 4.22, 3.53, 3.19
Tasks: 305 total, 4 running, 300 sleeping, 0 stopped, 1 zombie
Cpu(s): 19.1%us, 11.1%sy, 0.0%ni, 69.6%id, 0.1%wa, 0.0%hi, 0.1%si, 0.0%st
Mem: 16427200k total, 16280100k used, 147100k free, 3131684k buffers
Swap: 2104496k total, 268k used, 2104228k free, 6221860k cached
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
20157 apache 15 0 387m 67m 4088 S 57.5 0.4 0:21.00 httpd
4106 apache 20 0 389m 67m 5164 R 40.9 0.4 0:59.57 httpd
20156 apache 15 0 357m 35m 5072 S 33.9 0.2 0:24.82 httpd
20148 apache 18 0 357m 35m 5052 R 31.2 0.2 0:25.00 httpd
1759 apache 15 0 391m 69m 5188 S 29.9 0.4 4:37.24 httpd
16194 apache 18 0 358m 36m 5192 S 28.9 0.2 3:44.69 httpd
20147 apache 16 0 357m 35m 5148 S 23.6 0.2 0:26.73 httpd
17329 apache 15 0 370m 48m 5188 S 15.0 0.3 2:13.67 httpd
20140 apache 15 0 359m 37m 5136 S 8.0 0.2 0:20.53 httpd
28473 apache 15 0 358m 36m 5172 S 4.0 0.2 1:20.78 httpd
20158 apache 15 0 357m 35m 5112 S 3.7 0.2 0:22.96 httpd
26922 apache 15 0 357m 36m 5840 R 2.3 0.2 2:22.49 httpd
26925 apache 15 0 358m 36m 5188 S 2.3 0.2 1:28.63 httpd
12642 apache 15 0 357m 35m 5076 S 1.7 0.2 0:40.92 httpd
17963 apache 15 0 357m 35m 5152 S 1.7 0.2 0:27.35 httpd
2687 apache 15 0 358m 36m 5192 S 1.0 0.2 4:28.17 httpd
4419 mysql 15 0 668m 175m 7204 S 1.0 1.1 4:07.99 mysqld
20155 apache 16 0 368m 46m 5144 S 1.0 0.3 0:16.67 httpd
26923 apache 17 0 387m 66m 5168 S 1.0 0.4 1:42.18 httpd
1277 apache 15 0 355m 34m 3988 S 0.7 0.2 0:11.11 httpd
3571 root 16 0 13400 1792 848 S 0.3 0.0 3:03.17 top
32204 root 15 0 90156 3404 2648 S 0.3 0.0 0:00.19 sshd
1 root 15 0 10372 680 572 S 0.0 0.0 0:02.04 init
答案1
我在这份顶部打印输出上看不出任何瓶颈:
- 您有 8 个 CPU 核心(带超线程的有 16 个?),此时有 4 个进程需要 CPU 时间(负载)
- 你有 16GB RAM,但实际上只使用了 6GB
- 没有等待,所以当然没有IO 等待
如果您的网站速度很慢,您可以看看:
- 过期标头(静态内容是否缓存在客户端?)
- 你的数据库负载
- 使用反向代理
答案2
您的输出看起来一切正常。现在页面加载时间是多少?您是否针对服务器运行过 Apache Bench 或其他程序来查看其如何处理负载?您是否有任何 SAR 输出?
您可以轻松地进入 HipHop 和 Flashcache 等高端技术而不会看到任何好处。
如果您怀疑代码本身速度慢得不必要,您可以在开发箱中使用类似 XDebug 的工具来获取分析信息。我过去曾使用这种方法来优化某个非常复杂的经济应用程序的一些核心逻辑中的关键功能。输出结果可能非常大,因此请计划额外 300GB 的空间。WinCacheGrind 等软件将允许您解释结果。