GNU/Linux >> Linux Esercitazione >  >> Linux

L'esecuzione di lsof -i mostra molte connessioni in CLOSE_WAIT ? Dovrei preoccuparmi

(Stavo per modificare la risposta di mikegrb, ma ho deciso che la stavo massacrando un po' troppo)

CLOSE_WAIT significa praticamente esattamente quello che dice:il kernel sta aspettando che il processo locale chiuda il suo descrittore di file prima di rimuovere la voce. La connessione TCP è stata completamente interrotta e l'estremità opposta potrebbe avere l'impressione che la connessione sia finita, ma la tua estremità si sta aggrappando alle cose.

L'unica preoccupazione è che molte voci CLOSE_WAIT consumano la memoria del kernel e le voci della tabella dei descrittori di file, il che può essere un problema se ce ne sono grandi quantità. Se le voci che stai guardando sono transitorie, probabilmente è solo che stai scorrendo molto delle connessioni TCP e ne vedi una piccola parte nel breve lasso di tempo tra la chiusura della connessione e il processo che arriva alla chiusura del descrittore di file. D'altra parte, se sono permanenti (le porte e gli indirizzi IP non cambiano nel tempo), allora qualcosa sta perdendo descrittori e deve essere riparato in modo che chiuda sempre i suoi fds quando ha finito con loro. Come ha detto mikegrb, una versione più recente potrebbe aver già risolto il problema, quindi è probabilmente giustificata una domanda sulla mailing list pertinente o l'esame dei log delle modifiche.


Lo stato CLOSE_WAIT indica che l'altra estremità ha inviato un segmento FIN per chiudere la connessione. La connessione è ancora stabilita. È in una modalità che potresti pensare come half duplex, consentendo a questa estremità di svuotare qualsiasi buffer, inviando gli ultimi bit di dati alla fine richiedendo che la connessione venga chiusa prima di chiuderla da questa estremità.

Se hai molte connessioni che rimangono in CLOSE_WAIT significa che il processo responsabile non sta chiudendo il socket una volta entrato in CLOSE_WAIT. Potresti utilizzare tcpdump o altri strumenti di acquisizione del traffico di rete per esaminare i pacchetti.

Dai anche un'occhiata al processo responsabile. Per curiosità qual è il processo responsabile? Potrebbe essere disponibile una versione corretta più recente o forse è il momento di presentare una segnalazione di bug;)


Linux
  1. Come rimuovo una connessione socket CLOSE_WAIT

  2. Esame di più porte durante l'esecuzione di NetCat (nc)

  3. Connessione di inoltro PuTTY, CygwinX e X11 rifiutata

  4. Come ottengo solo il PID, senza alcuna informazione aggiuntiva, di un processo in esecuzione sulla porta 3000?

  5. Con quale utente dovrebbero essere eseguiti NGinx e PHP?

Comando dello schermo Linux:mantieni i processi in esecuzione nonostante una connessione interrotta

Linux:nessuno spazio rimasto sul dispositivo mentre il comando df mostra molto spazio libero

Esecuzione di notify-send come root

Elenca la scheda cron attualmente in esecuzione e interrompila

Con quale utente devono essere eseguiti apache e PHP? Quali autorizzazioni devono avere i file /var/www?

Determinare a che ora è stata creata una connessione TCP attualmente aperta?