如何对 EC2 实例上托管的网站的连接缓慢问题进行排查?
上次更新日期:2020 年 12 月 7 日
我正在我的 Amazon Elastic Compute Cloud (Amazon EC2) 实例上运行公共网站。与我的网站的连接速度很慢。如何解决此问题?
简短描述
过度使用实例资源可能会导致实例上托管的网站的连接速度缓慢。检查以下内容以确保您没有过度利用实例的资源:
- 检查实例的系统日志了解是否存在内存已耗尽或磁盘已满错误。
- 确保实例的系统日志指示 Web 服务正确启动并正在运行。
- 确保实例处于 CPU 利用率限制之内
- 确保附加到实例的 Amazon Elastic Block Store (Amazon EBS) 卷没有达到 IOPS 或吞吐量限制。
解决方法
检查实例的系统日志了解是否存在内存已耗尽或磁盘已满错误
- 检查实例的系统日志是否存在“Out of memory: kill process”(内存耗尽:终止进程)等错误。
- 检查实例的系统日志是否存在诸如“oom-killer”、“分流失败”之类的错误或其他内存不足错误。有关更多信息,请参阅如何为在 Amazon EC2 Linux 实例上运行的 Apache Web 服务器优化内存分配?
- 检查实例屏幕截图有无错误。
注意:如果你使用的是 docker 容器、croups 等,您可能会发现内存耗尽或其他内存不足错误。这些错误可能是您的配置故意造成的。
确保实例的系统日志指示 Web 服务正确启动并正在运行
重新启动实例并检查您的 Web 服务是否正常启动或查找可能阻止重启的任何错误。
确保实例处于 CPU 利用率限制之内
查看 CloudWatch 指标表中的 NetworkIn 和 NetworkOut 实例指标。
对于 T2 或 T3 实例,请检查 CloudWatch 指标表中的 CPU 积分指标,以确定 CPU 积分是否等于或接近零。如果 CPU 积分为零,CPUUtilization 指标在实例的基线性能处显示饱和稳定状态。基准性能可能是 20%、40% 等等,具体取决于实例类型。
有关解决此问题的信息,请参阅我的 EC2 Linux 实例因资源过度使用而未通过实例检查。如何排查此问题?
确保附加到实例的 Amazon Elastic Block Store (Amazon EBS) 卷没有达到 IOPS 或吞吐量限制
验证您的 EBS 卷没有达到 IOPS 限制。 如果您的卷达到了其 IOPS 限制,延迟会提高,从而对您的网站造成负面影响。有关优化卷性能的信息,请参阅如何优化 Amazon EBS 预配置 IOPS 卷的性能?
如果您使用的是 GP2 卷,则检查并确认您的卷尚未耗尽突发积分。