7

La documentación oficial de appengine dice que si establecemos la propiedad threadsafe como verdadera en app.yaml, appengine atenderá solicitudes simultáneas.Solicitudes concurrentes en Appengine Python

enlace oficial: https://developers.google.com/appengine/docs/python/python27/newin27#Concurrent_Requests

  • Qué significa la aplicación será más rápido (de 2,5) si tenemos la propiedad multi-hilo de verdad? La documentación oficial/blog lo dice, pero estoy buscando experiencias del mundo real.

  • En highlevel, ¿cómo funciona internamente? ¿Se inicializará nuestra aplicación y generará un nuevo sitio para cada solicitud?

Respuesta

10

Solo tiene un hilo por solicitud, no puede generar.

Con threadsafe off, Appengine solo enrutará una solicitud a una instancia. Entonces, si el número de solicitudes por segundo multiplicado por el tiempo para manejar una solicitud se acerca a una, Appengine activará una nueva instancia para manejarlas. Esto cuesta dinero. Con threadsafe on, Appengine puede enrutar más de una solicitud a una instancia.

si esto le ayuda o no depende de su aplicación y su tráfico:

  1. En primer lugar, el cálculo de petición de entrada por segundo/medio de latencia. Si esto está muy por debajo de uno, el uso seguro de hilos no hará mucha diferencia de ninguna manera.
  2. Examine su aplicación para averiguar cuánto tiempo pasa esperando en API (datastore o recuperación de URL, por ejemplo). Si se trata de una gran proporción, el uso de hilos ayudará a mantener la cuenta atrás de su instancia. Si no, no ayudará mucho.

La regla simple es cambiar el hilo a salvo a menos que su aplicación requiera mucho procesamiento (poca API esperando).

+0

genial ans! Una pregunta, me parece req/ms x ms/req ~ = número de instancias activas. ¿Hay alguna referencia que describa más detalles para esta estimación? – lucemia

4
  1. Esto no quiere decir que su aplicación será más rápida, la solicitud todavía se sirve a partir de un solo hilo.
  2. Cuando la aplicación es segura para subprocesos cada instancia ahora puede generar múltiples subprocesos cada subproceso servirá una solicitud como apposed a la seguridad de subprocesos de subproceso donde cada instancia tiene un solo subproceso que sirve solicitudes.
+0

Mi aplicación es segura para subprocesos (sin estado compartido), ¿debo generar múltiples subprocesos para mejorar el rendimiento? ¿Hay algún ejemplo disponible para appengine? – 18bytes

3

Python 2.5 es aún más rápido, por solicitud, que Python 2.7. Eso se debe en parte a la madurez de cada uno. App Engine utiliza diferentes mecanismos para admitir cada uno de ellos. La victoria con Python 2.7 es su capacidad para admitir solicitudes paralelas en lugar de generar nuevas instancias a un ritmo que Python 2.5 necesitaría para manejar los picos de carga.

La pregunta "¿cómo funciona internamente?" Es una de la que probablemente no obtendrá una respuesta aquí, pero hay algunas conversaciones de Google I/O del año pasado que insinúan lo que hacemos y por qué. Busque en youtube.com "motor de aplicaciones".

0

Estoy agregando una respuesta aquí porque nuestros resultados actuales en el mundo real son los opuestos a los que esperamos.

Después de la degradación sostenida del rendimiento, tratamos de cambiar nuestra aplicación (Python) a modo NO HILOS y quedamos muy sorprendidos de ver nuestro rendimiento mejorado en aproximadamente 10x. Entonces lo dejamos. Nuestro equipo de soporte de GAE no pudo explicar cómo podría ser esto.La última vez que perfilamos, estábamos bastante vinculados al almacén de datos y, en teoría, deberíamos haber obtenido mucho impulso de la multitracción.

Por lo tanto, según nuestra experiencia ... no solo no asumimos que el hilo seguro será más rápido, podría ser MUCHO más lento. Si alguien sabe cómo podría ser esto, por favor comparte.

Cuestiones relacionadas