作为IT工程师,我将为您介绍如何通过调整Linux网络设置和参数来优化服务器网络性能。
# 临时设置
echo 'net.core.rmem_max=16777216' >> /etc/sysctl.conf
echo 'net.core.wmem_max=16777216' >> /etc/sysctl.conf
echo 'net.ipv4.tcp_rmem=4096 87380 16777216' >> /etc/sysctl.conf
echo 'net.ipv4.tcp_wmem=4096 65536 16777216' >> /etc/sysctl.conf
# 使设置生效
sysctl -p
# 增加最大连接数
echo 'net.core.somaxconn=65535' >> /etc/sysctl.conf
# 启用TCP快速打开
echo 'net.ipv4.tcp_fastopen=3' >> /etc/sysctl.conf
# 减少TIME_WAIT状态的连接
echo 'net.ipv4.tcp_tw_reuse=1' >> /etc/sysctl.conf
echo 'net.ipv4.tcp_tw_recycle=1' >> /etc/sysctl.conf
# 增加本地端口范围
echo 'net.ipv4.ip_local_port_range=1024 65535' >> /etc/sysctl.conf
sysctl -p
# 查看可用算法
sysctl net.ipv4.tcp_available_congestion_control
# 设置BBR算法(需要内核4.9+)
echo 'net.core.default_qdisc=fq' >> /etc/sysctl.conf
echo 'net.ipv4.tcp_congestion_control=bbr' >> /etc/sysctl.conf
sysctl -p
# 启用RPS(Receive Packet Steering)
for i in /sys/class/net/eth*/queues/rx-*/rps_cpus; do echo f > $i; done
# 启用XPS(Transmit Packet Steering)
for i in /sys/class/net/eth*/queues/tx-*/xps_cpus; do echo f > $i; done
# 增加文件描述符限制
echo '* soft nofile 65535' >> /etc/security/limits.conf
echo '* hard nofile 65535' >> /etc/security/limits.conf
# 增加epoll实例限制
echo 'fs.epoll.max_user_instances=8192' >> /etc/sysctl.conf
# 禁用透明大页(对某些数据库有好处)
echo 'never' > /sys/kernel/mm/transparent_hugepage/enabled
# 禁用Nagle算法
echo 'net.ipv4.tcp_low_latency=1' >> /etc/sysctl.conf
# 减少TCP延迟ACK
echo 'net.ipv4.tcp_delack_min=20' >> /etc/sysctl.conf
sysctl -p
# 查看网络统计
ss -s
# 查看TCP连接状态
ss -ant
# 查看网络接口统计
ip -s link
# 查看TCP重传率
nstat -az | grep -i retrans
# 带宽测试
iperf3 -c <server_ip>
# 延迟测试
ping <target_ip>
# 高级网络诊断
mtr <target_ip>
通过以上调整,您可以显著提高Linux服务器的网络吞吐量、降低延迟并提高连接处理能力。建议根据具体应用场景和工作负载进行针对性优化。