He querido rescatar este tema, porque he encontrado información útil al respecto. Investigando otros temas, volvió a aparecer este “problema”. Cuando miramos los mensajes del anfitrión, vemos lo siguiente:
# cat /var/log/messages | grep ’socket’
[...]
Apr 20 20:46:32 hn248 kernel: Orphaned socket dropped (156,624 in CT248)
[...]
Se puede decir que, las causas de la aparición de este aviso, que no problema están claras.
- El número de sockets huérfanos en una VE es >= 1/4 * (numtcpsock.barrier)
- El número de sockets huérfanos en una VE es > (sysctl net.ipv4.tcp_max_orphans)
La regla uno dice que, si el número de sockets huérfanos es mayor o igual que la cuarta parte del numtcpsock.barrier asignado a una VE, nos informará de esta situación. La dos, explica que si el total de sockets huérfanos es mayor que el valor configurado en el sysctl, actuará igual.
¿Pero es realmente un “problema”? Según lo que he leído en los foros de OpenVZ, no.Voy a citarlo literalmente:
“Un socket huérfano es algo así como una sesión fantasma. No está cerrada correctamente que, sin embargo, puede contener data o por otras razones, no puede ser liberada inmediatamente y debe “vivir” algún tiempo más después de su cierre. Usualmente, estos sockets aparecen porque el cliente dejó de responder(crashed).
El kernel de OpenVZ limita el número de sockets tcp que pueden acceder por VE, y si todos los sockets de una VE son huérfanos, nadie puede conectarse a esa VE. Eso es por lo que el kernel limita el número máximo de sockets huérfanos a un 1/4 del numtcpsock asignado a una VE. C
Cuando dentro de una VE se alcanza ese límite, el kernel muestra el mensaje “TCP: too many of orphaned sockets” y libera esos sockets. Ese es el comportamiento correcto y los kernel de linux suelen hacer lo mismo en algunos casos extraños.
Es por eso que, esto no es un problema, el kernel sólo informa de que tu VE ha producido sockets que no se han cerrado correctamente. Para prevenir este mensaje puedes intentar incrementar el numtcpsock para tus VE’s.
Vasily Averin”.
Links
Potser una mica off-topic, però pots fer el següent:
# cat /var/log/messages | grep ’socket’
Estalvian-te la pipe i la comanda cat, així:
# grep ’socket’ /var/log/messages