Недавно я играл с Django на платформе Jython и хотел увидеть его производительность в "производстве". Сайт, на котором я тестировался, был просто простым представлением return HttpResponse("Time %.2f" % time.time())
, поэтому никакой базы данных не было.
Я попробовал следующие две комбинации (измерения, выполненные с помощью ab -c15 -n500 -k <url>
, все в Ubuntu Server 10.10 на VirtualBox):
-
Сервер приложений J2EE (Tomcat/Glassfish), развернутый WAR файл
Я получаю результаты вроде
Requests per second: 143.50 [#/sec] (mean) [...] Percentage of the requests served within a certain time (ms) 50% 16 66% 16 75% 16 80% 16 90% 31 95% 31 98% 641 99% 3219 100% 3219 (longest request)
Очевидно, что сервер зависает несколько секунд один раз, что неприемлемо. Я предполагаю, что это связано с перезагрузкой Jython, потому что запуск оболочки
jython
занимает около 3 секунд. -
AJP, использующий патч-пакет (+ Apache как интерфейс)
Примечание: flup - это пакет, используемый
manage.py runfcgi
, мне пришлось его исправлять, потому что поддержка потоков flipping threading/forking, похоже, не работает на Jython (- > AJP был единственным рабочим методом).Почти такие же результаты здесь, но иногда на последние 100 запросов даже не получают ответа вообще (но серверный процесс все еще жив).
Я спрашиваю об этом на SO (вместо serverfault), потому что он очень специфичен для Django/Jython. Есть ли у кого-нибудь опыт развертывания сайтов Django на Jython? Возможно ли еще один (более быстрый) способ обслуживания сайта? Или еще слишком рано использовать Django на платформе Java?