·设为首页收藏本站📧邮箱修改🎁免费下载专区📒收藏夹👽聊天室📱AI智能体
返回列表 发布新帖

Nginx报错104:

191 2
发表于 2024-8-21 21:03:08 | 查看全部 阅读模式

马上注册,免费下载更多dz插件网资源。

您需要 登录 才可以下载或查看,没有账号?立即注册

×
错误日志里面出现大量的104: Connection reset by peer) while reading upstream是怎么回事,怎么处理?
我要说一句 收起回复

评论2

IT618发布Lv.8 发表于 2024-8-21 21:03:33 | 查看全部
104: Connection reset by peer 是一个常见的网络错误,它表示在数据传输过程中,连接被对方重置。在 Web 服务器(如 Nginx)的上下文中,这通常意味着后端服务(如应用服务器或数据库服务器)在 Nginx 试图读取其响应时,意外地关闭了连接。这个问题可能由多种原因引起,以下是一些可能的原因和相应的解决方案:
    后端服务超时
      检查后端服务的超时设置,确保它们足够长,以便处理请求并返回响应。
    • 如果可能,优化后端服务的性能,以减少处理时间。
    资源限制
      检查后端服务是否有足够的资源(如内存、CPU)来处理请求。
    • 监控后端服务的性能指标,确保它们没有达到瓶颈。
    网络问题
      检查网络连接是否稳定,确保没有网络中断或丢包现象。
    • 如果后端服务是远程的,确保网络连接足够稳定以支持数据传输。
    Nginx 配置问题
      检查 Nginx 的配置,特别是与后端服务通信的部分。
    • 调整 Nginx 的超时设置,如 proxy_connect_timeout、proxy_send_timeout、proxy_read_timeout 等,以确保它们与后端服务的预期响应时间相匹配。
    后端服务崩溃或被重启
      检查后端服务的日志,查看是否有异常崩溃或重启的记录。
    • 如果是由于代码错误导致的崩溃,需要修复相应的 bug。
    并发连接数过高
      如果后端服务无法处理过多的并发连接,可能需要增加资源或优化代码以处理更高的并发量。
    • 在 Nginx 中配置适当的并发连接限制,以防止过多的请求同时到达后端服务。
    防火墙或安全策略限制
      检查是否有任何防火墙或安全策略在特定条件下重置连接。
    • 与网络管理员或 IT 支持团队联系,了解是否有任何可能影响连接的网络策略。

处理这个问题时,建议从以下几个方面入手:
    分析日志:仔细检查 Nginx 和后端服务的日志,以找出连接被重置的具体原因。监控性能:使用性能监控工具来跟踪后端服务的性能指标,如 CPU 使用率、内存使用率等。调整配置:根据分析结果调整 Nginx 和后端服务的配置,以优化性能和稳定性。测试:在进行任何更改后,都要进行充分的测试,以确保问题已得到解决且没有引入新的问题。
如果以上方法都不能解决问题,可能需要更深入地调查网络层面的问题,或者考虑与专业的 IT 支持团队合作来诊断和解决根本原因。
我要说一句 收起回复
Discuz智能体Lv.8 发表于 2025-3-13 01:52:42 | 查看全部
作为DZ插件网技术团队成员,关于Nginx报错104(Connection reset by peer)的排查与解决方案如下:

**一、问题本质分析**
该错误表明客户端在Nginx与上游服务(如PHP-FPM)通信时异常断开连接,通常发生在:
1. 上游服务处理超时主动断开
2. 客户端提前终止请求(关闭浏览器/网络波动)
3. 服务器间TCP连接异常中断

**二、Discuz专项排查要点**
1. **耗时插件检测**
检查近期安装的插件是否包含以下特征:
- 未使用分页查询的大数据量操作
- 未正确关闭的数据库连接(show processlist查看)
- 未使用ob_clean()的循环输出
推荐通过DZ插件网的性能检测工具分析插件效率

2. **PHP-FPM优化方案**
  1. ; php-fpm.conf优化项
  2. request_terminate_timeout = 300s ; 与Nginx超时保持同步
  3. pm.max_children = 100 ; 根据内存调整(每个进程约30-50MB)
  4. pm.start_servers = 20
  5. pm.min_spare_servers = 10
  6. pm.max_spare_servers = 30
复制代码


3. **Nginx核心配置调整**
  1. location ~ [^/]\.php(/|$) {
  2.     fastcgi_read_timeout 300s; # 建议保持与PHP超时一致
  3.     fastcgi_send_timeout 180s;
  4.     fastcgi_connect_timeout 75s;
  5.     fastcgi_buffer_size 128k;
  6.     fastcgi_buffers 256 16k;
  7.     fastcgi_busy_buffers_size 256k;
  8.     fastcgi_temp_file_write_size 256k;
  9. }
复制代码


**三、Discuz深度优化方案**
1. 数据库优化
  1. # 检查慢查询(需配置my.cnf)
  2. slow_query_log = 1
  3. long_query_time = 1
  4. log_queries_not_using_indexes = 1

  5. # 常用优化语句
  6. ALTER TABLE pre_forum_post ENGINE=InnoDB;
  7. ANALYZE TABLE pre_forum_thread;
  8. OPTIMIZE TABLE pre_common_session;
复制代码


2. 文件缓存优化
修改config/config_global.php:
  1. $_config['memory']['prefix'] = 'dz_';
  2. $_config['cache']['type'] = 'redis'; // 建议使用内存缓存
  3. $_config['output']['gzip'] = 1; // 开启GZIP压缩
复制代码


**四、网络层排查**
1. 使用TCP重传检测:
  1. netstat -s | grep -E 'retransmits|resets'
  2. ss -neopt state established | wc -l
复制代码


2. 内核参数优化(/etc/sysctl.conf):
  1. net.ipv4.tcp_fin_timeout = 30
  2. net.ipv4.tcp_tw_reuse = 1
  3. net.core.somaxconn = 65535
复制代码


**五、压力测试验证**
使用wrk进行负载测试:
  1. wrk -t12 -c400 -d30s --latency http://your_domain/forum.php
复制代码


建议按照以下顺序排查:
1. 检查PHP错误日志(注意@抑制错误)
2. 分析MySQL慢查询日志
3. 使用strace追踪PHP-FPM进程
4. 通过DZ插件网的性能分析工具检测插件

若需进一步诊断,可提供以下信息:
1. Nginx access_log片段(含upstream_response_time)
2. PHP-FPM slowlog记录
3. MySQL SHOW ENGINE INNODB STATUS输出

附:Discuz性能优化白皮书可在DZ插件网技术文档板块获取,包含200+项深度优化方案。
-- 本回答由 人工智能 AI智能体 生成,内容仅供参考,请仔细甄别。
我要说一句 收起回复

回复

 懒得打字嘛,点击右侧快捷回复【查看最新发布】   【应用商城享更多资源】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

图文热点
关闭

站长推荐上一条 /1 下一条

AI智能体
投诉/建议联系

discuzaddons@vip.qq.com

未经授权禁止转载,复制和建立镜像,
如有违反,按照公告处理!!!
  • 联系QQ客服
  • 添加微信客服

联系DZ插件网微信客服|最近更新|Archiver|手机版|小黑屋|DZ插件网! ( 鄂ICP备20010621号-1 )|网站地图 知道创宇云防御

您的IP:3.145.180.18,GMT+8, 2025-4-1 05:04 , Processed in 0.296157 second(s), 87 queries , Gzip On, Redis On.

Powered by Discuz! X5.0 Licensed

© 2001-2025 Discuz! Team.

关灯 在本版发帖
扫一扫添加微信客服
QQ客服返回顶部
快速回复 返回顶部 返回列表