基于大负载压力情况下的网络参数应如何确定和优化?

有些系统,在某些时段压力很大,网络连接很多,在这种情况下,默认的syn队列长度、time_wait套接字数量等感觉已经不能满足需求,该如何正确调整优化参数?显示全部
有些系统,在某些时段压力很大,网络连接很多,在这种情况下,默认的syn队列长度、time_wait套接字数量等感觉已经不能满足需求,该如何正确调整优化参数?收起
参与7

查看其它 1 个回答flying_eagle的回答

flying_eagleflying_eagle系统架构师某汽车制造公司
对于大压力的应用来说,网络性能调整是十分重要的。除了应用的响应速度外,linux网络管理子系统,网卡,带宽都可能成为性能瓶颈;linux的网络支持是无与伦比的:
1.查看网卡设置是否全双工传输的: echtool eth0
2. 设置MTU(最大传输单元),在带宽G以上的时候,要考虑将MTU增大,提高传输性能;如: ifconfig eth0 mtu 9000 up
3. 增加网络数据缓存;传输数据时linux是将包先放入缓存,填满缓存后即发送出去;读操作类似;
sysctl -w net.ipv4.tcp_rmem="4096 87380 8388608" :设置tcp读缓存:最小缓存,初始化时,最大缓存
sysctl -w net.ipv4.tcp_wmem="4096 87380 8388608" :设置tcp写缓存:最小缓存,初始化时,最大缓存
4.禁用window_scaling,并且直接设置window_size;(就像我们经常设置jvm的参数:xms = xmx一样
sysctl -w net.ipv4.tcp_window_scaling=0
5.设置TCP连接可重用性: 对于TIME_OUT状态的TCP连接可用于下一个TCP重用,这样减少了三次握手和创建时间,非常提高性能,尤其对于web server;
如: 开启可重用tcp功能: sysctl -w net.ipv4.tcp_tw_reuse=1 sysctl -w net.ipv4.tcp_tw_recyle=1
6.禁用掉没必要的tcp/ip协议功能:比如icmp;broadcast包的接收;
7. linux对于keeplive的tcp连接有一个默认的过期时间;可以减小这个时间,让没用的连接释放掉,毕竟tcp连接数是有限的嘛;
如: sysctl -w net.ipv4.tcp_keepalive_time=1800 (设置过期时间,1800s)
8.设置最大tcp正在连接状态(还没ESTABLISHED)队列长度;避免由于太多的tcp连接过来,导致服务器挂掉;比如DoS攻击
如:sysctl -w net.ipv4.tcp_max_syn_backlog=4096
9. 绑定tcp类型的中断到一个cpu上;(让cpu去亲和这个类型中断,避免频繁的中断,影响线程调度性能)


总结: 我们在性能优化一个应用时,首要的是设定优化要达到的目标,然后寻找瓶颈,调整参数,达到优化目的;但是寻找瓶颈时可能是最累的,要从大范围,通过很多用例,很多测试报告,不断的缩小范围,最终确定瓶颈点;以上这些参数只是个认识,系统性能优化中可能用到,但并不是放之四海而皆准的; 有的参数要边测试,边调整的;
互联网服务 · 2015-09-16
浏览1717

回答者

flying_eagle
系统架构师某汽车制造公司
擅长领域: 服务器Linux云计算

flying_eagle 最近回答过的问题

回答状态

  • 发布时间:2015-09-16
  • 关注会员:1 人
  • 回答浏览:1717
  • X社区推广