Я хотел протестировать python27 на appengine, поэтому я перенесла свое приложение из python25. Для каждого запроса производительность превышала 2 раза медленнее! Затем я вернулся к python25, и производительность снова такая же, как и раньше. Вот изображение:
(миллисекунды/запрос) (cgi handler python 27, затем python25)
Мое приложение использует Werkzeug, Jinja2, а memcache используется довольно много. Какие причины могут привести к столь резкому снижению производительности? Или это только потому, что python2.7 на appengine все еще находится в бета-версии?
Некоторые сведения о приложении:
Это довольно простой интернет-магазин. Есть некоторые отложенные задачи с созданием pdf, однако это не влияет на общий график, потому что на первой странице попадает большинство просмотров. Почти все memcached. Для загрузки страницы с помощью python 2.5 требуется ~ 0,8 с пустого кеша. Не кэшированные страницы занимают много времени, главным образом, потому что существует много запросов db. Загрузка кешированных страниц в 60 ~ 100 мс. Среднее время загрузки ~ 150 мс. С python 2.7 производительность ужасна. Не кэшированные страницы занимают 2 + сек для загрузки. Загрузка кешированных страниц в 200+ ms.
К сожалению, у меня нет профилирующих данных, и я не могу сказать, что именно замедляет работу в python 2.7.
Мои номера для времени загрузки страницы собираются с живой страницы, которая обслуживает ~ 10 req/sec, а 1 резидентный экземпляр python25 легко справляется с этой загрузкой.
Я также тестировал python 2.7 с помощью wsgi и threadsafe:yes
, но производительность немного улучшилась по сравнению с python 2.7 и cgi.