作为IT工程师,我可以为您提供详细的Linux内核参数优化方案,以提高系统性能。以下是关键优化方向和具体实施方法:
# 增大TCP窗口大小
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
# 启用TCP窗口缩放和时间戳
echo "net.ipv4.tcp_window_scaling = 1" >> /etc/sysctl.conf
echo "net.ipv4.tcp_timestamps = 1" >> /etc/sysctl.conf
# 调整连接队列
echo "net.core.somaxconn = 4096" >> /etc/sysctl.conf
echo "net.ipv4.tcp_max_syn_backlog = 4096" >> /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.tcp_fin_timeout = 30" >> /etc/sysctl.conf
# 调整虚拟内存参数
echo "vm.swappiness = 10" >> /etc/sysctl.conf # 减少交换分区使用
echo "vm.dirty_ratio = 10" >> /etc/sysctl.conf # 系统内存脏页占比阈值
echo "vm.dirty_background_ratio = 5" >> /etc/sysctl.conf # 后台刷脏页阈值
# 大内存页支持
echo "vm.nr_hugepages = 1024" >> /etc/sysctl.conf # 根据实际内存调整
# 增加文件描述符限制
echo "fs.file-max = 6553560" >> /etc/sysctl.conf
# 调整inode缓存
echo "vm.vfs_cache_pressure = 50" >> /etc/sysctl.conf
# 禁用atime更新,提升I/O性能
echo "noatime,nodiratime" >> /etc/fstab # 在挂载选项中添加
# 调整I/O调度器(根据磁盘类型选择)
# 对于SSD:
echo "deadline" > /sys/block/sda/queue/scheduler
# 对于传统硬盘:
echo "cfq" > /sys/block/sda/queue/scheduler
# 增加队列深度
echo "nr_requests = 256" > /sys/block/sda/queue/nr_requests
# 调整PID限制
echo "kernel.pid_max = 65536" >> /etc/sysctl.conf
# 增加线程限制
echo "kernel.threads-max = 2097152" >> /etc/sysctl.conf
# 调整进程可以打开的文件描述符数量
echo "* soft nofile 65536" >> /etc/security/limits.conf
echo "* hard nofile 65536" >> /etc/security/limits.conf
# 使配置立即生效
sysctl -p
# 对于limits.conf的修改需要重新登录
vmstat
, iostat
, netstat
, dstat
等监控性能变化# 禁用透明大页(对数据库性能不利)
echo "never" > /sys/kernel/mm/transparent_hugepage/enabled
# 调整NUMA设置(针对多CPU服务器)
echo "vm.zone_reclaim_mode = 0" >> /etc/sysctl.conf
# 增加临时端口范围
echo "net.ipv4.ip_local_port_range = 1024 65535" >> /etc/sysctl.conf
# 快速处理大量TIME_WAIT连接
echo "net.ipv4.tcp_max_tw_buckets = 180000" >> /etc/sysctl.conf
这些优化方案应根据您的具体硬件配置和工作负载进行调整。建议在实施前备份相关配置文件,并记录所有更改以便必要时回滚。