内核参数是网络性能的基础,需通过/etc/sysctl.conf文件调整,主要关注连接队列、缓冲区、TIME_WAIT状态等关键项:
rmem)和发送(wmem)缓冲区,提升大数据量传输效率。例如:net.core.rmem_default=1048576 # 接收缓冲区默认大小
net.core.wmem_default=1048576 # 发送缓冲区默认大小
net.core.rmem_max=16777216 # 接收缓冲区最大大小
net.core.wmem_max=16777216 # 发送缓冲区最大大小
somaxconn)和已建立连接的队列(tcp_max_syn_backlog),避免高并发下连接丢失:net.core.somaxconn=65535 # 监听队列最大长度
net.ipv4.tcp_max_syn_backlog=8192 # SYN队列最大长度
tcp_tw_reuse(复用TIME_WAIT连接)和tcp_fin_timeout(缩短TIME_WAIT超时时间),提升端口利用率:net.ipv4.tcp_tw_reuse=1 # 允许复用TIME_WAIT连接
net.ipv4.tcp_fin_timeout=30 # TIME_WAIT超时时间(秒)
net.ipv4.tcp_fastopen=3 # 启用TFO(客户端、服务器均需设置)
cubic算法适合大多数场景,提升高带宽网络的传输效率:net.ipv4.tcp_congestion_control=cubic
应用更改需执行sudo sysctl -p。
sudo ifconfig eth0 mtu 9000 # 临时生效
# 永久生效需修改网卡配置文件(如CentOS的/etc/sysconfig/network-scripts/ifcfg-eth0)
sudo ethtool -L eth0 combined 8 # 设置为8队列(根据CPU核心数调整)
sudo ethtool -K eth0 rx on tx on sg on tso on gso on gro on # 开启各项卸载功能
bonding或ifenslave将多个物理网卡绑定为一个逻辑接口,提升吞吐量和冗余:# 示例:mode=1(主备模式),mode=4(802.3ad链路聚合)
sudo ifenslave bond0 eth0 eth1
KeepAlive可减少长连接占用,但会增加握手开销;启用时需合理设置MaxKeepAliveRequests(最大请求数)和KeepAliveTimeout(空闲超时):KeepAlive On # 启用KeepAlive
MaxKeepAliveRequests 100 # 单个连接最大请求数
KeepAliveTimeout 5 # 空闲超时(秒)
innodb_buffer_pool_size(InnoDB缓存池),缓存更多数据和索引:innodb_buffer_pool_size=4G # 根据服务器内存调整(建议占物理内存的50%-70%)
OPcache),缓存编译后的PHP脚本,减少重复编译的开销;禁用不必要的模块,降低内存占用:opcache.enable=1 # 启用OPcache
opcache.memory_consumption=128 # 缓存大小(MB)
iftop(实时流量监控)、nload(带宽使用趋势)、ss(连接状态分析)等工具,定期检查网络性能瓶颈:sudo yum install iftop nload # CentOS安装
sudo iftop -i eth0 # 监控eth0接口流量
sudo ss -s # 查看连接统计信息
sudo yum update # CentOS更新
sudo apt update && sudo apt upgrade # Ubuntu更新
/etc/sysctl.conf、Apache的httpd.conf),并在测试环境验证效果,避免生产环境故障。以上策略需根据LAMP架构的实际负载(如并发量、数据量)和服务器硬件配置(如CPU、内存、网卡)进行调整,建议逐步实施并监控效果。