前传04 | Netty性能调优

一、操作系统参数调试

01 文件描述符

1)最大文件句柄数

首先查看系统最大文件句柄数,执行命令#cat/proc/sys/fs/file-max,查看最大句柄数是否满足需要,如果不满足,通过#vim/etc/sysctl.conf命令插入如下配置:
‘fs.file-max = 1000000’
配置完成后,执行#sysctl-p命令,让配置修改立即生效。

2)单进程打开的最大句柄数 ulimit -n

设置完系统最大文件句柄数,对单进程打开的最大句柄数进行设置。通过 ulimit-a命令查看当前设置的值是否满足要求:
在这里插入图片描述

3)并发接入的TCP连接数

当并发接入的TCP连接数超过上限时,就会提示“too many open files”,所有新的客户端接入将失败。通过#vi/etc/security/limits.conf命令添加如下配置参数:

在这里插入图片描述

02 TCP/IP相关参数

通过#vi/etc/sysctl.conf命令对上述网络参数进行优化,具体修改如下(大约可以接入50万个连接,可以根据业务需要调整参数),修改完成后,通过执行#sysctl-p命令使配置立即生效。
在这里插入图片描述

(1)net.ipv4.tcp_rmem:为每个TCP连接分配的读缓冲区内存大小。第一个值是socket接收缓冲区分配的最小字节数。第二个值是默认值,缓冲区在系统负载不高的情况下可以增长到该值。第三个值是接收缓冲区分配的最大字节数。
(2)net.ipv4.tcp_wmem:为每个TCP连接分配的写缓冲区内存大小。第一个值是socket发送缓冲区分配的最小字节数。第二个值是默认值,缓冲区在系统负载不高的情况下可以增长到该值。第三个值是发送缓冲区分配的最大字节数。
(3)net.ipv4.tcp_mem:内核分配给TCP连接的内存,单位是page(1个page通常为4096字节,可以通过#getconf PAGESIZE命令查看),包括最小、默认和最大三个配置项。
(4)net.ipv4.tcp_keepalive_time:最近一次数据包发送与第一次keep alive探测消息发送的时间间隔,用于确认TCP连接是否有效。
(5)tcp_keepalive_intvl:在未获得探测消息响应时,发送探测消息的时间间隔。
(6)tcp_keepalive_probes:判断TCP连接失效连续发送的探测消息个数,达到之后判定连接失效。
(7)net.ipv4.tcp_tw_reuse:是否允许将TIME_WAIT Socket重新用于新的TCP连接,默认为0,表示关闭。
(8)net.ipv4.tcp_tw_recycle:是否开启TCP连接中TIME_WAIT Socket的快速回收功能,默认为0,表示关闭。
(9)net.ipv4.tcp_fin_timeout:套接字自身关闭时保持在FIN_WAIT_2状态的时间,默认为60。

03 多网卡队列和软中断

多队列网卡需要网卡硬件支持,首先判断当前系统是否支持多队列网卡,通过命令“lspci-vvv”或者“ethtool-l 网卡interface名”查看网卡驱动型号,根据网卡驱动官方说明确认当前系统是否支持多队列网卡(是否支持多队列网卡与网卡硬件、操作系统版本等有关)。有些网卡驱动默认开启了多队列网卡,有些则没有,由于不同的网卡驱动、云服务商提供的开启命令不同,因此需要根据实际情况处理,此处不再详细列举开启方式。

对于不支持多队列网卡的系统,如果内核版本支持RPS(kernel 2.6.35及以上版本),开启RPS后可以实现软中断,提升网络的吞吐量。RPS根据数据包的源地址、目的地址及目的和源端口,算出一个hash值,然后根据这个hash值选择软中断运行的CPU,从上层来看,也就是说将每个连接和CPU绑定,并通过这个hash值,在多个CPU上均衡软中断,提升网络并行处理性能,它实际提供了一种通过软件模拟多队列网卡的功能。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值