¿Cómo obtener un registro de red de Linux?

12

Tenemos un servidor Java que se ejecuta en Linux en un puerto específico que acepta conexiones persistentes para miles y miles de usuarios. Recientemente, nuestros clientes no pueden conectarse con un error de tiempo de espera. Sospechamos que el tráfico es demasiado alto, pero nuestro registro de Java realmente muestra que no hay muchos conectados por segundo.

Sospechamos que podría ser que muchos lo intentan al mismo tiempo y básicamente se caen al nivel del sistema operativo y, por lo tanto, el programa java nunca tiene la oportunidad de aceptar la conexión. ¿Hay algún tipo de inicio de sesión en Linux que pueda mostrar a alguien tratando de golpear un zócalo?

erotsppa
fuente

Respuestas:

7

iptables -I INPUT -p tcp --dport some_port -j LOGluego
tail -f /var/log/messages
, para ver cuántos datos se han visto afectados por esa regla: iptables -L -n -v
o podría ejecutar tcpdump y extraer los puertos.

James L
fuente
2
+1. Una ligera modificación podría funcionar mejor para coger sólo los nuevos intentos de conexión: iptables -I INPUT -p tcp --dport some_port -m state --state NEW. Tenga en cuenta que, a menos que esté interesado en los detalles de cada intento de conexión, la omisión -j LOGevita enviar spam al archivo de registro del sistema con muchos datos innecesarios.
Steven lunes
3

Cuando tengo problemas de red realmente desagradables, tiendo a encender Wirehark . Para mí, no hay mejor herramienta de diagnóstico de red cuando tengo que llegar a los detalles esenciales. Y no se preocupe si no puede instalarlo en el cuadro de origen o de destino; puede ejecutar tcpdump -wpara escribir paquetes de datos en un archivo en el inicio y / o punto final, y alimentar el archivo a wireshark en otro cuadro a su conveniencia.

MadHatter
fuente
Sí, recomendaría ponerle un filtro comotcpdump -nS dst port <some port>
gravyface
0

Sería bueno ver con precisión lo que sus hilos Java obtienen a nivel de socket. Al mismo tiempo, desearía correlacionar eso con la información de red del sistema operativo. Echa un vistazo a AppFirst. Pueden hacer este tipo de cosas.

IAPaddler
fuente
0
watch -n1 -d "netstat -an | grep ESTABLISHED | wc -l"

muestra las conexiones establecidas actualmente.

Compare esto con su ulimitconfiguración activa y, por supuesto, con la cantidad máxima de conexiones que su aplicación Java puede manejar.

sjas
fuente