关于页面502的一次排查,页面502排查_PHP教程
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了关于页面502的一次排查,页面502排查_PHP教程,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含3085字,纯文字阅读大概需要5分钟。
内容图文
![关于页面502的一次排查,页面502排查_PHP教程](/upload/InfoBanner/zyjiaocheng/191/080529c31ce4437395313197d528c809.jpg)
关于页面502的一次排查,页面502排查
一、场景: 系统 Deepin 15;php 5.5.33;nginx 1.9.9
二、状况: 简单的页面输出正常(比如 phpinfo();),跑公司的任何一个项目,均502
三、排查
1、查询各种日志,包括 nginx.error.log、php_error.log、php-fpm.error.log,找到php-fpm报错如下
[22-Mar-2016 11:06:32] WARNING: [pool www] child 3665 exited with code 127 after 24.657496 seconds from start
[22-Mar-2016 11:06:32] NOTICE: [pool www] child 3676 started
2、最开始以为是由php-fpm进程数不足引起,便对php-fpm.ini做出如下修改
(这一步和网上很多的解决方案相同,但是没有效果)
pm.max_children = 20
pm.start_servers = 10
pm.min_spare_servers = 10
pm.max_spare_servers = 20
pm.process_idle_timeout = 10s
pm.max_requests = 500
3、经过大量查询,有说是Linux文件句柄数不足
(忘记保留url和改动的地方,经过一番折腾也没有效果)
4、回归 php-fpm.error.log,通过 exited with code 127 查到
(http://www.faqs.org/docs/abs/HTML/exitcodes.html)
5、基于上一步才想起用 strace 来跟踪 php-fpm进程,方法分两种
(其实这一步早该尝试,Rango http://rango.swoole.com/archives/340)
5.1、把php-fpm的进程数限制设置为1,然后直接 strace -p 123456 进行跟踪单个进程
5.2、直接使用下面的命令批量跟踪进程
ps -ef | grep fpm | awk '{print "-p " $2}' | xargs strace
由于出问题的是自己的机子,没有其他人访问,所以使用第二个方法进行跟踪,部分结果如下
[pid 6744] fstat(5, {st_mode=S_IFREG|0644, st_size=5016, ...}) = 0
[pid 6744] mmap(NULL, 5016, PROT_READ, MAP_SHARED, 5, 0) = 0x7f132588f000
[pid 6744] munmap(0x7f132588f000, 5016) = 0
[pid 6744] close(5) = 0
[pid 6744] writev(2, [{"php-fpm: pool www", 17}, {": ", 2}, {"symbol lookup error", 19}, {": ", 2}, {"/usr/local/php/lib/php/extension"..., 71}, {": ", 2}, {"undefined symbol: mmc_queue_pop", 31}, {"", 0}, {"", 0}, {"\n", 1}], 10) = 145
[pid 6744] exit_group(127) = ?
定为到报错信息 undefined symbol: mmc_queue_pop
6、既然是 memcache 扩展报错,便开始折腾,从基本编译命令开始
cd /data/memcache-3.0.8/
/usr/local/php/bin/phpize ./configure --with-php-config=/usr/local/php/bin/php-config
#sudo make clean #但存在多次编译安装时,最好都进行清除 sudo make sudo make install
仔细查找,发现 ./configure 报了个 WARNING
configure: WARNING: You will need re2c 0.13.4 or later if you want to regenerate PHP parsers.
于是开始补齐 re2c,并重新编译 memcache,重启 php-fpm,然而依旧报错
7、最后找到一篇文章,提及“我的memcache原来是从官网下的beta版,重新下载一个stable版本编译安装一下问题就OK了”
而我用的正是beta版的 memcache-3.0.8,于是马上下载stable版的 memcache-2.2.7 重新编译,问题成功解决。
(http://www.phpjiayuan.com/77/433.html)
四、特别申明:此文章所提及的东西,部分来自某开发群的大神们,在此鸣谢!
五、后记:此问题是不是只存在于 php 5.5.33 + memcache-3.0.8(beta),有待后续跟进
http://www.bkjia.com/PHPjc/1112056.htmlwww.bkjia.comtruehttp://www.bkjia.com/PHPjc/1112056.htmlTechArticle关于页面502的一次排查,页面502排查 一、场景:系统Deepin 15;php 5.5.33;nginx 1.9.9 二、状况: 简单的页面输出正常(比如 phpinfo();),跑公...
内容总结
以上是互联网集市为您收集整理的关于页面502的一次排查,页面502排查_PHP教程全部内容,希望文章能够帮你解决关于页面502的一次排查,页面502排查_PHP教程所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。