遇到的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的启动。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。