php redis set 时 nginx 502 解决办法

php redis set 时 nginx 502 解决办法

蓝科迪梦
2022-11-24 / 0 评论 / 205 阅读 / 正在检测是否收录...
温馨提示:
本文最后更新于2022年11月24日,已超过746天没有更新,若内容或图片失效,请留言反馈。
nginx报错提示:

*963623 recv() failed (104: Connection reset by peer) while reading response header from upstream ..



php-fpm.log报错提示:

WARNING: [pool www] child 10559 exited on signal 11 (SIGSEGV) after 0.504455 seconds from start ..



解决:(服务器出现502错误 可能进程过多导致)

修改 php-fpm.conf    pm.max_children  设置的尽可能高一些

pm = dynamic

pm.max_children = 60   

pm.start_servers = 30

pm.min_spare_servers = 30

pm.max_spare_servers = 60





重启php-fpm即可 





==============================



以上是百度查到的实测之后发现没有用,服务器实际并发也并不高,怀疑是redis.so版本问题,于是到redis官方下载替换了php对应最高版本的redis扩展,测试后仍然不行

redis扩展下载:

https://windows.php.net/downloads/pecl/releases/redis/5.3.1/


最终解决方法,将封装的redis操作类方法更换到官方最新版本提供的操作函数,恢复!



目前怀疑是set时可能会存在空参数,而框架自带的封装操作类对空值做了一些无法描述的行为。。导致redis进程异常阻塞,php-fpm内存耗尽重启,导致nginx服务被挂起,然后产生的502问题
0

评论

博主关闭了所有页面的评论