Apache在Ubuntu上的性能调优技巧有哪些
导读:选择合适的MPM模块 Apache的多路复用模块(MPM)决定了其处理并发请求的方式,需根据场景选择: prefork:每个请求由独立进程处理,适合需要稳定性的场景(如非线程安全的PHP应用),但内存占用较高。 worker:使用多线程处...
选择合适的MPM模块
Apache的多路复用模块(MPM)决定了其处理并发请求的方式,需根据场景选择:
- prefork:每个请求由独立进程处理,适合需要稳定性的场景(如非线程安全的PHP应用),但内存占用较高。
- worker:使用多线程处理请求,内存效率更高,适合高并发场景。
- event:基于事件驱动模型,优化了持续连接(如WebSocket),适合大量闲置连接的场景(如现代Web应用)。
需修改/etc/apache2/mods-available/下的对应配置文件(如mpm_prefork.conf、mpm_worker.conf),调整参数后启用模块(sudo a2enmod mpm_prefork)并重启Apache。
调整MPM参数
根据所选MPM优化并发处理能力,关键参数如下:
- prefork模块:
StartServers:启动时的进程数(建议5-10,根据服务器内存调整);
MinSpareServers/MaxSpareServers:最小/最大空闲进程数(避免频繁创建/销毁进程,建议5-10/10-20);
MaxRequestWorkers:最大并发请求数(核心参数,需根据内存计算,如每进程占用10MB内存,1GB内存可设为100);
MaxConnectionsPerChild:每个进程处理的最大请求数(设为0表示无限制,或设为1000-5000以避免内存泄漏)。 - worker/event模块:
StartServers:启动时的进程数(建议2-5);
MinSpareThreads/MaxSpareThreads:最小/最大空闲线程数(建议25-75/75-150);
ThreadsPerChild:每个进程的线程数(建议25-50,需与ThreadLimit一致);
MaxRequestWorkers:最大并发请求数(线程数×进程数,如ThreadsPerChild=25、StartServers=2,则初始线程数为50)。
修改后需重启Apache使配置生效。
启用KeepAlive
KeepAlive通过复用TCP连接减少握手开销,提升静态资源(如图片、CSS)加载速度。配置参数:
KeepAlive On:启用持久连接;
MaxKeepAliveRequests 100:单个连接最大请求数(避免单个连接占用过久);
KeepAliveTimeout 5:等待下一个请求的超时时间(秒,建议3-5秒,过长会导致资源浪费)。
启用压缩模块(mod_deflate)
通过压缩HTML、CSS、JavaScript等文本资源,减少传输数据量(通常可压缩至原大小的30%-70%),提升页面加载速度。配置步骤:
- 启用模块:
sudo a2enmod deflate; - 在配置文件中添加规则:
< IfModule mod_deflate.c> AddOutputFilterByType DEFLATE text/html text/plain text/xml text/css application/javascript application/json < /IfModule>
使用缓存模块(mod_cache/mod_disk_cache)
缓存静态资源(如图片、CSS、JS)和动态内容(如数据库查询结果),减少服务器负载和响应时间。配置步骤:
- 启用模块:
sudo a2enmod cache cache_disk; - 设置缓存目录和大小:
< IfModule mod_cache.c> CacheEnable disk / CacheRoot "/var/cache/apache2" CacheDirLevels 2 CacheDirLength 1 < /IfModule>
禁用不必要的模块
Apache默认启用许多模块,禁用未使用的模块可减少内存和CPU占用。操作步骤:
- 查看已启用模块:
apache2ctl -M; - 禁用模块(如
status、autoindex):sudo a2dismod status autoindex; - 重启Apache:
sudo systemctl restart apache2。
优化日志记录
减少日志输出可降低CPU占用,建议:
- 调整日志级别:在虚拟主机配置中设置
LogLevel warn(仅记录警告和错误,而非默认的info); - 使用
logrotate工具自动归档和清理日志:sudo logrotate -f /etc/logrotate.conf(默认配置通常已包含Apache日志轮转规则)。
负载均衡(可选)
若单台服务器无法应对高并发,可使用mod_proxy_balancer模块将请求分发到多台后端服务器。配置示例:
<
Proxy balancer://mycluster>
BalancerMember http://backend1.example.com
BalancerMember http://backend2.example.com
<
/Proxy>
ProxyPass / balancer://mycluster
系统级优化
- 更新系统和软件包:
sudo apt update & & sudo apt upgrade,获取最新性能改进和安全补丁; - 使用SSD:固态硬盘的读写速度远快于传统HDD,显著提升Apache处理静态内容的性能;
- 增加内存:内存不足会导致频繁使用交换分区(swap),严重影响性能;
- 调整内核参数:优化
/etc/sysctl.conf中的网络和磁盘I/O参数(如net.core.somaxconn设为1024,增加TCP连接队列长度)。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: Apache在Ubuntu上的性能调优技巧有哪些
本文地址: https://pptw.com/jishu/744760.html
