tcp 短连接 优化
来源:互联网 发布:淘宝swisse官方旗舰店 编辑:程序博客网 时间:2024/05/16 15:14
背景
在做dispatchsvr发送http请求到业务server的时候,client端设置了1s的timeout,结果当网络出现问题的时候,client出现了大量timeout,并且关闭连接,这时候发现client的cpu和内存有大量增长。
原理
TCP结束的过程如下:
Server Client
-------------- FIN --------------> server: fin_wait_1
<------------- ACK --------------- client: close_wait server:fin_wait_2
<------------- FIN --------------- client发出fin之后就关闭
-------------- ACK -------------> server发出ack后进入time_wait状态
Time_Wait的默认时间是2倍的MLS,就是240秒钟。MLS是TCP片在网上的最长存活时间。
TIME_Wait的主要作用是保证关闭的TCP端口不立即被使用。因为当网络存在延迟时,可能当某个端口被关闭后,网络中还有一些重传的TCP片在发向这个端口,如果这个端口立即建立新的TCP连接,则可能会有影响。所以使用2倍的MSL时间来限制这个端口立即被使用。
解决方法
修改7层负载所在机器,/etc/sysctl.conf
net.ipv4.tcp_syncookies = 1
net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_tw_recycle = 1
net.ipv4.tcp_timestamps = 1
net.ipv4.tcp_fin_timeout = 30
保存后sysctl -p生效
- tcp 短连接 优化
- TCP短连接
- TCP短连接模式
- TCP长连接短连接
- TCP长连接短连接
- TCP长连接、短连接
- TCP长连接,短连接
- tcp短连接场长连接
- TCP短连接长连接
- TCP长连接、短连接
- TCP 长连接 短连接
- tcp长连接tcp短连接
- C# TCP/IP短连接
- TCP短连接与长连接
- TCP短连接与长连接
- TCP短连接与长连接
- TCP短连接与长连接
- TCP长连接VS短连接
- mysql密码正确但无法登陆
- Java中的方法重载和重写(覆盖)
- 注册验证码业务
- iOS - 静态与动态内存分析
- Android事件分发机制(一) Touch 事件的分发和消费机制
- tcp 短连接 优化
- Python string reverse
- dubbo、zookeeper,springMVC的整合
- Firebug入门指南
- Elasticsearch源码分析二--调用Lucene查询接口之常用词查询
- android 使用Http的Get方式读取网络数据
- [BZOJ2245][SDOI2011]工作安排(费用流)
- 链表——成对的反转链表
- POJ 3279 Fliptile