首页 文章

慢客户端期间的Google负载均衡器行为

提问于
浏览
1

Scenario setup
1.假设我有一个在谷歌计算机上运行的tomcat . 我有一个简单的hello world servlet,如下所示

1. public void doGet(HttpServletRequest req, HttpServletResponse res)
2.  throws ServletException, IOException {
3.  sysout("request IN")
4.  PrintWriter out = res.getWriter().println(VERY_LONG_JSON_200KB);
5.  sysout("request OUT")
6. }

Cases:

现在如果我直接使用机器ip命中这个servlet,使用一个非常慢的客户端(2 KB下载速度)
我在tomcat中的工作线程将在 println(VERY_LONG_JSON_200KB); 行停留约100秒 . 因为 VERY_LONG_JSON_200KB 不适合套接字缓冲区而线程要等待 .

在这种情况下,由于客户端连接速度慢,我的tomcat线程卡住了 .

NOW

而不是直接连接到tomcat机器的ip . 我在tomcat前添加了一个Google负载均衡器 .
现在使用慢客户端,我通过负载均衡器连接到tomcat .
现在 println 行在 1 ms 中执行 .

这意味着load Balancer会快速消耗tomcat的响应,然后将其提供给客户端 . 这很好,因为我的tomcat线程没有卡住 .

Question 现在出现的问题是,负载均衡器会有多少请求快速消耗并按照客户端的速度运行 .

例如:假设1000个并发慢速客户端进来,Google负载均衡器将为所有1000个请求快速消耗来自tomcat的响应 .

1 回答

  • 0

    正如您可以在此处阅读[1]:“(...)它支持每秒1百万次查询,具有始终如一的高性能和低延迟 . ”

    所以,是的,Google Cloud Load Balancer将能够快速请求tomcat后端的响应速度高达每秒100万个请求 .

    [1] https://cloud.google.com/load-balancing/

相关问题