2012-09-09 20 views
24

Ejecuto una aplicación de matraz en uwsgi. Yo uso el supervisor para administrar el proceso uwsgi. Encuentro el registro que dice queuwsgi: el backlog de escucha del socket del servidor está limitado a 100 conexiones

el backlog de la escucha del socket del servidor está limitado a 100 conexiones.

¿Cómo superar las 100 conexiones? Mi script en ejecución es la siguiente:

[program:myapp] 
command=uwsgi --master -s /tmp/app.sock --module myapp:app --processes 2 -H /srv/sites/mysite chmod-socket 666 --enable-threads 
+0

¿Estás seguro de que eso es lo que tienes que hacer? Si acumula un atraso de 100 conexiones, debe usar al menos aproximadamente el 99% de su capacidad, y luego aumentar el límite solo le dará un espacio de respiración extremadamente mínimo antes de que la cantidad de conexiones entrantes exceda lo que posiblemente pueda servir. Sería mucho más productivo descubrir cómo puede atender las solicitudes más rápido. –

Respuesta

30

Tenga en cuenta que un "escuchar atraso" de 100 conexiones no significa que el servidor sólo puede manejar 100 conexiones simultáneas (o total) - esto depende en cambio en el número de procesos o hilos configurados El backlog de escucha es una configuración de socket que le dice al kernel cómo limitar el número de conexiones pendientes (aún sin enganchar) en la cola de escucha de un socket de escucha. Si el número de conexiones pendientes excede el tamaño especificado, las nuevas se rechazan automáticamente. Un servidor en funcionamiento con servicio regular a sus conexiones no debería requerir un gran tamaño de registro.

Según el manual, puede cambiar el retraso escuchar con la opción -l:

-l|--listen <num> 
     set socket listen queue to <n> (default 100, maximum is system 
     dependent) 
3

Puede modificar SOMAXCONN en/proc/sys/net/core/SOMAXCONN aumentar este límite. Es simplemente sistemas de ajuste de Linux.

25

Simplemente cambiar (aumentar) la década de uwsgi escuchan atraso mediante la opción -l o --listen (como se ha señalado por user4815162342) al iniciar el servidor, a un valor mayor que 128 no permitirá uwsgi a correr. Como también hay un límite de nivel de sistema en la toma de corriente y la conexión TCP Unix escuchar cola - el valor por defecto es 128, se puede verificar que (por socket Unix):

cat /proc/sys/net/core/somaxconn 

uwsgi había sido patched, de manera que si el valor pasa a El parámetro --listen al iniciar uwsgi es mayor que el límite de nivel del sistema (límite del kernel de Linux), hará que uwsgi falle duro. Si desea establecer el límite de cola de escucha de uwsgi mayor que el límite de nivel del sistema (es decir, 128), primero debe aumentar el límite del kernel. Se puede hacer ejecutar los siguientes comandos:

$ echo 4096 > /proc/sys/net/core/somaxconn 
$ cat /proc/sys/net/core/somaxconn 
4096 

O

$ sysctl -w net.core.somaxconn=4096 

O Añadir a net.core.somaxconn=4096/etc/sysctl.conf para que se convierta en permanente (sobrevivir al reinicio).

Cuestiones relacionadas