Magento2站点加载速度过慢问题求助
Magento 2 站点加载缓慢排查优化方案
(环境:16GB Contabo服务器、Ubuntu 20.04、PHP 7.4、Composer 2.5.4)
一、服务器资源实时核查
- 用
top或htop命令监控CPU、内存、磁盘IO使用率,排查是否有进程(如MySQL、PHP-FPM)异常占用资源 - 检查磁盘剩余空间:执行
df -h,确保系统盘/数据盘未达满负载状态 - 调整PHP-FPM配置:针对16GB内存,建议将
pm.max_children设置为60-80,pm.start_servers设为20-30,避免内存耗尽导致进程卡顿;配置文件路径通常为/etc/php/7.4/fpm/pool.d/www.conf - 检查SWAP配置:执行
free -m查看SWAP使用情况,若未配置或SWAP过小,可创建2GB以上SWAP分区缓解内存压力
二、Magento 核心配置验证与优化
- 确认生产模式生效:执行
bin/magento deploy:mode:show,若未生效,重新执行bin/magento deploy:mode:set production -s(-s跳过静态文件重复部署) - 重新部署静态资源:执行
bin/magento setup:static-content:deploy -f(强制部署,确保静态文件完整无缺失) - 检查缓存状态:执行
bin/magento cache:status,确保full_page、config、block_html等核心缓存类型处于启用状态;若异常,执行bin/magento cache:flush重置缓存 - 检查索引状态:执行
bin/magento indexer:status,若存在Reindex Required的索引,立即执行bin/magento indexer:reindex完成索引更新
三、数据库性能排查
- 查看MySQL运行状态:登录MySQL执行
SHOW PROCESSLIST;,排查是否有慢查询、锁表或阻塞进程 - 开启慢查询日志:在MySQL配置文件
/etc/mysql/mysql.conf.d/mysqld.cnf中添加以下配置,重启MySQL后分析慢查询日志定位耗时SQL:slow_query_log = 1 slow_query_log_file = /var/log/mysql/slow.log long_query_time = 2 - 优化数据库表:执行
mysqlcheck -o -u [数据库用户名] -p [Magento数据库名],整理表碎片提升查询效率
四、网络与SSL配置排查
- 测试服务器网络连通性:执行
ping 8.8.8.8,检查是否存在高延迟或丢包情况 - 临时切换HTTP访问测试:当前使用IP+SSL访问,可能存在证书握手延迟,可临时关闭SSL验证,测试HTTP访问速度,排除SSL层面问题
- 添加静态资源缓存规则:在Magento根目录
.htaccess中添加浏览器缓存规则,减少重复请求:<IfModule mod_expires.c> ExpiresActive On ExpiresByType image/jpg "access plus 1 year" ExpiresByType image/jpeg "access plus 1 year" ExpiresByType image/png "access plus 1 year" ExpiresByType text/css "access plus 1 month" ExpiresByType application/javascript "access plus 1 month" ExpiresDefault "access plus 2 days" </IfModule>
五、扩展与自定义代码排查
- 逐个禁用第三方扩展:执行
bin/magento module:status列出所有扩展,通过bin/magento module:disable [扩展名]禁用非核心扩展,每次禁用后测试站点速度,定位导致卡顿的问题扩展 - 检查自定义代码:排查
app/code下的自定义模块,是否存在耗时的循环逻辑、未优化的数据库查询或远程调用
内容的提问来源于stack exchange,提问作者Danny
相关产品推荐
相关产品推荐

