redis连接成功操作无反应,nginx 504的另一个原因

遇到的2个问题

问题1: redis-server启动后,redis-client连接成功,set时无反应,查看redis-server进程存在。
问题2: nginx,php-fpm,访问html页面正常,访问php页面每次出现504错误,修改配置文件调大响应时间均无效。

一些尝试

这两个问题不是同一天遇到的,究根结底原因是一样的。奇葩的是nginx之前运行的好好的,突然就504了怎么改也回不来了,修改配置文件,查看错误日志,重启,重装软件,这些尝试后都没有效果。 google有说把php-fpm的listen由ip加端口号改成sock的,试了也没有效果。后来让php-fpm在后台运行,问题就没有了。redis-server也是同样。

反思

  • 运行方式错误
    启动php-fpm和redis-server的时候我是前台运行,然后ctrl-z的,这样进程就处于挂起状态了。php-fpm超时,redis没反应也就不难理解了。让进程在后台可靠运行的几种方法
    ctrl-c 是发送SIGINT信号,终止一个进程;ctrl-z 是发送 SIGSTOP信号,挂起一个进程;ctrl-d 不是发送信号,而是表示一个特殊的二进制值,表示 EOF。可以通过jobs查看当前有多少在后台运行的命令;通过fg命令将后台中的命令调至前台继续运行;也可以用bg将一个在后台暂停的命令,变成继续执行 (在后台执行)。

  • 在ps查看进程状态的时候忽略了进程的状态
    常见的进程状态:
    D 不可中断 Uninterruptible(usually IO)
    R 正在运行,或在队列中的进程
    S 处于休眠状态
    T 停止或被追踪
    Z 僵尸进程
    W 进入内存交换(从内核2.6开始无效)
    X 死掉的进程
    <高优先级
    n低优先级
    s包含子进程
    +位于后台的进程组
    在前台运行php-fpm然后ctrl-z状态是T,而正常运行时看到的是S,有的是Ss,Ss的那个主进程。

  • 更好的启动方式
    编写php-fpm启动脚本/etc/init.d/php-fpm,加入到service中,通过service来管理php-fpm的启动。

    原文作者:jifei
    原文地址: https://segmentfault.com/a/1190000002468754
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞