Miroslav Lachman wrote on 25. 3. 2020 14:59:
3. chybu procesu, ktery se rozhodne se neukoncovat.

Kdyz je v systemu takhel zaseknuty proces, je nejaka moznost, jak se k nemu pripojit nejakym debugovacim nastrojem a zjistit, proc / na cem se zaseknul? V tomhle jsem absolutne nezkuseny...

Debuggery jsou schopny se pripojit i k bezicimu procesu. A pokud je binar s debugovacima informacema a mas k dispozici zdrojaky ze kterych by prelozen, budou ti umoznovat debugovani i v zdrojovem kody high-level jazyka ve kterym byl napsan.

Hackem muze byt:
1. proces pouziva sdilene knihovny a akualne se nachazi v nejaek takove. Neni to problem pokud vyse ivedene plati i pro dotcenou knihovnu (je prelozena s debugovacimi informacmei a mas zdrojaky).

2. proces provedl syscall a ten dosud neskoncil (tzn. provadi se in-kernel kod).

Tak mu omez maximalni dovoleny spotrebovany cas procesoru.
Pod stejnym uzivatelem se na tom serveru spousti vice uloh.

Limit je na kazdy proces.

Funguje tohle tak, ze se ten limit z login.conf bude aplikovat jen na ten konkretni proces, ktery presahne ten CPU time? Tzn. opravdu to killne jen tenhle vadny proces?

Signal SIGXCPU dostane jen proces, ktery prekrocil svuj soft limit. Ale nemusis to nutne globalne nastavovat v login.conf - na prikazove radce na to je prikaz ulimit, dalsi moznost je, ze si limit proces nastavi sam (v PHP funkce posix_setrlimit)

RESOURCE LIMITS
      Name               Type      Notes     Description
      cputime            time                CPU usage limit.

"time" ma jakou jednotku? Pocet sekund, ktere muze proces sezrat na CPU a pak dojde k jeho ukonceni?

setrlimit to bere v sekundach, takze predpokladam, ze to tady bude stejne. Uz je to moc davno, co jsem to naposled pouzil ...

Dan


--
FreeBSD mailing list (users-l@freebsd.cz)
http://www.freebsd.cz/listserv/listinfo/users-l

Odpovedet emailem