一、间歇性404问题的解决

上周开始,手机就频繁收到报警通知,一会儿提示博客异常HTTP返回状态码为404,一会儿又提示恢复正常HTTP返回状态码为200,简直烦不胜烦。

当时工作很忙而且判断这个问题并不容易解决,索性就没花时间去研究,等到这周双休再拿出大块时间来研究解决下。今天早上起来后,Jefferson终于准备看下这个问题。

1. 重现404问题,根据log排查原因

首先Jefferson用带参数?debug的url访问自己博客首页,果然提示404。然后到Nginx log找其相应记录,可以看到access.log和error.log均有这次访问的记录。并且error.log里有两条提示,显示:

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

open() "/usr/share/nginx/www/50x.html" failed (2: No such file or directory)

Google了一下第一条,得知可能的报错原因是php-fpm可能挂掉了,找了下php-fpm的error.log看下果然非常多的启动又退出的记录,大致如下:

[pool www] child 7674 started

[pool www] child 7683 exited with code 127 after 61.433242 seconds from start

看起来似乎是进程启动后很快就挂掉了。

既然挂掉了,那我重启试下吧:

service php-fpm restart

重启后真的可以正常访问了。观察监控的可用率数据,似乎也起来了(大概十点一刻重启的)。

2.为什么是404

根据之前经验,php-fpm挂掉,浏览器访问时看到的应该是502 Bad Gateway之类的错误,但这次为什么是404呢?回到上边nginx error.log里的第二条,即:

open() "/usr/share/nginx/www/50x.html" failed (2: No such file or directory)

看起来是想要访问/usr/share/nginx/www/50x.html,但是这个文件不存在,直接切换到/usr/share/nginx/ 看下,确实没有www这个目录,但是有html这个目录,且html这个目录下有50x.html这个文件。

原来是Nginx配置里写50x的目录时,路径写得不对。到/etc/nginx/conf.d 里找对应网站配置文件,将5xx文件的路径修改为正确的/usr/share/nginx/html

到这里就已经很清楚了,基本的逻辑为:php-fpm挂掉------->5xx报错------->5xx.html文件------->找不到文件------>404。

3.php-fpm挂掉的原因

php-fpm为什么挂掉,这就不是Jefferson直接Google可以找到原因的啦。不过从监控的数据上看,应该是跟6.27晚上我更新了一大批安装包有关。

二、文章评论按时间降序排列

难得,冷落多时的博客近期又收到了留言,Jefferson还是十分欣喜的。不过,也让我发现一个不方便之处。博客留言默认是按照时间升序排列的。这就意味着最早评论的用户,将永远处于文章底部留言的第一条。

那么怎么可以让评论按时间降序来排呢,也就是说最新的评论出现在最上边。简单Google了一下发现一个挺优雅的方法,就是直接在WordPress后台设置。设置项在Settings - Discussion - Other comment settings ,最后一条由older改为newer,滑到页面最底部Save changes保存即可。

发表评论

电子邮件地址不会被公开。

Post Navigation