我们在服务器上有一个“Load average”的奇怪问题,我们试图解决这个问题,但没有运气,现在我们试图寻求帮助。无法解释的负载平均值CentOS Linux php-fpm
我们有一个VPS CentOS Linux 2.6.18-274.18.1.el5 x86_64 GNU/Linux,带有2个物理内核,2GB RAM,这台服务器只运行php-fpm 5.3.10,没有其他服务运行。
php通过TCP使用Redis(每秒约1000次请求),Redis服务器可以很容易地每秒发出60000次请求,并且LA为0.01。
症状:LA从16
随机尖峰40没有明显的原因。尽管如此,CPU使用率约为40%,系统和内存使用量的约10%不到一半。
Cpu0 : 36.7%us, 11.9%sy, 0.0%ni, 44.2%id, 0.0%wa, 0.0%hi, 7.2%si, 0.0%st
Cpu1 : 39.8%us, 10.0%sy, 0.0%ni, 26.2%id, 0.0%wa, 10.0%hi, 14.0%si, 0.0%st
Mem: 2058776k total, 1241500k used, 817276k free, 160172k buffers
Swap: 1048568k total, 0k used, 1048568k free, 876888k cached
峰值与网络活动或定时任务无关。 每秒对php的请求数量是〜70。
PHP缓慢的日志告诉我们,很多脚本在5秒之后仍然不能运行! PHP的慢速日志(5S):
[pool www] pid 7016
script_filename = /var/www/myapp/index.php
[0x000000001820d230] session_start() /var/www/myapp/index.php:10
10的index.php第一线:位于存储器分区
<?php
$starttime=microtime(TRUE);
srand();
ob_start();
error_reporting(E_ALL);
ini_set('display_errors',1);
session_start();
会话...与IO没有问题。
配置PHP-FPM:
listen.backlog = 18192
pm = dynamic
pm.max_children = 256
pm.start_servers = 48
pm.min_spare_servers = 16
pm.max_spare_servers = 64
pm.max_requests = 512
请如果某些人有任何建议,如何降低LA和延迟。
脚本通常执行大约需要100毫秒最大,但在LA的扣球脚本的执行采取5秒甚至更多。 -rwxrwxrwx 1 root root 27M 3月1日05:11 /var/log/php-fpm/www-slow.log 就像我们看到缓慢的低点是一周27Mb,那不是正常情况。 – DooVDe 2012-03-01 17:55:05
所以你的问题与平均负载没有任何关系,它是“为什么这个脚本突然需要很长时间来执行”。你做了什么来试图调试这个问题? – Perry 2012-03-01 17:57:42
我们在开发克隆服务器上尝试了strace,apd,我们从php-fpm切换到了Apache,我们调试了脚本并没有发现任何东西。我想说的是,我不知道在哪里看。 所有缓慢的日志都以socket_write,socket_read或session_start结束。 TCP/IP配置有问题吗? – DooVDe 2012-03-01 18:11:20