当使用AWS连接到AWS时,似乎出现了明显的延迟。
在启动服务以使用消息时,这并不重要,因为在第一个连接延迟3-7秒之后,消息开始以良好的速度流动-
但是,当发布消息时,这是一个大问题。例如,由于与AWS的连接正在等待发布消息,用户web请求需要几秒钟才能完成。这违背了发送消息的目的,以便将等待时间推迟到后台作业。
这是DNS解决的问题吗?联网?或者是AWS SQS设置?我的web应用程序并不在AWS网络中,也不确定这是否是一个问题。
简单地发布消息代码:
$aws = \Aws\Common\Aws::factory(/* array with connection settings */);
$client = $aws->get('Sqs');
$queue = $client->getQueueUrl(['QueueName' => $queue]);
// This takes 3 - 5 seconds every time its called.
$res = $this->client->sendMessage([
'QueueUrl' => $queue['QueueUrl'],
'MessageBody' => json_encode($request)
]);
发布于 2015-07-22 02:07:24
在我们使用期间,SQS显示了非常低的延迟。但是,我们的逻辑运行在EC2实例上。
很可能,服务器和SQS之间存在显著的延迟。要么在靠近服务器的区域使用SQS,要么将应用程序的逻辑移动到EC2或Lambda。
我建议在进行迁移之前编写一个简单的测试应用程序,以排除业务逻辑中的问题。
发布于 2017-05-18 10:17:41
帮助我减少SQS延迟的一个技巧是直接使用队列URL,而不是从API构建它。另外,使用http而不是https将显著降低延迟。对我来说,这几乎是20毫秒的冲击。
当然,您可以在安全性和可移植性之间进行权衡,但如果性能比性能更受关注,可能会有所帮助。
发布于 2020-06-10 15:09:47
通过引入用于SQS服务的VPC,您可以减少延迟问题和任何与连接相关的问题,因为AWS内部使用AWS PrivateLink或简单地说AWS内部网络骨干来建立VPC和SQS中实例之间的连接和数据传输,而不是使用传统的internet。它也很容易设置,而不是一个破坏性的更改,因为它只是将像sqs.eu-central-1.amazonaws.com
这样的SQS端点的DNS名称解析为私有IP。如果由于配置更改或其他原因导致私有链接出现问题,AWS将自动解决通常的公共IP (使用internet)。
您可以在这里找到更多详细信息:AWS SQS服务端点
https://stackoverflow.com/questions/31552414
复制相似问题