Jak uzyskać dziennik sieci Linux?


14

Mamy serwer Java działający w systemie Linux na określonym porcie, który przyjmuje stałe połączenia dla tysięcy użytkowników. Ostatnio nasi klienci nie mogą połączyć się z błędem przekroczenia limitu czasu. Podejrzewamy, że ruch jest zbyt duży, ale nasz dziennik Java pokazuje, że niewielu jest podłączonych w ciągu sekundy.

Podejrzewamy, że może być tak, że zbyt wielu próbuje jednocześnie i są one po prostu odrzucane na poziomie systemu operacyjnego, a zatem program Java nigdy nie ma szansy na zaakceptowanie połączenia? Czy istnieje jakiś rodzaj logowania w systemie Linux, który może pokazać, że ktoś próbuje trafić w gniazdo?

Odpowiedzi:


8

iptables -I INPUT -p tcp --dport some_port -j LOGnastępnie
tail -f /var/log/messages
, aby zobaczyć, ile danych zostało dotkniętych tą regułą: iptables -L -n -v
Lub możesz uruchomić tcpdump i grep z portów.


2
+1. Nieznaczna modyfikacja może działać lepiej złapać tylko nowe próby połączenia: iptables -I INPUT -p tcp --dport some_port -m state --state NEW. Pamiętaj, że jeśli nie jesteś zainteresowany szczegółami każdej próby połączenia, pominięcie -j LOGpozwala uniknąć spamowania pliku dziennika systemu z dużą ilością niepotrzebnych danych.
Steven poniedziałek,

3

Kiedy mam naprawdę paskudne problemy z siecią, odpalam wireshark . Dla mnie nie ma lepszego narzędzia do diagnostyki sieci, gdy muszę przejść do drobiazgowych szczegółów. I nie martw się, jeśli nie możesz zainstalować go na polu źródłowym lub docelowym; możesz uruchomić tcpdump -wzapisywanie danych pakietowych do pliku na początku i / lub punkcie końcowym, a także przesłać plik do wireshark na innym polu w dogodnym dla Ciebie czasie.


Tak, poleciłbym umieścić na nim filtr jaktcpdump -nS dst port <some port>
gravyface

0

Dobrze byłoby zobaczyć dokładnie, jakie są twoje wątki Java na poziomie gniazda. Jednocześnie chcesz skorelować to z informacjami o sieci systemu operacyjnego. Spójrz na AppFirst. Mogą robić takie rzeczy.


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

pokazuje aktualnie ustanowione połączenia.

Porównaj to z aktywnymi ulimitustawieniami i oczywiście z maksymalną liczbą połączeń obsługiwanych przez aplikację Java.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.