# 临时设置
ulimit -n 655350
# 永久设置
echo "* soft nofile 655350" >> /etc/security/limits.conf
echo "* hard nofile 655350" >> /etc/security/limits.conf
# 最大进程数
echo "kernel.pid_max = 655360" >> /etc/sysctl.conf
# 最大线程数
echo "kernel.threads-max = 655360" >> /etc/sysctl.conf
# 禁用内存过量使用
echo "vm.overcommit_memory = 2" >> /etc/sysctl.conf
echo "vm.overcommit_ratio = 80" >> /etc/sysctl.conf
# 减少交换倾向
echo "vm.swappiness = 10" >> /etc/sysctl.conf
# 增加端口范围
echo "net.ipv4.ip_local_port_range = 1024 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.core.somaxconn = 65535" >> /etc/sysctl.conf
echo "net.ipv4.tcp_max_syn_backlog = 65535" >> /etc/sysctl.conf
# 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
# 增加连接跟踪表大小
echo "net.netfilter.nf_conntrack_max = 655360" >> /etc/sysctl.conf
echo "net.nf_conntrack_max = 655360" >> /etc/sysctl.conf
# 增加文件系统inode缓存
echo "vm.vfs_cache_pressure = 50" >> /etc/sysctl.conf
# 调整脏页比例
echo "vm.dirty_background_ratio = 5" >> /etc/sysctl.conf
echo "vm.dirty_ratio = 10" >> /etc/sysctl.conf
# 对于SSD使用noop或deadline调度器
echo "deadline" > /sys/block/sda/queue/scheduler
worker_processes auto;
worker_rlimit_nofile 65535;
events {
worker_connections 65535;
use epoll;
multi_accept on;
}
http {
sendfile on;
tcp_nopush on;
tcp_nodelay on;
keepalive_timeout 65;
keepalive_requests 10000;
}
[mysqld]
max_connections = 2000
table_open_cache = 4000
innodb_buffer_pool_size = 4G
innodb_flush_log_at_trx_commit = 2
innodb_flush_method = O_DIRECT
sysctl -p
# 常用监控命令
top -H
vmstat 1
iostat -x 1
netstat -s
ss -s
这些优化可以显著提高Linux系统在高并发场景下的性能,但最佳配置需要根据具体应用和硬件环境进行测试和调整。