Elastic Beanstalk、Nginx-lua、微应用的延迟问题

在使用负载均衡器的EB上,当我使用一组微应用时遇到了延迟问题。这个问题专门针对一个由nginx提供支持的应用程序,尝试在ELB上访问另一个应用程序。如果我们使用postman访问API,它很快,但通过nginx-lua发布到端点相对非常慢。

出于安全目的,我的请求被nginx-lua(openresty)进行代理传递,同时nginx进行了重写。例如(更改路径和变量名)

location /api
{
     proxy_set_header    Authorization   $token;
     rewrite             /api/(.*) /ipa/$1 break;
     proxy_pass  $elb_api_cname;
}

似乎对于特定API的前几个请求(我们有几个),都有很多延迟,接着会在随后请求短暂地下降。

这些开发实例的流量不多。当我们将被lua设置的proxy_pass变量更改为EC2实例的直接IP时,速度几乎是4-10倍快(300ms持续相对于1-5s)。

我认为这与nginx在启动时缓存IP以及ELB在获得一定量的流量与没有流量时更改IP有关。

点赞
用户3245998
用户3245998

所以问题最终是我们可以通过更新解析器来解决的。

在 location 块中,我们指定了亚马逊 DNS 服务的解析器,同时保持其他解析器不变,以便用于一些内部代理设备。

现在,这给了我们预期的速度。

2018-05-21 15:54:01