套接字在 AWS EC2 上花费了太多时间后连接 (t3a.small)
Sockets taking too much time to connect after sometime on AWS EC2 (t3a.small)
我已经在 Amazon EC2 t3a.small
实例上部署了 ws
个套接字。当我 start/restarts 插座时,它在一段时间内工作得很好。但是几分钟后,当我尝试连接到套接字时,连接时间超过一分钟,有时会触发超时。
所以我将实例更改为 t3a.medium
,现在它运行良好。即使在几个小时后,我也没有看到 connecting/timeout 到套接字有任何延迟。
当我检查这两个实例的性能时,RAM/CAPU 使用率并不高。 RAM 使用率约为 300mb,并且两个内核的使用率也未达到 100% CPU。所以我不确定可能是什么问题。
我认为更新实例类型不是正确且可扩展的解决方案,随着流量的增加,我认为我会面临同样的问题?
我想知道瓶颈是什么,我需要在可扩展的 EC2 中设置什么配置?
更新:
看来实例大小不是问题。即使将其更改为 t3a.medium 一段时间后它也会变慢。所以弄清楚可能是什么问题。
显然 Apache2 设置存在问题,它允许最多 150 个并发连接。
所以我调整了 Apache httpd 以允许更多并发连接。
<IfModule mpm_event_module>
StartServers 10
MinSpareThreads 25
MaxSpareThreads 750
ThreadLimit 1000
ThreadsPerChild 750
# MaxRequestWorkers aka MaxClients => ServerLimit *ThreadsPerChild
MaxRequestWorkers 15000
MaxConnectionsPerChild 0
ServerLimit 20
ThreadStackSize 524288
</IfModule>
请注意,您可能还需要更改 OS 的最大打开文件数。在 Ubuntu 中默认为 1024。将其设置为最大 (65536)
我已经在 Amazon EC2 t3a.small
实例上部署了 ws
个套接字。当我 start/restarts 插座时,它在一段时间内工作得很好。但是几分钟后,当我尝试连接到套接字时,连接时间超过一分钟,有时会触发超时。
所以我将实例更改为 t3a.medium
,现在它运行良好。即使在几个小时后,我也没有看到 connecting/timeout 到套接字有任何延迟。
当我检查这两个实例的性能时,RAM/CAPU 使用率并不高。 RAM 使用率约为 300mb,并且两个内核的使用率也未达到 100% CPU。所以我不确定可能是什么问题。
我认为更新实例类型不是正确且可扩展的解决方案,随着流量的增加,我认为我会面临同样的问题?
我想知道瓶颈是什么,我需要在可扩展的 EC2 中设置什么配置?
更新:
看来实例大小不是问题。即使将其更改为 t3a.medium 一段时间后它也会变慢。所以弄清楚可能是什么问题。
显然 Apache2 设置存在问题,它允许最多 150 个并发连接。
所以我调整了 Apache httpd 以允许更多并发连接。
<IfModule mpm_event_module>
StartServers 10
MinSpareThreads 25
MaxSpareThreads 750
ThreadLimit 1000
ThreadsPerChild 750
# MaxRequestWorkers aka MaxClients => ServerLimit *ThreadsPerChild
MaxRequestWorkers 15000
MaxConnectionsPerChild 0
ServerLimit 20
ThreadStackSize 524288
</IfModule>
请注意,您可能还需要更改 OS 的最大打开文件数。在 Ubuntu 中默认为 1024。将其设置为最大 (65536)