linux压测配置优化
Contents
背景
临时租赁服务器,进行灰度压测,进行大量并发cURL.测试机器压榨单机极限性能.
修改单进程句柄限制
查看进程最大文件数
# 查看进程最大文件数
ulimit -n
修改进程最大文件数
ulimit -SHn 1048576
- S 表示设置软限制(soft limit)。软限制是指系统允许进程使用的资源上限,但进程可以尝试超过这个限制。
- H 表示设置硬限制(hard limit)。硬限制是指系统绝对允许进程使用的资源上限,即使进程尝试超过这个限制,系统也会阻止它。
- n 表示设置进程可以打开的文件描述符的最大数量
# 防止重启后失效
echo ulimit -HSn 1048576 >> /etc/rc.local
echo ulimit -HSn 1048576 >>/root/.bash_profile
ulimit影响因素
fs.nr_open
;进程最大文件描述符数fs.file-max
;系统最大文件描述符数
修改/etc/sysctl.conf
# /etc/sysctl.conf
fs.file-max = 1048576
fs.nr_open=1048576
nf_conntrack_max 开启
防止配置net.nf_conntrack_max
报错
# 校验conntrack是否开启
lsmod |grep conntrack
# 开启 ip_conntrack
modprobe ip_conntrack
/etc/sysctl.conf
配置修改
# 套接字优化
# 每个套接字的缓冲区大小
net.core.optmem_max= 81920
# 套接字接收缓冲区大小
net.core.rmem_max=513920
# 套接字发送缓冲区大小
net.core.wmem_max=513920
# TCP 接收缓冲区大小
net.ipv4.tcp_rmem=4096 87380 16777216
# TCP 发送缓冲区大小
net.ipv4.tcp_wmem=4096 65536 16777216
# UDP 缓冲区范围
net.ipv4.udp_mem=188562 251418 377124
# 提高请求数优化
# 处于 TIME_WAIT 状态的连接数量
net.ipv4.tcp_max_tw_buckets=1048576
# 连接跟踪表的大小;控制整个系统的连接跟踪表大小
net.netfilter.nf_conntrack_max = 1048576
# 越小系统尽快释放它们所占用的资源
net.ipv4.tcp_fin_timeout = 10
# 越小系统尽快释放它们所占用的资源
net.netfilter.nf_conntrack_tcp_timeout_time_wait =30
# 端口复用
net.ipv4.tcp_tw_reuse = 1
#端口范围限制
net.ipv4.ip_local_port_range = 1024 65000
# 控制单个网络接口的连接跟踪表大小
net.nf_conntrack_max = 1048576
# 暂未确定
net.ipv4.tcp_tw_recycle = 1
net.ipv4.tcp_timestamps = 0
net.ipv4.tcp_window_scaling = 0
net.ipv4.tcp_sack = 0
net.core.netdev_max_backlog = 30000
net.ipv4.tcp_no_metrics_save=1
net.core.somaxconn = 65535
net.ipv4.tcp_syncookies = 0
net.ipv4.tcp_max_orphans = 262144
net.ipv4.tcp_max_syn_backlog = 262144
net.ipv4.tcp_synack_retries = 2
net.ipv4.tcp_syn_retries = 2
net.ipv4.tcp_tw_recycle = 1
# 长连接优化
# 缩短最后一次数据包到 Keepalive 探测包的间隔时间
net.ipv4.tcp_keepalive_time=600
# 减少Keepalive 探测失败后,一直到通知应用程序前的重试次数
net.ipv4.tcp_keepalive_probes=3
# 缩短发送 Keepalive 探测包的间隔时间
net.ipv4.tcp_keepalive_intvl=30
修改后使其生效
/sbin/sysctl -p /etc/sysctl.conf
/sbin/sysctl -w net.ipv4.route.flush=1