php redis set 时 nginx 502 解决

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条评论