HTTP代理servlet太慢了

时间:2011-12-28 05:17:15

标签: python http servlets proxy jetty

让我先描述一下我的工作环境。我是大学生。我的实验室有四台机器,A,B,C和D通过1Gb / s以太网连接。我有一个集群系统,它使用B和C作为计算从属。这个集群计算系统有一个在机器A上运行的Python HTTP服务器。我想将这个Python HTTP服务器暴露给校园外的其他人。好处是我的实验室已经设置了在机器D上运行的Jetty服务器。这个码头服务器可以在校园外到达。所以我在机器A上设置了一个HTTP代理servlet。我使用从http://www.servletsuite.com/servlets/httpproxy.htm下载的这个servlet。任何进入此servlet的请求都将被定向到我的Python服务。

现在,问题是我发现代理servlet非常慢。通常机器B(群集计算)的实际处理时间仅为0.5秒,但结果需要5秒钟才能响应并显示在我的浏览器上。

为什么?有人在之前遇到过慢的HTTP代理情况吗?

2 个答案:

答案 0 :(得分:0)

这似乎很慢,我的第一个想法是,那个servlet在做什么?你有源吗?

接下来的想法是,Jetty显然提供了自己的ProxyServlet。也许他们做得更好。也许你应该尝试一下。

答案 1 :(得分:0)

你说机器A有一个“Python HTTP服务器”。它是基于BaseHTTPServer的处理程序吗?它一次只能处理一个请求:因此请排除任何等待问题

我猜您使用相同的服务器来接受来自外部的作业,并通过HTTP协议将它们委托给B和C.


诊断路径

  1. 外到D
  2. D到A-代理D转发到A
  3. A到B- A将工作委托给B
  4. 同步外部计算机,A和D 完美(使用NTP)并记下以下时间:

    1. 在请求D
    2. 之前和之后立即在外部计算机上打印时间
    3. 来自D的Jetty访问日志,记下您的请求时间
    4. 在预制件do_get()
    5. 时立即在A上打印时间
    6. 在A收到B
    7. 的结果后,在A上打印时间

      发布#1,#2-#3和#3-#4的延迟,以更好地诊断延迟发生的位置。