在 Debian 上运行 LAMP(Linux + Apache + MySQL/MariaDB + PHP)变慢,通常可以从系统资源、服务配置、代码和数据库几个层面来排查和优化。下面给你一套实用思路。
先判断是整体慢还是某一部分慢:
top
htop
free -h
df -h
重点关注:
Debian 默认可能是 mpm_prefork(慢且吃内存)
查看:
apachectl -V | grep MPM
推荐:
mpm_event + php-fpm切换示例(event + php-fpm):
a2dismod php8.2 mpm_prefork
a2enmod mpm_event proxy_fcgi setenvif
a2enconf php8.2-fpm
systemctl restart apache2
/etc/apache2/mods-enabled/mpm_event.conf
<IfModule mpm_event_module>
StartServers 2
MinSpareThreads 25
MaxSpareThreads 75
ThreadLimit 64
ThreadsPerChild 25
MaxRequestWorkers 150
MaxConnectionsPerChild 0
</IfModule>
apt install php-fpm
/etc/php/8.2/fpm/pool.d/www.conf
pm = dynamic
pm.max_children = 20
pm.start_servers = 5
pm.min_spare_servers = 5
pm.max_spare_servers = 10
apt install php-opcache
/etc/php/8.2/fpm/conf.d/10-opcache.ini
opcache.enable=1
opcache.memory_consumption=128
opcache.revalidate_freq=60
SHOW VARIABLES LIKE 'slow_query%';
开启慢查询日志:
slow_query_log = 1
slow_query_log_file = /var/log/mysql/slow.log
long_query_time = 1
/etc/mysql/mariadb.conf.d/50-server.cnf
innodb_buffer_pool_size = 256M
query_cache_size = 0
max_connections = 100
注意:MySQL 8 已移除 query cache
如果是虚拟机/云服务器,HDD 会非常慢。
sysctl vm.swappiness=10
ulimit -n 65535
SELECT *display_errors(生产环境)如果你愿意,可以告诉我:
我可以帮你给出针对性配置。