Come ottenere un registro di rete Linux?


14

Abbiamo un server Java in esecuzione su Linux su una porta specifica che accetta connessioni persistenti per migliaia e migliaia di utenti. Di recente i nostri clienti non sono in grado di connettersi con un errore di timeout. Sospettiamo che il traffico stia diventando troppo elevato, ma il nostro registro java in realtà mostra che non molti sono connessi al secondo.

Sospettiamo che potrebbe essere che troppi ci stiano provando allo stesso tempo e che siano praticamente abbandonati a livello di sistema operativo e quindi il programma java non abbia mai la possibilità di accettare la connessione? Esiste una sorta di log in Linux che può mostrare a qualcuno che sta cercando di colpire un socket?

Risposte:


8

iptables -I INPUT -p tcp --dport some_port -j LOGpoi
tail -f /var/log/messages
In seguito, per vedere quanti dati sono stati colpiti da quella regola: iptables -L -n -v
Oppure potresti eseguire tcpdump ed estrarre le porte.


2
+1. Una leggera modifica potrebbe funzionare meglio per catturare solo i nuovi tentativi di connessione: iptables -I INPUT -p tcp --dport some_port -m state --state NEW. Nota che, a meno che tu non sia interessato ai dettagli di ogni tentativo di connessione, l'omissione -j LOGevita lo spamming del file di registro di sistema con molti dati non necessari.
Steven lunedì

3

Quando ho problemi di rete davvero sgradevoli, tendo ad accendere WireShark . Per me, non c'è uno strumento diagnostico di rete migliore quando devo scendere ai dettagli chiacchieroni. E non preoccuparti se non puoi installarlo su una sorgente o una scatola di destinazione; è possibile eseguire tcpdump -wper scrivere i dati dei pacchetti in un file all'inizio e / o all'endpoint e alimentare il file in maniera ottimale su un'altra casella.


Sì, consiglierei di mettere un filtro su di esso cometcpdump -nS dst port <some port>
gravyface,

0

Sarebbe bello vedere esattamente cosa stanno ottenendo i tuoi thread Java a livello di socket. Allo stesso tempo, vorrai correlarlo con le informazioni di rete del sistema operativo. Dai un'occhiata a AppFirst. Possono fare questo tipo di cose.


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

mostra le connessioni attualmente stabilite.

Confronta questo con le tue ulimitimpostazioni attive e, naturalmente, con il numero massimo di connessioni che la tua app java può gestire.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.