| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 系统运维 -> TCP异常连接 -> 正文阅读 |
|
[系统运维]TCP异常连接 |
目录 ????????TCP异常连接分为connect,第一次握手,第三次握手源码逻辑介绍,给出优化方案以及查看全连接与半连接的方法。 connect在连接失败后,大量的端口范围查找,会调用自旋锁等操作与hash查找,引起系统态CPU开销上涨。 第一次握手客户端
2)全队列满,且有未完成的半连接请求; 3)没有收到synack客户端发起重试,时间要1s以后,对系统有影响; 4)重传时间 1 2 4 8 16 32 翻倍;次数是tcp_syn_retries
第三次握手服务端 1)全连接队列满了则丢弃,客户端不知道,服务器发起syn+ack 2)次数由tcp_synack_retries 控制 (现象制造,不进行accept,让客户端占满连接队列资源) 调优端口不足1)调整端口?Ip_local_port_range增大端口范围 2)使用复用连接 3)使用长链接 4)开启tcp_tw_reuse和tcp_tw_recycle 握手情况下1)打开syncookies ????? 防止过多的请求打满半连接队列;SYN攻击;解决服务端因为半连接队列满而发生的丢包。 2)增加全连接队列长度 ????? 全队列:Min(backlog,net.core.somaxconn) 3)尽快调用accept ????? 从全队列中取出连接 4)减少TCP连接次数,尽早拒绝; ????????内核参数tcp_abort_on_overflow发现满了直接发送rst给客户端,客户端收到的是 connection reset by peer ????????用长链接代替短连接; ????????重试的次数不宜加大; 全队列和半队列查询全连接队列
前面数字有变化代表有溢出 半连接队列?????? netstat –s | grep SYNs 这种方法是不对的,无法说明问题因为全连接溢出也会增加。 ? ? ? ? 1)want_cookie参数是不是1,如果是真,则不会发生半连接溢出丢包。 ????????2)want_cookie,没有打开,除了netstat –antp,建议查看listen端口上的SYN_RECV的数量
?参考 |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/15 14:30:25- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |