一、前言
Linux服务器广泛应用于生产环境,其性能直接影响业务的稳定性和用户体验。性能优化并非一蹴而就,需从系统内核、资源调度、应用配置等多个维度入手,结合业务场景针对性调整。本文将分享实用的Linux服务器性能优化技巧,帮助运维人员提升服务器性能。
二、系统内核优化
Linux内核参数决定了系统的核心运行特性,通过调整/etc/sysctl.conf文件可实现内核优化,修改后执行sysctl -p使配置生效。
- 网络参数优化(提升网络并发能力)
-
调整TCP连接队列大小:net.core.somaxconn = 1024(默认128,增大监听队列长度,应对高并发连接请求)、net.ipv4.tcp_max_syn_backlog = 2048(增大SYN等待队列大小,缓解SYN洪水攻击影响)。
-
开启TCP连接复用:net.ipv4.tcp_tw_reuse = 1(允许复用处于TIME_WAIT状态的连接)、net.ipv4.tcp_tw_recycle = 0(高并发场景下建议关闭,避免NAT环境下的连接异常)。
-
调整TCP连接超时时间:net.ipv4.tcp_keepalive_time = 600(TCP保持连接的空闲时间,默认7200秒,缩短为10分钟,快速释放无效连接)、net.ipv4.tcp_keepalive_intvl = 30(保持连接探测间隔时间)、net.ipv4.tcp_keepalive_probes = 10(探测失败后重试次数)。
-
增大系统文件描述符限制:fs.file-max = 655350(系统最大打开文件描述符数,Linux中一切皆文件,高并发场景需增大)。
- 内存参数优化(提升内存使用效率)
-
调整SWAP使用策略:vm.swappiness = 10(默认60,值越小表示系统越倾向于使用物理内存,减少SWAP交换,提升性能;内存充足时可设为0)。
-
优化内存页缓存:vm.vfs_cache_pressure = 50(默认100,降低该值可让系统更倾向于保留目录和文件属性缓存,提升文件访问效率)。
三、资源调度优化
- CPU调度优化
Linux默认使用CFS(完全公平调度器),适合大多数场景。对于CPU密集型应用,可通过调整进程优先级提升性能:
-
使用nice命令调整进程优先级:nice -n -5 ./app(启动app进程,设置优先级为-5,nice值范围-20~19,值越小优先级越高)。
-
使用renice命令调整运行中进程优先级:renice -5 1234(将PID为1234的进程优先级调整为-5)。
- 磁盘IO优化
磁盘IO是服务器性能的常见瓶颈,可通过以下方式优化:
-
使用SSD替代机械硬盘:SSD读写速度远高于机械硬盘,可显著提升IO性能,适合数据库、日志存储等IO密集型场景。
-
优化文件系统:推荐使用ext4或xfs文件系统,xfs在大文件、高并发场景下性能更优。格式化时可调整参数,如xfs格式化:mkfs.xfs -f -i size=512 /dev/sdb1(调整inode大小,适合小文件较多的场景)。
-
开启磁盘缓存:通过blockdev --setra 16384 /dev/sda(设置磁盘预读大小为16KB,默认256KB,可根据业务调整;机械硬盘可适当增大,SSD可减小)提升顺序读写性能。
-
使用RAID阵列:根据业务需求选择RAID级别,如RAID10(兼顾性能和冗余)适合数据库场景,RAID5(兼顾容量和容错)适合普通存储场景。
四、应用配置优化
- Web服务器优化(以Nginx为例)
-
调整工作进程数:worker_processes auto;(自动设置为CPU核心数,充分利用多核资源)。
-
优化连接配置:worker_connections 10240;(每个工作进程的最大连接数)、keepalive_timeout 60;(长连接超时时间,减少连接建立开销)。
-
开启缓存:配置proxy_cache缓存动态内容,gzip压缩静态资源,减少带宽占用和响应时间。
- 数据库优化(以MySQL为例)
-
调整内存配置:根据服务器内存大小设置innodb_buffer_pool_size(InnoDB缓存池大小,建议设为物理内存的50%-70%)、key_buffer_size(MyISAM索引缓存大小)。
-
优化SQL语句:避免全表扫描,创建合适的索引;开启慢查询日志(slow_query_log=1),定位并优化慢查询。
-
调整连接数:设置max_connections(最大连接数)、wait_timeout(连接超时时间),避免连接过多导致资源耗尽。
五、性能监控与调优闭环
优化并非一劳永逸,需通过监控工具实时掌握系统状态,形成"监控-分析-优化-验证"的闭环:
-
基础监控工具:top(查看CPU、内存使用情况)、free(查看内存和SWAP使用)、df -h(查看磁盘空间)、iostat(查看磁盘IO性能)、netstat/ss(查看网络连接状态)。
-
高级监控工具:Prometheus+Grafana(可视化监控系统各项指标)、Zabbix(全方位监控,支持告警)、nmon(实时监控CPU、内存、IO、网络等,适合快速排查问题)。
六、总结
Linux服务器性能优化需要结合业务场景,从内核、资源、应用等多个维度综合调整。在优化过程中,应遵循"先监控后优化"的原则,避免盲目调整参数。同时,优化是一个持续迭代的过程,需根据业务增长和系统状态不断调整,确保服务器始终处于高效、稳定的运行状态。