下面按Debian 上优化 Apache(通常为 Apache 2.4)的常见思路,从系统层 → Apache 配置 → 模块与缓存 → 监控逐步说明,偏实战。
Debian 默认可能是 mpm_prefork、worker 或 event
查看当前 MPM:
apache2ctl -V | grep -i mpm
推荐:
eventpreforkevent 或 worker切换 MPM(如 event):
sudo a2dismod mpm_prefork
sudo a2enmod mpm_event
sudo systemctl restart apache2
ulimit -n
建议 ≥ 65535
修改:
sudo nano /etc/security/limits.conf
* soft nofile 65535
* hard nofile 65535
Apache 配置:
LimitRequestBody 0
编辑:
sudo nano /etc/apache2/mods-enabled/mpm_event.conf
示例(4 核 8G):
<IfModule mpm_event_module>
StartServers 4
MinSpareThreads 25
MaxSpareThreads 75
ThreadLimit 64
ThreadsPerChild 25
MaxRequestWorkers 200
MaxConnectionsPerChild 1000
</IfModule>
原则:
MaxRequestWorkers 不要超过内存 / 每进程内存MaxConnectionsPerChild 防止内存泄漏sudo nano /etc/apache2/apache2.conf
KeepAlive On
MaxKeepAliveRequests 100
KeepAliveTimeout 5
高并发建议:
KeepAliveTimeout 2~5常见可禁用:
sudo a2dismod status autoindex cgi negotiation
查看已启用:
apache2ctl -M
sudo a2enmod deflate
<IfModule mod_deflate.c>
AddOutputFilterByType DEFLATE text/html text/plain text/xml text/css application/javascript
</IfModule>
sudo a2enmod expires
<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 apt install php-fpm
sudo a2enmod proxy_fcgi setenvif
sudo a2enconf php-fpm
比 mod_php 性能更好、更稳定。
<Directory />
Options -Indexes
AllowOverride None
</Directory>
Timeout 30
sudo a2enmod status
访问:
http://server/server-status
ab -n 1000 -c 100 http://localhost/
如果你愿意,可以告诉我:
我可以给你直接可用的配置文件。