Quería probar python27 en appengine, así que he migrado mi aplicación desde python25. ¡El rendimiento obtuvo más de 2 veces más lento por cada solicitud! Luego volví a Python25 y el rendimiento vuelve a ser como antes. Aquí está una foto:Appengine, degradación del rendimiento con python27
(milisegundos/petición) (CGI manejador pitón 27, entonces Python25)
Mi aplicación utiliza Werkzeug, Jinja2 y Memcache se utiliza bastante pesada. ¿Qué razones pueden causar una disminución tan dramática en el rendimiento? ¿O es solo porque python2.7 en appengine todavía está en beta?
Algunos detalles acerca de la aplicación:
es bastante simple tienda online. Hay algunas tareas diferidas con generación de pdf, sin embargo, esto no afecta mucho al gráfico en general, ya que la página principal recibe la mayoría de los resultados. Casi todo está memcached. Se tarda hasta ~ 0,8 segundos con la memoria caché vacía para cargar una página con Python 2.5. Las páginas no almacenadas en caché tardan en cargarse principalmente porque hay muchas consultas de db. Las páginas en caché se cargan en 60 ~ 100 ms. El tiempo de carga promedio es ~ 150 ms. Con el rendimiento de Python 2.7 es terrible. Las páginas que no están en la memoria caché tardan más de 2 segundos en cargarse. Las páginas en caché se cargan en más de 200 ms.
Lamentablemente no tengo ningún perfil de datos y no puedo decir qué es exactamente lo que ralentiza las cosas en Python 2.7.
Mis números para el tiempo de carga de la página se recopilan de la página en vivo que sirve ~ 10 req/seg y 1 instancia residente de python25 se ocupa fácilmente de esta carga.
También he probado python 2.7 con wsgi y threadsafe:yes
, pero el rendimiento mejoró un poco en comparación con python 2.7 y cgi.
no tengo cualquier idea de por qué sería tan lento, pero podrían estar probando sacar un montón de cosas ya que python27 todavía es experimental en el motor de aplicaciones. – bigblind
No nos ha dicho nada sobre su aplicación ni sobre lo que hace, ni sobre los pasos que ha dado para diagnosticar. ¿Cómo podríamos saber cuál podría ser el problema? –
estoy viendo lo mismo. Uno de los cuellos de botella que identifiqué fue que las llamadas a API de Memcache fueron más lentas en cuanto a las solicitudes que estaba evaluando, pero no me sorprendería si fuera por cada llamada de API. –