TL的每日学习

TL的每日学习

Connection reset by peer问题记录

2022-03-05
Connection reset by peer问题记录

Connection reset by peer问题记录

今天在将原服务迁移到一台新的服务器时遇到部分请求报 Connection reset by peer 的问题。

问题描述

具体是这样的,nginx,mysql,kafka,Apollo,以及java程序等部署完成后,发现服务部分请求一直请求失败,查看日志发现 Connection reset by peer,大概看了一下这些请求,发现与不报错的区别是这些请求响应普遍较大,于是调整了tomcat,nginx的一些资源大小的配置,包括proxy_buffer_size等,但是仍然报错,仔细思考,原服务器并没有这种情况,新服务器出现,大概率是配置的问题,随去检查了nginx日志,发现有错误记录,有了点眉目了,具体报错信息如下

4654 open() "/usr/local/nginx/proxy_temp/7/07/0000000077" failed (13: Permission denied) while reading upstream

大概意思是,nginx是在写代理 “临时文件” proxy_temp下文件时候出现了权限不足,也就是当资源过大时,nginx会将文件写入临时目录,但是这里出现了权限不足,查看了一下 image.png

解决方案

proxy_temp文件用户为 root权限,而nginx进程worker是nobody,

  1. 将修改proxy_temp目录权限与worker一致 chown -R nobody:nobody /usr/local/nginx/proxy_temp 修改后,查看发现再无报错,问题解决。
  2. 还有一种解决办法就是不让其写入临时文件,提升 proxy_temp_file_write_size 大小,这样避免写入临时文件,也可以进行解决。