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?

erotsppa
źródło

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.

James L.
źródło
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.

Szalony Kapelusznik
źródło
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.

IAPaddler
źródło
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.

sjas
źródło