2012-03-01 83 views
1

我们在服务器上有一个“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和延迟。

回答

1

负载平均值是衡量您在任何给定时间运行队列中的进程数量。这本身并不是测量机器过载的标准,并且它可能不会成为您的负载平均值有时会出现问题的一个问题 - 这并不一定意味着机器过载。

没有关于为什么您认为负载平均值成为问题以及机器遇到的负载情况的类型的附加信息,很难更详细地回答。

+0

脚本通常执行大约需要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

+0

所以你的问题与平均负载没有任何关系,它是“为什么这个脚本突然需要很长时间来执行”。你做了什么来试图调试这个问题? – Perry 2012-03-01 17:57:42

+0

我们在开发克隆服务器上尝试了strace,apd,我们从php-fpm切换到了Apache,我们调试了脚本并没有发现任何东西。我想说的是,我不知道在哪里看。 所有缓慢的日志都以socket_write,socket_read或session_start结束。 TCP/IP配置有问题吗? – DooVDe 2012-03-01 18:11:20