去评论
dz插件网

网站打开速度变慢,nginx日志报104: Connection reset by peer错误

镖师
2023/03/06 17:03:28
  近日,发现网站访问速度开始变慢,以前能够秒开的,这几天居然要等上好几秒,而手机并没有收到带宽跑满的预警信息,这就有点奇怪了。于是连接到服务器看网站访问日志,发现有很多的这个错误:recv() failed (104: Connection reset by peer) while reading response header from upstream。

  于是网上搜索看是什么原因造成的。104错误表明你在对一个对端socket已经关闭的的连接调用write或send方法,在这种情况下,调用write或send方法后,对端socket便会向本端socket发送一个RESET信号,在此之后如果继续执行write或send操作,就会得到errno为104,错误描述为connection reset by peer。
  看描述就是说用户打开页面后,页面没有加载完成就关闭了,服务器这边就有了104的错误记录。解决方案是nginx配置和php-fpm配置调优。根据网上说的方法调了一下,期待能够解决。
  重启服务器,发现没什么卵用,错误反而越来越多了。页面打开速度也非常慢,但有一个细节引起了我的注意:网站静态页打开速度还是非常快的,动态页就死慢死慢,于是分析得出,最大的问题可能是数据库服务器那边出问题了。
  登录阿里云数据库RDS版,查看性能选项,CPU占用率60%多点,内存占用20%多点,连接数100多点,好像问题也不是很大,也没有到报警的级别。不过,本着“宁可错杀不可错放”的原则,毫不犹豫重启了数据库服务器。
  有点奇怪,这个数据库服务器重启时间相当长,都快花了10分钟时间,我一度怀疑是不是数据库服务器重启过程中挂了。还好重启成功又跑起来了。再打开一下网站动态页面,咦,速度又回来了,又能秒开啦!
  问题排除了,是出在数据库服务器上,但具体是哪里的问题,还是没有彻底搞明白。不过,数据库服务器应该有好几年没有重启了,经过这次问题排查我觉得,数据库服务器还是需要定期重启的,比如1个月重启1次,可以解决很多你不知道的问题。
  记录以上心得,供遇到同样问题的朋友们参考。