热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

关于页面502的一次排查,页面502排查_PHP教程

关于页面502的一次排查,页面502排查_PHP教程:关于页面502的一次排查,页面502排查一、场景:系统Deepin15;php5.5.33;nginx1.9.9二、状况:简单

关于页面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),有待后续跟进

www.bkjia.comtruehttp://www.bkjia.com/PHPjc/1112056.htmlTechArticle关于页面502的一次排查,页面502排查 一、场景:系统Deepin 15;php 5.5.33;nginx 1.9.9 二、状况: 简单的页面输出正常(比如 phpinfo();),跑公...


推荐阅读
  • 在重复造轮子的情况下用ProxyServlet反向代理来减少工作量
    像不少公司内部不同团队都会自己研发自己工具产品,当各个产品逐渐成熟,到达了一定的发展瓶颈,同时每个产品都有着自己的入口,用户 ... [详细]
  • 本文介绍了通过ABAP开发往外网发邮件的需求,并提供了配置和代码整理的资料。其中包括了配置SAP邮件服务器的步骤和ABAP写发送邮件代码的过程。通过RZ10配置参数和icm/server_port_1的设定,可以实现向Sap User和外部邮件发送邮件的功能。希望对需要的开发人员有帮助。摘要长度:184字。 ... [详细]
  • 本文介绍了在Linux下安装和配置Kafka的方法,包括安装JDK、下载和解压Kafka、配置Kafka的参数,以及配置Kafka的日志目录、服务器IP和日志存放路径等。同时还提供了单机配置部署的方法和zookeeper地址和端口的配置。通过实操成功的案例,帮助读者快速完成Kafka的安装和配置。 ... [详细]
  • 解决nginx启动报错epoll_wait() reported that client prematurely closed connection的方法
    本文介绍了解决nginx启动报错epoll_wait() reported that client prematurely closed connection的方法,包括检查location配置是否正确、pass_proxy是否需要加“/”等。同时,还介绍了修改nginx的error.log日志级别为debug,以便查看详细日志信息。 ... [详细]
  • mac php错误日志配置方法及错误级别修改
    本文介绍了在mac环境下配置php错误日志的方法,包括修改php.ini文件和httpd.conf文件的操作步骤。同时还介绍了如何修改错误级别,以及相应的错误级别参考链接。 ... [详细]
  • 如何实现织梦DedeCms全站伪静态
    本文介绍了如何通过修改织梦DedeCms源代码来实现全站伪静态,以提高管理和SEO效果。全站伪静态可以避免重复URL的问题,同时通过使用mod_rewrite伪静态模块和.htaccess正则表达式,可以更好地适应搜索引擎的需求。文章还提到了一些相关的技术和工具,如Ubuntu、qt编程、tomcat端口、爬虫、php request根目录等。 ... [详细]
  • Skywalking系列博客1安装单机版 Skywalking的快速安装方法
    本文介绍了如何快速安装单机版的Skywalking,包括下载、环境需求和端口检查等步骤。同时提供了百度盘下载地址和查询端口是否被占用的命令。 ... [详细]
  • Centos7.6安装Gitlab教程及注意事项
    本文介绍了在Centos7.6系统下安装Gitlab的详细教程,并提供了一些注意事项。教程包括查看系统版本、安装必要的软件包、配置防火墙等步骤。同时,还强调了使用阿里云服务器时的特殊配置需求,以及建议至少4GB的可用RAM来运行GitLab。 ... [详细]
  • Windows下配置PHP5.6的方法及注意事项
    本文介绍了在Windows系统下配置PHP5.6的步骤及注意事项,包括下载PHP5.6、解压并配置IIS、添加模块映射、测试等。同时提供了一些常见问题的解决方法,如下载缺失的msvcr110.dll文件等。通过本文的指导,读者可以轻松地在Windows系统下配置PHP5.6,并解决一些常见的配置问题。 ... [详细]
  • t-io 2.0.0发布-法网天眼第一版的回顾和更新说明
    本文回顾了t-io 1.x版本的工程结构和性能数据,并介绍了t-io在码云上的成绩和用户反馈。同时,还提到了@openSeLi同学发布的t-io 30W长连接并发压力测试报告。最后,详细介绍了t-io 2.0.0版本的更新内容,包括更简洁的使用方式和内置的httpsession功能。 ... [详细]
  • 图解redis的持久化存储机制RDB和AOF的原理和优缺点
    本文通过图解的方式介绍了redis的持久化存储机制RDB和AOF的原理和优缺点。RDB是将redis内存中的数据保存为快照文件,恢复速度较快但不支持拉链式快照。AOF是将操作日志保存到磁盘,实时存储数据但恢复速度较慢。文章详细分析了两种机制的优缺点,帮助读者更好地理解redis的持久化存储策略。 ... [详细]
  • http:my.oschina.netleejun2005blog136820刚看到群里又有同学在说HTTP协议下的Get请求参数长度是有大小限制的,最大不能超过XX ... [详细]
  • 深入理解Kafka服务端请求队列中请求的处理
    本文深入分析了Kafka服务端请求队列中请求的处理过程,详细介绍了请求的封装和放入请求队列的过程,以及处理请求的线程池的创建和容量设置。通过场景分析、图示说明和源码分析,帮助读者更好地理解Kafka服务端的工作原理。 ... [详细]
  • 本文介绍了django中视图函数的使用方法,包括如何接收Web请求并返回Web响应,以及如何处理GET请求和POST请求。同时还介绍了urls.py和views.py文件的配置方式。 ... [详细]
  • 本文讨论了如何在codeigniter中识别来自angularjs的请求,并提供了两种方法的代码示例。作者尝试了$this->input->is_ajax_request()和自定义函数is_ajax(),但都没有成功。最后,作者展示了一个ajax请求的示例代码。 ... [详细]
author-avatar
easonash_949
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有