php-fpm导致服务器负载飙涨?

分类:Linux,问题集 | 作者:凹凸曼 | 发表于2011/12/29 5条评论

最近的看网站打开很慢经常挂掉。。。

访问量也没有增加,之前都是好好的

linux系统负载严重超标。。。一分钟居然到300多。。。

通过查看系统日记没有什么问题,最后发现php-fpm存在以下二点错误。。。

第一种错误

Dec 27 09:37:47.112251 [WARNING] fpm_stdio_child_said(), line 167: child 11503 (pool default) said into stderr: "Dec 27 09:37:47.111260 [ERROR] fpm_unix_init_child(), line 168: setrlimit(RLIMIT_NOFILE) failed: Invalid argument (22)"
Dec 27 09:37:47.112285 [WARNING] fpm_stdio_child_said(), line 167: child 11502 (pool default) said into stderr: "Dec 27 09:37:47.109294 [ERROR] fpm_unix_init_child(), line 168: setrlimit(RLIMIT_NOFILE) failed: Invalid argument (22)"
Dec 27 09:37:47.112301 [WARNING] fpm_stdio_child_said(), line 167: child 11501 (pool default) said into stderr: "Dec 27 09:37:47.108313 [ERROR] fpm_unix_init_child(), line 168: setrlimit(RLIMIT_NOFILE) failed: Invalid argument (22)"

 问题及分析:使用ulimit -n 查看文件打开连接数,在查看一下php-fpm 配置文件里 rlimit_files的值 ,

              发觉php-fpm配置文件打开连接数与系统文件打开连接数不一致 造成的

解决办法: ulimit -Shn 102400 

                接着修改php-fpm配置文件中的  

              <value name=”rlimit_files”>102400 </value>
             然后重启php-fpm服务,问题得到解决
             但是负载还是降不下去。。。接着下面的。。。

 

第二中错误

Dec 27 09:38:07.213414 [WARNING] fpm_request_check_timed_out(), line 146: child 11496, script '/data/www/xxx.xxx.com/member.php' (pool default) executing too slow (3.104162 sec), logging
Dec 27 09:38:07.213570 [NOTICE] fpm_got_signal(), line 48: received SIGCHLD
Dec 27 09:38:07.213675 [NOTICE] fpm_children_bury(), line 194: child 11496 stopped for tracing
Dec 27 09:38:07.213684 [NOTICE] fpm_php_trace(), line 139: about to trace 11496
Dec 27 09:38:07.213818 [ERROR] fpm_trace_get_long(), line 78: ptrace(PEEKDATA) failed: Input/output error (5)
Dec 27 09:38:07.213853 [NOTICE] fpm_php_trace(), line 167: finished trace of 11496

 

问题:脚本执行超时,出现Input/output error  

             网站打开很慢,开始觉得是不是程序的问题,但是觉得这个系统是康盛的,理论上不会执行那么久,所以暂时就排除,又怀疑的磁盘,检查了,磁盘运行健康,具体的详细检测,就没法,还有一种可能调用第三放接口,不过通过目前的测试一切正常;接着就是数据表被破坏,检查了一下,也正常;

              后来又 想了一下,转向memcached 看这个服务看有没有问题,因为系统用了缓存机制,我通过测试查看memcached 缓存数据居然连接不去,重启服务又连上去了,一会儿有断开了。。。查看memcached的连接数 -c 设置 1024  后来做了调整了65535  memcached就正常了,目前负载降下来了,具体负载问题,还要观察几天,看是不是此问题造成的php-fpm压力过大,最终负载飙涨,形成连锁反应!

参考文献:http://b.formyz.org/2011/1124/53.html

本文出自 “凹凸曼” 博客,请务必保留此出处 http://www.apoyl.com/?p=1242

日志信息 »

该日志于2011-12-29 16:36由 凹凸曼 发表在Linux, 问题集分类下, 评论已关闭。

目前盖楼
  1. cc说道:

    你原来是什么版本的PHP?后来升级到多少呢?

  2. 新浪微博rss说道:

    我的也在报错,主要有
    NOTICE: child 16924 stopped for tracing
    ERROR: failed to ptrace(PEEKDATA) pid 16814: Input/output error (5)
    NOTICE: finished trace of 16814
    NOTICE: about to trace 16821

  3. 蕃茄说道:

    错别字挺多的,I/O问题你也没有说怎么解决的呀?

抱歉,评论被关闭

« »