网站首页 > 技术文章 正文
一 、故障原因:
服务器突然出现大量time_wait(因为大量连接资源被占用后不释放的话,会导致网站正常访问不能响应)。如何应对?
我这边先检查了监控和服务器当前的状态(time_wait连接确实异常):
1、监控
2、登录服务器检查
二、排查思路:
1、猜测是否因为程序打开大量文件句柄,没有关闭导致。(问了研发同事,排查过后没有这种情况)
2、调大当前文件句柄
3、调优sysctl.conf文件
4、检查nginx连接情况
三、解决方法:
1、操作系统文件句柄之前已经调整过。
echo "ulimit -SHn 66536" >>/etc/rc.local
2、调优/etc/sysctl.conf
net.ipv4.tcp_syncookies = 1
net.ipv4.tcp_tw_reuse=1 #让TIME_WAIT状态可以重用,这样即使TIME_WAIT占满了所有端口,也不会拒绝新的请求造成障碍 默认是0
net.ipv4.tcp_tw_recycle=1 #让TIME_WAIT尽快回收 默认0
net.ipv4.tcp_fin_timeout=30
sysctl -p
3、调整nginx 配置文件(最优方法)
upstream http_backend {
server 127.0.0.1:8080;
keepalive 16;
}
server {
...
location /http/ {
proxy_pass http://http_backend;
proxy_http_version 1.1;
proxy_set_header Connection "";
...
}
}
总结:
由于nginx 在反向代理http协议的时候,默认采用的http1.0.
HTTP1.0的特点:不支持长连接(http keep-alive).CLOSE通知后端服务器主动关闭连接。会导致任何一个客户端的请求都在后端服务器上产生了一个TIME-WAIT状态连接
HTTP1.1的特点:支持长连接。
关键配置参数:keep-alive 16; proxy_http_vesion 1.1; proxy_set_header Connection "";
猜你喜欢
- 2024-10-09 Docker数据卷备份恢复、桥接网络设置
- 2024-10-09 头条创作挑战赛 头条创作挑战赛中怎么发文章
- 2024-10-09 「远程漏洞」远程代码执行漏洞的二三事
- 2024-10-09 一个命令,让你的网站支持https cad怎么设置右键重复上一个命令
- 2024-10-09 线上项目CPU,内存都跑满了,怎么调试?
- 2024-10-09 一个搭建博客非常不错的项目 一个搭建博客非常不错的项目叫什么
- 2024-10-09 Tomcat回显技术学习汇总 java backlog
- 2024-10-09 造轮子系列之http协议 以下不是http协议的特点的是
- 2024-10-09 Struts2 漏洞分析系列 - S2-009/003与005的补丁绕过
- 2024-10-09 嵌入式浏览器安全之网易云音乐RCE漏洞分析
你 发表评论:
欢迎- 最近发表
- 标签列表
-
- oraclesql优化 (66)
- 类的加载机制 (75)
- feignclient (62)
- 一致性hash算法 (71)
- dockfile (66)
- 锁机制 (57)
- javaresponse (60)
- 查看hive版本 (59)
- phpworkerman (57)
- spark算子 (58)
- vue双向绑定的原理 (68)
- springbootget请求 (58)
- docker网络三种模式 (67)
- spring控制反转 (71)
- data:image/jpeg (69)
- base64 (69)
- java分页 (64)
- kibanadocker (60)
- qabstracttablemodel (62)
- java生成pdf文件 (69)
- deletelater (62)
- com.aspose.words (58)
- android.mk (62)
- qopengl (73)
- epoch_millis (61)
本文暂时没有评论,来添加一个吧(●'◡'●)