AWS EC2 Ubuntu实例上WordPress站点出现504网关错误求助
WordPress站点返回504网关错误的故障排查与解决办法
针对你部署在AWS t2.micro实例上的WordPress站点出现的504网关超时错误,结合你的配置和实例资源情况,核心原因及解决办法如下:
一、核心故障原因
504错误本质是服务端请求超时,结合你的场景,大概率是以下几个问题:
- t2.micro实例的CPU Credits耗尽,导致性能被限制
- MySQL服务崩溃、连接数耗尽或慢查询阻塞
- Apache/PHP的资源配置不合理,无法处理请求
- WordPress插件、主题或定时任务过度消耗资源
二、针对性解决办法
1. 解决CPU Credits耗尽问题(最常见)
t2.micro是突发性能实例,CPU credits用完后会被限制到0.1vCPU的基准性能,直接导致服务响应超时:
- 临时应急:重启EC2实例,会重置CPU credits(但只是权宜之计)
- 长期修复:
- 升级实例类型到
t2.small或t3.micro(t3系列是无限性能实例,不会因credits耗尽被限制) - 给现有t2.micro实例开启CPU Credits Unlimited:在AWS控制台找到该实例,修改实例设置,启用Unlimited模式,避免性能被限制
- 升级实例类型到
2. 排查并修复MySQL异常
- 先检查MySQL状态:
sudo systemctl status mysql,如果未运行,执行sudo systemctl restart mysql重启 - 查看MySQL错误日志定位问题:
sudo tail -n 50 /var/log/mysql/error.log,常见问题包括进程崩溃、连接数满 - 调整MySQL连接数:编辑
/etc/mysql/mysql.conf.d/mysqld.cnf(Ubuntu路径),修改max_connections为100(t2.micro内存有限,别设太高),保存后重启MySQL - 优化慢查询:安装WordPress的Query Monitor插件,查看慢查询语句,禁用或优化导致慢查询的插件/主题
3. 优化Apache与PHP配置
- 检查Apache状态:
sudo systemctl status apache2,异常则重启:sudo systemctl restart apache2 - 查看Apache错误日志:
sudo tail -n 50 /var/log/apache2/error.log,排查进程耗尽、权限错误等问题 - 调整Apache进程数:编辑
/etc/apache2/mods-available/mpm_prefork.conf(默认prefork模式),设置合理参数:
保存后重启Apache:StartServers 2 MinSpareServers 2 MaxSpareServers 5 MaxRequestWorkers 20 MaxConnectionsPerChild 1000sudo systemctl restart apache2 - 提升PHP内存限制:编辑
/etc/php/[你的PHP版本]/apache2/php.ini(比如php/8.1),修改memory_limit = 256M,重启Apache生效
4. 清理WordPress冗余资源
- 排查插件/主题问题:先切换到WordPress默认主题(如Twenty Twenty-Four),逐个禁用插件,测试站点是否恢复,找到消耗资源的插件并替换或删除
- 优化定时任务:安装WP Crontrol插件,清理不必要的cron任务,或者改用系统级cron(编辑
sudo crontab -e)替代WordPress内置cron,减少资源消耗 - 启用静态缓存:安装WP Super Cache或W3 Total Cache插件,生成静态页面,降低动态请求对数据库和CPU的压力
5. 检查磁盘空间
虽然你的文件总大小不大,但仍需确认磁盘是否满:df -h,如果根目录使用率接近100%,执行以下操作清理:
- 清空日志文件:
sudo truncate -s 0 /var/log/apache2/*.log /var/log/mysql/*.log - 若长期需要,可在AWS控制台扩容EBS磁盘到16GB以上
内容的提问来源于stack exchange,提问作者vimal.roy
相关产品推荐
相关产品推荐

