如何对 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 卷,则检查并确认您的卷尚未耗尽突发积分。