
¿Hay algún beneficio o ganancia de rendimiento cuando se usa keepalive
en un upstream que usa un socket UNIX como servidor, por ejemplo:
upstream test {
server unix:/tmp/test.sock;
keepalive 60;
}
server {
listen 80 default_server;
listen [::]:80 default_server;
server_name _;
location / {
proxy_pass http://test;
proxy_http_version 1.1;
proxy_redirect off;
proxy_set_header Host $http_host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Real-IP $remote_addr;
}
}
Según tengo entendido, cuando se utiliza un socket UNIX, no hay un protocolo de enlace TCP de tres vías, por lo que el keepalive 60;
del ejemplo no se aplica, ¿es correcto?
Respuesta1
Los sockets UNIX siguen siendo conexiones, por lo quenginx mantener vivoes un caché de estos, y no importa lo que suceda en los niveles inferiores.
keepalive aquí no es lo mismo que muchas otras herramientas/servicios donde implica que se envía/recibe algo para mantener la conexión.