Linux 性能优化与调优实战
一、性能优化方法论
- 网络:
ss、iftop、nethogs、iperf
- 压测工具:
ab、wrk、hey、sysbench、locust、k6 - 监控驱动:结合 Prometheus + Grafana 观察趋势,避免“感觉优化”
二、系统内核与基础参数优化
1. 内核参数(/etc/sysctl.conf)常用调优:
# 文件句柄
fs.file-max = 2097152
fs.nr_open = 2097152
# 网络
net.core.somaxconn = 65535
net.core.netdev_max_backlog = 65535
net.ipv4.tcp_max_syn_backlog = 65535
net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_fin_timeout = 30
net.ipv4.tcp_keepalive_time = 600
net.ipv4.ip_local_port_range = 1024 65535
# 内存
vm.swappiness = 10
vm.dirty_ratio = 15
vm.dirty_background_ratio = 5
vm.overcommit_memory = 1
# 其他
kernel.pid_max = 4194303
应用:sysctl -p
2. 资源限制(/etc/security/limits.conf):
* soft nofile 65535
* hard nofile 65535
* soft nproc 65535
* hard nproc 65535
3. CPU 调度与亲和性:
4. 磁盘与 IO:
- 使用 SSD + 合适调度器(mq-deadline / none)
- 文件系统:XFS / ext4 挂载选项(noatime、nodiratime)
三、Nginx 性能优化
worker_connections 10240;worker_rlimit_nofile 65535;- Gzip、缓存(proxy_cache)、HTTP/2
- 静态资源
expires、sendfile、tcp_nopush
压测对比优化前后 QPS 与延迟。
四、MySQL / MariaDB 性能优化
- InnoDB:
innodb_buffer_pool_size(内存的 50%-70%) innodb_log_file_size、innodb_flush_log_at_trx_commitinnodb_io_capacity 匹配磁盘能力
工具:pt-query-digest、mysqltuner、sysbench。
五、Redis 性能优化
maxmemory + 合理淘汰策略(allkeys-lru)
六、容器与 Kubernetes 性能优化
Docker:
Kubernetes:
- 资源 requests / limits 合理设置
- HPA(Horizontal Pod Autoscaler)
- CNI 网络优化(Cilium / Calico)
- QoS 类(Guaranteed / Burstable)
七、监控驱动优化实践
结合 Prometheus 指标:
设定基线,持续观察,调优后验证。
八、生产案例与常见陷阱
案例:高并发电商系统优化
通过内核参数 + Nginx 缓存 + MySQL 索引优化 + Redis 集群 + K8s HPA,QPS 提升 3 倍,P99 延迟下降 60%。
常见陷阱:
九、自动化与持续优化