在 Ubuntu 上优化 Apache 性能,通常可以从系统层面、Apache 配置、模块管理、缓存与压缩、以及架构层面几个方面入手。下面给你一套比较实用、可落地的优化方案。
编辑:
sudo nano /etc/security/limits.conf
示例(针对 www-data 用户):
www-data soft nofile 65535
www-data hard nofile 65535
编辑:
sudo nano /etc/sysctl.conf
常用优化:
net.core.somaxconn = 65535
net.ipv4.tcp_max_syn_backlog = 65535
net.ipv4.tcp_tw_reuse = 1
fs.file-max = 100000
应用:
sudo sysctl -p
apachectl -V | grep -i mpm
切换 MPM(以 event 为例):
sudo a2dismod mpm_prefork
sudo a2enmod mpm_event
sudo systemctl restart apache2
编辑:
sudo nano /etc/apache2/mods-enabled/mpm_event.conf
示例(4核8G服务器):
<IfModule mpm_event_module>
StartServers 4
MinSpareThreads 64
MaxSpareThreads 128
ThreadLimit 256
ThreadsPerChild 64
MaxRequestWorkers 512
MaxConnectionsPerChild 10000
</IfModule>
⚠️ MaxRequestWorkers 不要超过内存 / 每进程内存
查看已启用模块:
apache2ctl -M
常见可禁用的模块:
sudo a2dismod autoindex status cgi negotiation
sudo systemctl restart apache2
sudo a2enmod expires headers cache cache_disk
sudo systemctl restart apache2
示例配置:
<IfModule mod_expires.c>
ExpiresActive On
ExpiresByType image/jpg "access plus 30 days"
ExpiresByType text/css "access plus 7 days"
ExpiresByType application/javascript "access plus 7 days"
</IfModule>
sudo a2enmod deflate
<IfModule mod_deflate.c>
AddOutputFilterByType DEFLATE text/html text/plain text/xml
AddOutputFilterByType DEFLATE text/css application/javascript
</IfModule>
sudo apt install php-fpm
sudo a2enmod proxy_fcgi setenvif
sudo a2enconf php-fpm
sudo systemctl restart apache2
sudo nano /etc/php/*/fpm/pool.d/www.conf
关键参数:
pm = dynamic
pm.max_children = 50
pm.start_servers = 10
pm.min_spare_servers = 5
pm.max_spare_servers = 20
sudo a2enmod http2
Protocols h2 http/1.1
CustomLog ${APACHE_LOG_DIR}/access.log combined env=!dontlog
htopapachetopnetdataab -n 1000 -c 100 http://localhost/
或:
sudo apt install apachetop
apachetop
如果你愿意,可以告诉我:
我可以直接帮你给出精准配置参数。