strace – Linux syscall tracer

# Podstawowa diagnostyka
strace -ff -s 1000 skrypt
strace -ff -s 1000 -p PID

# Przydatne przełączniki
-ff – debuguj również wszystkie procesy-dzieci
-s – definiuje długość stringa zwracanego na ekran, optymalne to 1000 (-s 1000)
-e – pokazuje tylko jeden rodzaj wywołania systemowego (-e execve)
-p – podpięcie strace do działającej aplikacji po PID (-p numer_pid)
* do znalezienia PID rodzica przyda się ps auxf które wyświetla drzewo procesów
-o – plik wyjściowy, zapisz logi do pliku a nie na ekran

# Śledzenie czasu wykonania
-T – wypisuje na końcu każdej linii czas wykonania w sekundach dane wywołanie systemowe
-t – wyświetla na początku informację o której godzinie zaczęło się dane wywołanie
Poziom zagłębienia:
-t – dokładność do sekund
-tt – dokładność do mikrosekund [zalecane]
-ttt – jeszcze większa dokładność

# Debugowanie web serwera
Ruch przychodzący w przypadku web serwerów zarówno nginx jak i apache obsługują workery, czyli dzieci procesu głównego. W przypadku nginx domyślnie jest jeden worker, natomiast w przypadku apache tych workerów jest już kilka. Do tego one co jakiś czas się rodzą na nowo. W przypadku diagnostyki może być problem, ponieważ w międzyczasie proces nam się może ubić.

Rozwiązaniem jest wymuszenie ponownego narodzenia wszystkich dzieci. Do zabijania służy polecenie kill z odpowiednimi przełącznikami.

kill -HUP PID_rodzica – zabij dzieci i narodź na nowo
kill -USR1 PID_rodzica – potrzebuje zabić dzieci, ale niech one na spokojnie skończą swoje działanie (może trwać dłużej)

Jeżeli podepniemy się strace pod pid rodzica, a następnie zrobimy HUPa, wówczas będziemy śledzić wszystkie nowonarodzone procesy-dzieci.

W celu świadczenia usług na najwyższym poziomie stosujemy pliki cookies, które będą zamieszczane w Państwa urządzeniu (komputerze, laptopie, smartfonie). W każdym momencie mogą Państwo dokonać zmiany ustawień Państwa przeglądarki internetowej i wyłączyć opcję zapisu plików cookies. View more
Zaakceptuj