在 Ubuntu 上搭建的 LAMP(Linux + Apache + MySQL/MariaDB + PHP) 环境,调性能通常从 系统层、Apache、MySQL、PHP、缓存 几方面入手。下面给你一套实用的优化思路(偏生产环境)。
sudo swapoff -a
或调整 swappiness:
echo "vm.swappiness=10" | sudo tee -a /etc/sysctl.conf
sudo sysctl -p
ulimit -n 65535
永久生效:
sudo nano /etc/security/limits.conf
添加:
* soft nofile 65535
* hard nofile 65535
查看当前 MPM:
apache2ctl -V | grep MPM
event(默认,性能好)prefork启用 event:
sudo a2dismod php*
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 25
MaxSpareThreads 75
ThreadLimit 64
ThreadsPerChild 25
MaxRequestWorkers 200
MaxConnectionsPerChild 5000
</IfModule>
sudo a2dismod status autoindex cgi
sudo systemctl restart apache2
KeepAlive On
MaxKeepAliveRequests 100
KeepAliveTimeout 5
sudo apt install php-fpm
sudo a2enmod proxy_fcgi setenvif
sudo a2enconf php8.1-fpm
sudo systemctl restart apache2
sudo nano /etc/php/8.1/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 apt install php-opcache
opcache.enable=1
opcache.memory_consumption=128
opcache.max_accelerated_files=10000
sudo apt install mariadb-server
sudo mysql_tuner
innodb_buffer_pool_size = 1G
innodb_log_file_size = 256M
query_cache_type = 0
max_connections = 200
⚠️ query cache 在新版本 MySQL 已废弃
sudo apt install redis-server
sudo apt install php-redis
sudo a2enmod deflate expires
<IfModule mod_deflate.c>
AddOutputFilterByType DEFLATE text/html text/css application/javascript
</IfModule>
htopapache2ctl statusab -n 1000 -c 100 http://localhost/
✅ Apache event + PHP-FPM
✅ OPcache
✅ Redis 缓存
✅ MySQL buffer pool 调大
✅ 关闭无用模块
如果你愿意,可以告诉我:
我可以直接给你一套 可复制的配置文件。