一、【linux】 网络内核参数优化
1、查看端口数,执行:sysctl -a | grep range
2、修改内核参数 【/etc/sysctl.conf】
执行:vi /etc/sysctl.conf
然后加入 以下配置。
#本地端口使用范围
net.ipv4.ip_local_port_range = 1024 65535
#内核网络接收缓存大小
net.core.rmem_max=16777216
#内核网络发送缓存大小
net.core.wmem_max=16777216
#TCP接收缓存,最小值,默认值,最大值
net.ipv4.tcp_rmem=4096 87380 16777216
#TCP发送缓存,最小值,默认值,最大值
net.ipv4.tcp_wmem=4096 65536 16777216
#对于本端断开的socket连接,TCP保持在FINWAIT2状态的时间(秒)。对方可能会断开连接或一直不结束连接或不可预料的进程死亡。
net.ipv4.tcp_fin_timeout = 10
#能够更快地回收TIMEWAIT套接字。
net.ipv4.tcp_tw_recycle = 1
#TCP时间戳(会在TCP包头增加12个字节),以一种比重发超时更精确的方法(参考RFC 1323)来启用对RTT 的计算,为实现更好的性能应该启用这个选项。
net.ipv4.tcp_timestamps = 0
#启用RFC 1323定义的window scaling,要支持超过64KB的TCP窗口,必须启用该值(1表示启用),TCP窗口最大至1GB,TCP连接双方都启用时才生效。
net.ipv4.tcp_window_scaling = 0
#启用有选择的应答(1表示启用),通过有选择地应答乱序接收到的报文来提高性能,让发送者只发送丢失的报文段,(对于广域网通信来说)这个选项应该启用,但是会增加对CPU的占用。
net.ipv4.tcp_sack = 0
#在每个网络接口接收数据包的速率比内核处理这些包的速率快时,允许送到队列的数据包的最大数目。
net.core.netdev_max_backlog = 30000
net.ipv4.tcp_no_metrics_save=1
#定义了系统中每一个端口最大的监听队列的长度,这是个全局的参数。
net.core.somaxconn = 262144
#表示是否打开TCP同步标签(syncookie),内核必须打开了CONFIG_SYN_COOKIES项进行编译,同步标签可以防止一个套接字在有过多试图连接到达时引起过载。
net.ipv4.tcp_syncookies = 0
#系统所能处理不属于任何进程的 socket数量
net.ipv4.tcp_max_orphans = 262144
#对于还未获得对方确认的连接请求,可保存在队列中的最大数目。如果服务器经常出现过载,可以尝试增加这个数字。
net.ipv4.tcp_max_syn_backlog = 262144
#SNY/ACK重试次数
net.ipv4.tcp_synack_retries = 2
#SYN重试次数
net.ipv4.tcp_syn_retries = 2
ps:这个配置参考于cache服务器varnish的推荐配置和SunOne 服务器系统优化的推荐配置。
3、执行 【sysctl -p】 ,让其立刻生效
再次查看【sysctl -a | grep range】
二、linux 最大线程数,最大文件数修改。
1、ulimit -n和-u可以查看linux的最大进程数和最大文件打开数
2、修改永久生效方法:
- 修改
/etc/security/limits.conf
文件* soft nofile 204800 * hard nofile 204800 * soft nproc 204800 * hard nproc 204800
- 修改
/etc/security/limits.d/20-nproc.conf
文件【“20”可能会不一样】* soft nproc 204800 * hard nproc 204800
- 修改
/etc/security/limits.d/def.conf
文件【没有的话,创建】* soft nofile 204800 * hard nofile 204800
3、重启后生效-----【reboot】
4、再次 【ulimit -n】【ulimit -u】 查看