tutorial sockets fastcgi scgi

sockets - tutorial - FastCGI en puerto vs. en socket



fastcgi php iis (2)

Estaba configurando Django en Cherokee hoy (usando SCGI), y noté que los documentos de Django dicen que puedes usar una combinación de host / puerto o un socket para la comunicación entre el servidor web y Django.

Lo único que tienen que decir al respecto es

Lo que elijas es una forma de preferencia; un socket TCP suele ser más fácil debido a problemas de permisos.

(Por cierto, he tenido problemas de permisos al hacer esto con un socket, pero no con un host :). )

Recuerdo vagamente cómo funcionan los sockets de mi clase de programación de sistemas, pero estoy realmente curioso sobre cuál es la diferencia efectiva entre los dos. Cada vez que hay una opción de algo, hay alguien que tiene una opinión sobre el tema, así que esperaba conseguir eso. En particular, ¿hay alguna diferencia de rendimiento?

O, si realmente no importa en absoluto, solo me gustaría un poco de confirmación, así puedo continuar con mi programación e ignorar estas cosas del administrador de sistemas.


Creo que la diferencia real es que si tiene una tasa de conexión realmente alta con conexiones de corta duración, puede quedarse sin puertos porque los puertos usados ​​terminan en el estado TIME_WAIT por un tiempo con TCP. No es así con sockets con nombre.

Usaré un socket con nombre para conexiones locales si sé que solo será utilizado por el host local. Pero para este uso ... sí, realmente no importará. No es sabio rendimiento o de otra manera. Es fácil cambiar más tarde si cambias de opinión. Solo asegúrate de proteger el puerto TCP si usas esa opción.

Y de nuevo, un socket TCP es también un socket.


Un socket UNIX se administra como un archivo en el sistema de archivos. Debe establecer los valores y permisos de usuario / grupo correctamente. También tiene que estar en cualquier jailroot que esté utilizando (un error común cuando se usa postfix + mysql).

No es necesario que lo haga para un socket TCP, siempre que se vincule a un puerto> 1000.

Un socket UNIX puede considerarse un poco más rápido, ya que no tiene un protocolo de red y, por lo tanto, omite la pila de red, pero está limitado a una sola máquina. Por otro lado, TCP le permite conectarse a servicios que se ejecutan en diferentes hosts.