nginx recv() failed (104: Connection reset by peer) while reading response header from upstream解决方法

摘要:
然后修改nginx。conf,例如worker_Processes等。1检查nginx错误日志错误日志获取connect()tounix:valuename=“max_children”>128<TCP:32iZ238qupob7Z内核:TCP:cat/proc/sys/net/ipv4/TCP_max_tw_桶<预>

首先说下 先看 按照ab 每秒请求的结果 看看 都有每秒能请求几个 如果并发量超出你请求的个数 会这样 所以一般图片和代码服务器最好分开 还有看看io瓶ding 和有没有延迟的PHP代码执行

0 先修改内核参数

<pre>
1、调整同时打开文件数量

ulimit -n 20480
2、TCP最大连接数(somaxconn)

echo 10000 > /proc/sys/net/core/somaxconn
3、TCP连接立即回收、回用(recycle、reuse)

echo 1 > /proc/sys/net/ipv4/tcp_tw_reuse
echo 1 > /proc/sys/net/ipv4/tcp_tw_recycle
4、不做TCP洪水抵御

echo 0 > /proc/sys/net/ipv4/tcp_syncookies
</pre>
也可以直接使用优化后的配置,在/etc/sysctl.conf中加入:
<pre>
net.core.somaxconn = 20480
net.core.rmem_default = 262144
net.core.wmem_default = 262144
net.core.rmem_max = 16777216
net.core.wmem_max = 16777216
net.ipv4.tcp_rmem = 4096 4096 16777216
net.ipv4.tcp_wmem = 4096 4096 16777216
net.ipv4.tcp_mem = 786432 2097152 3145728
net.ipv4.tcp_max_syn_backlog = 16384
net.core.netdev_max_backlog = 20000
net.ipv4.tcp_fin_timeout = 15
net.ipv4.tcp_max_syn_backlog = 16384
net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_tw_recycle = 1
net.ipv4.tcp_max_orphans = 131072
net.ipv4.tcp_syncookies = 0
</pre>


然后修改nginx.conf 比如worker_processes等等


1 查看nginx错误日记 error.log日志得到connect() to unix:/tmp/php-cgi.sock failed xxxxx........
如果是因为突然的网站访问量大(这里说明这个是说tcp过高,并不能说明cpu过高和内存使用率过高,带宽过高)导致那么一般是因为子进程数不足:
到php-fpm.conf找到max_children也就是子进程最大数改为:<value name="max_children">128</value>


2

<pre>
tail -n 10 /var/log/messages


Dec 1 15:33:31 iZ238qupob7Z kernel: TCP: time wait bucket table overflow
Dec 1 15:33:31 iZ238qupob7Z kernel: TCP: time wait bucket table overflow
Dec 1 15:33:31 iZ238qupob7Z kernel: TCP: time wait bucket table overflow
Dec 1 15:33:31 iZ238qupob7Z kernel: TCP: time wait bucket table overflow
Dec 1 15:33:31 iZ238qupob7Z kernel: TCP: time wait bucket table overflow
Dec 1 15:33:31 iZ238qupob7Z kernel: TCP: time wait bucket table overflow
Dec 1 15:33:31 iZ238qupob7Z kernel: TCP: time wait bucket table overflow
Dec 1 15:33:32 iZ238qupob7Z kernel: TCP: time wait bucket table overflow
Dec 1 15:33:32 iZ238qupob7Z kernel: TCP: time wait bucket table overflow
Dec 1 15:33:32 iZ238qupob7Z kernel: TCP: time wait bucket table overflow
</pre>
time wait bucket table overflow 这种代表 服务器的TCP连接数,超出了内核定义最大数

查看当前的内核定义最大数
<pre>
cat /proc/sys/net/ipv4/tcp_max_tw_buckets
</pre>


<pre>
解决方法:
修改内核参数 /proc/sys/net/ipv4/tcp_max_tw_buckets
# echo 30000 > /proc/sys/net/ipv4/tcp_max_tw_buckets
写入/etc/sysctl.conf使之永久生效
echo 'net.ipv4.tcp_max_tw_buckets = 30000' >> /etc/sysctl.conf && sysctl -p
</pre>


3 当然也有可能PHP代码 消耗太多CPU 执行时间过长 将采取如下方法 看看里面的错误连接的链接是不是请求时间过长

nginx recv() failed (104: Connection reset by peer) while reading response header from upstream解决方法 除了升级服务器配置还有以下方法可以参考下


request_terminate_timeout = 0//这样 就不怕了 之前是PHP执行时间因为超过了设置的值所以报错 这个时候需要重启php-fpm 或者等他自己重启时间相当漫长
还有另外设置下PHP限制执行时间 设置2秒即可 超过2秒就直接报错让用户不要继续访问了 就不影响服务器性能了
<pre>
max_execution_time = 10;
</pre>

比如像导出excel耗时的 在代码中加
<pre>
set_time_limit(0);
</pre>


ps:可以开启慢查询日记 PHP执行超过1秒的记录下
<pre>
slowlog = /data/logs/php-fpm.log.slow
request_slowlog_timeout = 6
</pre>


4 如果以上都不行 图片都用CDN 或者就直接再买个服务器负载均衡就好了 买1个星期的 估计能抗几下


复制ecs实例的方法
1、系统盘
通过创建自定义镜像的方式,创建一个自定义镜像,然后使用这个自定义镜像创建ECS即可。
http://help.aliyun.com/knowledge_detail.htm?spm=5176.7114037.1996646101.1.uamHK9&categoryId=8314847&knowledgeId=5974456&pos=1


2、数据盘
对已经配置完成的数据盘进行打快照。
然后在购买或者升级页面,添加磁盘的地方点:“用快照创建磁盘”,选择你要的快照即可。

免责声明:文章转载自《nginx recv() failed (104: Connection reset by peer) while reading response header from upstream解决方法》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇layui日期选择框 自定义获取周区间npm使用过程中的一些错误解决办法及npm常用命令和技巧下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

MyBatis-使用XML或注解的简单实例

一.导入jar包 <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.11</ver...

CentOS7安装桌面环境 并支持远程访问

最近要在CentOS环境下装IDE,之前的CentOS都是做服务器用,都是最小安装,没有桌面环境,因此需要……搞快点! 1、安装所需软件 yum install -y epel-release yum install -y lightdm yum groups mark convert "X Window system" yum groups mark...

【前端】加载的图片太多或者太大优化方案(上)

摘要 web性能的终极目标是减少资源到客户端的延迟,但是我们在HTTP1.0/HTTP1.1协议中经常会遇到加载的图片太多或者太大导致页面加载完成慢的问题:图片太多导致向服务器请求的次数太多,图片太大导致每次请求的时间过长. 本篇将针对图片太多或者太大总结几种优化方案. 一.当图片太多时 方案一:将图片服务和应用服务分离(从架构师的角度思考) 对于这个方案...

vue 点击展开显示更多 点击收起部分隐藏

1 <!DOCTYPE html> 2 <html lang="en"> 3 <head> 4 <meta charset="UTF-8"> 5 <title>Document</title> 6 </head> 7 <style ty...

使用WEBAPI连接到MYSQL配置流程

1.需要引用的文档 MySql.Data.dllMySql.Data.Entity.EF6.dll 1.1注意事项: 1.11 MySql.Data.Entity依赖于 MySql.Data,需要保证这两个的版本相同。 1.12 EF版本必须高于6.0。 2.添加System.data配置 <system.data> <DbProvide...

【新特性速递】新增单标签页模式,界面更加清爽!

下个版本(v5.6.0),我们将对官网示例的框架进行调整,在现有默认【多标签页】基础上新增【单标签页】模式,使得界面更加清爽! 设置项 设置项隐藏在右侧顶部的菜单中,如下所示: 单标签页的优点 对比下 Pure Black 主题下多标签页和单标签页的显示效果差异: 多标签页: 单标签页: 可以看出,【单标签页】相比【多标签页】,有如下优点: 1. 去...