Elastic Beanstalk、Nginx-lua、微应用程序的延迟问题
Latency issue with Elastic Beanstalk, Nginx-lua, micro-apps
我 运行 在 EB 上使用负载均衡器上的一组微应用程序时遇到延迟问题。这个问题专门针对一个 nginx 驱动的应用程序试图攻击 ELB 上的另一个应用程序。如果我们使用邮递员点击 API 它很快,但是通过 nginx-lua 发送到端点相对来说非常慢。
为了安全起见,我的请求 proxy_passed 由 nginx-lua (openresty) 处理,同时在 nginx 中进行了重写。 Ex(更改路径和变量名)
location /api
{
proxy_set_header Authorization $token;
rewrite /api/(.*) /ipa/ break;
proxy_pass $elb_api_cname;
}
似乎对特定 api(我们有几个)的前几个请求似乎都有很多延迟,随后请求会短暂下降。
这些开发实例的流量不多。当我们将 lua 设置的 proxy_pass 变量更改为 EC2 实例的直接 IP 时,它几乎快了 4-10 倍(300 毫秒与 1-5 秒一致)。
我相信这与 nginx 在启动时缓存 IP 以及 ELB 在获得少量流量时更改 IP 有关)
所以这个问题最终成为我们可以通过更新解析器来解决的问题。
在位置块中,我们指定了亚马逊 DNS 服务的解析器,而我们让其他解析器保持不变以用于某些内部代理。
这给了我们预期的速度。
我 运行 在 EB 上使用负载均衡器上的一组微应用程序时遇到延迟问题。这个问题专门针对一个 nginx 驱动的应用程序试图攻击 ELB 上的另一个应用程序。如果我们使用邮递员点击 API 它很快,但是通过 nginx-lua 发送到端点相对来说非常慢。
为了安全起见,我的请求 proxy_passed 由 nginx-lua (openresty) 处理,同时在 nginx 中进行了重写。 Ex(更改路径和变量名)
location /api
{
proxy_set_header Authorization $token;
rewrite /api/(.*) /ipa/ break;
proxy_pass $elb_api_cname;
}
似乎对特定 api(我们有几个)的前几个请求似乎都有很多延迟,随后请求会短暂下降。
这些开发实例的流量不多。当我们将 lua 设置的 proxy_pass 变量更改为 EC2 实例的直接 IP 时,它几乎快了 4-10 倍(300 毫秒与 1-5 秒一致)。
我相信这与 nginx 在启动时缓存 IP 以及 ELB 在获得少量流量时更改 IP 有关)
所以这个问题最终成为我们可以通过更新解析器来解决的问题。
在位置块中,我们指定了亚马逊 DNS 服务的解析器,而我们让其他解析器保持不变以用于某些内部代理。
这给了我们预期的速度。