2011-12-28 102 views
0

讓我先描述一下我的工作環境。我是一名大學生。我的實驗室有四臺機器,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將被定向到我的Python服務。HTTP代理servlet太慢了

現在,問題是我發現代理servlet很慢。通常機器B(集羣計算)上的實際處理時間僅爲0.5秒,但結果需要5秒才能在我的瀏覽器上進行響應和顯示。

這是爲什麼?有沒有人面對過慢的HTTP代理情況?

回答

0

這似乎很慢,我的第一個想法是,這個servlet在做什麼?你有源嗎?

接下來想到的是,Jetty顯然提供了自己的ProxyServlet。也許他們做得更好。也許你應該嘗試一下。

0

你說機器A有一個「Python HTTP服務器」。它是基於BaseHTTPServer的處理程序嗎?它一次只能處理一個請求:所以排除任何等待問題

我想你正在使用同一臺服務器來接受來自外部的作業,並將它們委託給B和C over HTTP協議。


要診斷的路徑

  1. 外轉d
  2. d至A-代理d轉發到
  3. A到B-A代表工作到B

同步外部計算機,A和D 完美(與NTP)並注意這些時間:

  1. 打印之前和d的碼頭訪問日誌請求d
  2. 後外側計算機上的時間,只要一瓶坯注意您的要求
  3. 打印在時間的時間do_get()
  4. 打印A接收從乙

結果後不要從#1後的延遲A上的時間,#2-#3和#3-#4更好地診斷其中延遲發生。