HTTP-сервлет работает медленно - PullRequest
0 голосов
/ 28 декабря 2011

Позвольте мне сначала описать мою рабочую среду. Я студент университета. В моей лаборатории четыре машины, A, B, C и D, соединенные Ethernet 1 Гбит / с. У меня есть система кластеризации, которая использует B и C в качестве вычислительных рабов. Эта кластерная вычислительная система имеет сервер Python HTTP, работающий на компьютере A. Я хочу предоставить этот сервер Python HTTP другим людям за пределами кампуса. Хорошо, что в моей лаборатории уже установлен сервер Jetty, работающий на компьютере D. До этого сервера Jetty можно добраться за пределами кампуса. Поэтому я настроил сервлет прокси HTTP на компьютере A. Я использую этот скачанный с http://www.servletsuite.com/servlets/httpproxy.htm. Любой запрос, отправляемый на этот сервлет, будет направлен в мой сервис Python.

Теперь вопрос в том, что я считаю, что прокси-сервлет работает довольно медленно. Обычно фактическое время обработки на компьютере B (кластеризация вычислений) составляет всего 0,5 секунды, но для ответа и отображения в моем браузере требуется 5 секунд.

Почему это? Кто-нибудь сталкивался с медленной HTTP прокси-ситуацией раньше?

Ответы [ 2 ]

0 голосов
/ 28 декабря 2011

Вы говорите, что на машине А есть "Python HTTP сервер".Это обработчик, основанный на BaseHTTPServer?Он может обрабатывать только один запрос за раз: исключите любые проблемы с ожиданием .

Я полагаю, что вы используете один и тот же сервер, чтобы принимать задания извне и делегировать их B и C. по протоколу HTTP.


Для диагностики путей

  1. За пределами D
  2. D для A- прокси-сервер D пересылает в A
  3. A в B- A, делегирует работу B

Синхронизируйте снаружикомпьютер, A и D отлично (с NTP) и запишите следующее время:

  1. напечатайте время на внешнем компьютере непосредственно перед и после запроса D
  2. в журналах доступа Jetty D запишите время вашего запроса
  3. выведите время на A, как только A preforms do_get ()
  4. выведите время на A после того, как A получит результаты от B

Опубликуйте задержки от # 1, # 2- # 3 и # 3- # 4, чтобы лучше диагностировать, где происходит задержка.

0 голосов
/ 28 декабря 2011

Это кажется довольно медленным, и моя первая мысль: что делает этот сервлет? У вас есть источник?

Следующая мысль заключается в том, что Jetty, по-видимому, предоставляет ProxyServlet своего собственного. Возможно, они сделали лучшую работу. Возможно, вам стоит попробовать это вместо этого.

...