Stanisław P.

Stanisław P. Software designer

Temat: Monitorowanie fork()-ów

Witam,
Mam taki problem - w pewnym momencie jeden z serwerów zaczął spawnować nowe procesy z jakiegoś powodu. Wygląda to mniej więcej tak:


Obrazek


Czy jest jakiś sposób żeby sprawdzić co dokładnie forkuje te procesy? Coś jak strace który działa na całym systemie? W sumie potrzebuję tylko pid, ppid i pewnie ich cmdline'y.

konto usunięte

Temat: Monitorowanie fork()-ów

Stanisław Pitucha:
Czy jest jakiś sposób żeby sprawdzić co dokładnie forkuje te procesy? Coś jak strace który działa na całym systemie? W sumie potrzebuję tylko pid, ppid i pewnie ich cmdline'y.

strace -p ?
Stanisław P.

Stanisław P. Software designer

Temat: Monitorowanie fork()-ów

Krzysztof Pułapa:
Stanisław Pitucha:
Coś jak strace który działa na całym systemie?

strace -p ?

To nie działa na całym systemie tylko na konkretnym pidzie. Ze względu na to że mamy dużo krótkich procesów (50 forków/s to norma) nie jestem w stanie sprawdzić sprawdzić każdego procesu osobno.

Powiedzmy, że z jednego procesu spawnuje się 20/s które są ok, a potem dostajemy jeden który zachowuje się dziwnie... Nie wiem ani do którego procesu się przyłączyć, ani na którym poziomie forków od niego coś może być zepsute :/

Potrzebuję czegoś co naprawdę poda mi forki z całego systemu w real-time.

konto usunięte

Temat: Monitorowanie fork()-ów

Potrzebuję czegoś co naprawdę poda mi forki z całego systemu w real-time.

Tak na szybko, bez testowania:

strace -fF -p 1

To powinno pokazac wszystkie nowo startujace procesy. PID takiego procesu dostajesz w "si_pid" i mozesz w petli odpalac kolejne strace. Takie to troche nieporadne, ale moze pomoze ;)
Stanisław P.

Stanisław P. Software designer

Temat: Monitorowanie fork()-ów

Łukasz S.:
Potrzebuję czegoś co naprawdę poda mi forki z całego systemu w real-time.

Tak na szybko, bez testowania:

strace -fF -p 1

To powinno pokazac wszystkie nowo startujace procesy.
Prawie - to pokaże wszystkie nowe dzieci init'a. Czyli w żywym systemie nie powinno takich w sumie być.
Tak - można się bawić i próbować to przyłączyć do jakiegoś konkretniejszego procesu (np. do kolejnych forków daemontools'a), ale to trochę nie tak chyba powinno wyglądać... Pojawiają się problemy takie jak napisałem wyżej.

Także z mana strace - "children may run uncontrolled for a while" co generalnie niszczy cały koncept...

Jakieś inne propozycje?Stanisław Pitucha edytował(a) ten post dnia 13.09.10 o godzinie 17:09

Temat: Monitorowanie fork()-ów

na szybko ? puść w pętli ps-a i diffuj ;]. patch na kernela grsecurity obsługiwał monitorowanie tego i jak dobrze pamiętam miał ficzera który nie pozwalał procesowi za dużo forkować.

Albo po prostu popatrz które procesy w systemie są "nowe"
Radosław Bułat

Radosław Bułat Ruby on Rails
developer,
Adtaily.com

Temat: Monitorowanie fork()-ów

Jeśli to apache to popatrz także w error.log. Miałem taką sytuację, że apache forkował, ale z jakiegoś powodu proces zdychał i apache na nowo tworzył dzieciaka. Zdaje się wtedy przekroczone były jakieś limity systemowe, a wskazówkę znalazłem właśnie w error logu.
Stanisław P.

Stanisław P. Software designer

Temat: Monitorowanie fork()-ów

Radosław Bułat:
Jeśli to apache to popatrz także w error.log. Miałem taką sytuację, że apache forkował, ale z jakiegoś powodu proces zdychał i apache na nowo tworzył dzieciaka. Zdaje się wtedy przekroczone były jakieś limity systemowe, a wskazówkę znalazłem właśnie w error logu.

Heh - z apachem byłoby dużo prościej. Tutaj jest to jeden z dwudziestu-kilku małych skryptów zapewne.
Niestety jeden z lokalnych developerów jest bardzo... fork-happy :)

konto usunięte

Temat: Monitorowanie fork()-ów

Stanisław Pitucha:
Czy jest jakiś sposób żeby sprawdzić co dokładnie forkuje te procesy? Coś jak strace który działa na całym systemie? W sumie potrzebuję tylko pid, ppid i pewnie ich cmdline'y.

Spróbuj auditd.

Coś w rodzaju:

-a entry,always -S fork -S vfork -S clone

Pozdrawiam

Edit: zapomniałem o cloneRafał B. edytował(a) ten post dnia 15.09.10 o godzinie 03:12
Stanisław P.

Stanisław P. Software designer

Temat: Monitorowanie fork()-ów

Ciekawe - `auditd` mi się podoba :)
Dzięki.Stanisław Pitucha edytował(a) ten post dnia 15.09.10 o godzinie 14:34

konto usunięte

Temat: Monitorowanie fork()-ów

Jeśli to Linux, to wepnij się SystemTapem do do_fork(), przykłady znajdziesz choćby tu: http://sourceware.org/systemtap/wiki/systemtapstarters

Solarisowy DTrace też powinien dać radę (jeśli nie da, to niech mnie ktoś poprawi).

Następna dyskusja:

Monitorowanie serwerów




Wyślij zaproszenie do