【问题标题】:HTTP proxy servlet is so slowHTTP 代理 servlet 太慢了
【发布时间】:2011-12-28 05:17:15
【问题描述】:

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

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

这是为什么呢?以前有人遇到过缓慢的 HTTP 代理情况吗?

【问题讨论】:

    标签: python http servlets proxy jetty


    【解决方案1】:

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

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

    【讨论】:

      【解决方案2】:

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

      我猜你正在使用同一台服务器来接受来自外部的作业并通过 HTTP 协议将它们委托给 B 和 C。


      诊断路径

      1. D 外
      2. D 到 A-代理 D 转发到 A
      3. A 到 B-A 将工作委托给 B

      同步外部计算机,A 和 D 完美(使用 NTP)并记下这些时间:

      1. 在请求 D 之前和之后立即在外部计算机上打印时间
      2. 从 D 的 Jetty 访问日志中,记下您的请求时间
      3. A 执行 do_get() 后立即在 A 上打印时间
      4. 在 A 收到 B 的结果后在 A 上打印时间

      请张贴#1、#2-#3 和#3-#4 的延迟,以便更好地诊断延迟发生的位置。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2016-02-14
        • 2015-08-02
        • 2018-11-19
        • 1970-01-01
        • 2017-08-18
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多