一、进程管理(MPM配置)
CentOS上Apache默认使用prefork MPM(多进程模型),每个请求由独立进程处理,内存消耗高且并发能力有限。若服务器CPU核心数较多,应切换至event MPM(支持多线程+事件驱动),其内存占用更低、并发处理能力更强(尤其适合静态内容和长连接)。需调整的关键参数包括:
StartServers:启动时的进程数(根据CPU核心数设置,如4核可设为5-8);MinSpareThreads/MaxSpareThreads:空闲线程池的最小/最大数量(如50-250);MaxRequestWorkers:最大并发请求数(需结合服务器内存计算,如每进程占用10MB内存,1GB内存可设为800-1000);MaxConnectionsPerChild:每个进程处理的最大请求数(设为0表示无限制,但建议设为1000-5000以避免内存泄漏)。二、模块管理
加载不必要的模块会增加内存消耗和CPU负载。应禁用不常用模块(如mod_php(若使用PHP-FPM替代)、mod_cgi、mod_autoindex、mod_status等),仅保留必需模块(如mod_rewrite、mod_deflate、mod_expires)。可通过httpd -M命令查看已加载模块,用LoadModule指令注释掉不需要的模块。
三、静态资源处理
静态资源(图片、CSS、JS)的处理会占用大量CPU和I/O。需通过以下方式优化:
mod_expires模块设置静态资源过期时间(如CSS/JS缓存30天,图片缓存1年),减少重复请求;mod_deflate模块对静态资源进行Gzip压缩(减少传输数据量,提升加载速度);四、KeepAlive设置
KeepAlive可减少TCP连接建立/关闭的开销,但设置不当会导致资源占用过高。需合理配置:
KeepAlive On:启用长连接;MaxKeepAliveRequests:每个连接的最大请求数(设为100-200,避免单个连接占用过多资源);KeepAliveTimeout:连接保持时间(设为5-10秒,避免空闲连接占用进程)。五、内存与CPU资源
MaxRequestWorkers设置过高,会导致内存耗尽,引发频繁的swap(严重降低性能)。需根据服务器内存计算合适的MaxRequestWorkers(公式:可用内存 / 每个Apache进程内存占用,如1GB内存、每个进程占用10MB,则MaxRequestWorkers约80-100);六、磁盘I/O
频繁的磁盘读写(如日志记录、静态文件访问)会成为瓶颈。需优化:
rotatelogs工具实现日志轮转(避免单个日志文件过大);mod_cache的缓存路径)放在SSD或高性能存储上;七、网络配置
HostnameLookups Off,避免Apache对客户端IP进行DNS查询(增加延迟);/etc/sysctl.conf中的内核参数(如net.ipv4.tcp_tw_reuse = 1(重用TIME_WAIT连接)、net.core.somaxconn = 1024(增加监听队列长度)),提升网络吞吐量。八、监控与调优工具
使用工具实时监控性能,定位瓶颈:
top(查看CPU/内存占用)、vmstat(查看I/O和进程状态)、ss(查看TCP连接状态);apachetop(实时查看请求处理情况)、mod_status(查看Apache模块状态和性能指标);ab(Apache Benchmark,测试并发处理能力)、wrk(更强大的压力测试工具)。