Vlákno názorů k článku Jak nikdy nespouštět službu, aneb kdo posílá tajemný SIGKILL? od krauser - A to je presne ten rozdil, kdyz se...

  • Článek je starý, nové názory již nelze přidávat.
  • 18. 1. 2018 8:02

    krauser

    A to je presne ten rozdil, kdyz se veci resi nerizenymi ojeby (sysv init) a tim, kdyz se resi nejakym komplexnim SW resenim, ktere mysli na realne komplexni situace vznikajici pri behu sluzeb (systemd).

  • 18. 1. 2018 9:07

    ByCzech

    1. nevím co má su společného se sysv init, už při čtení článku jsem si říkal, co to je za blbost řešit spouštění něčeho přes su, když jsou na to nástroje (jsem holt rozmazlený Debianem) - proč asi pánové nenarazili na stejnou chybu nikde na netu, když se ji snažili vyřešit? Protože nikoho taková věc, spouštět v init věci přes su nenapadla.

    2. neřízený ojeb je právě systemd, jen ten dokáže způsobit, že služba jednou z 10 startů nenaběhne, v logu není nic užitečného, příští start je OK, z řádky to ručně nastartuje vždycky bezchybně... To samé při vypínání, jen systemd umí zavěsit shutdown každý n-té vypnutí, s tím, že n je nepředvídatelné náhodné relativně malé číslo. A spoustu dalších radostí, které se sysvinit nikdy neexistovaly. systemd má zajímavé vlastnosti, ale funguje jen teoreticky, v praxi je to s ním občas dost nevyzpytatelné a někdy hodně složitě detekovatelné a řešitelné.

  • 18. 1. 2018 9:20

    Duff (neregistrovaný)

    Nebo když vmwarový virtuál cca 1 x z 10 startů nenahodí síť a nikde není zapsáno nic o tom proč.

  • 18. 1. 2018 9:34

    krauser

    > neřízený ojeb je právě systemd, jen ten dokáže způsobit, že služba jednou z 10 startů nenaběhne, v
    Zajimave, ale silne pochybuji ze jde o chybu systemd - spise service files / aplikace.

    > To samé při vypínání, jen systemd umí zavěsit shutdown každý n-té vypnutí, s tím, že n je nepředvídatelné náhodné relativně malé číslo. A

    Asi chybi v service nastaveni TimeoutSec.

    Kazdopadne nevim na jake to mas distribuci, ale s nejvetsi pravdepodobnosti to bude chyba primo v services. Na nekolika set RHEL virtualech jsem ani jednu z techto chyb nevidel - pokud uz se stane, ze se sluzba odmita se ukoncit, tak proste dojde na timeout.

    V SD jako takovem si vybavuji jednu chybu tohodle razeni - ze se v nekterych pripadech swap deaktivoval prilis brzy, tudiz pri shutdownu na pretizenem systemu mohlo dojit k aktivaci OOM killeru (a trvalo to dlouho). ael to uz je hezka radka let.

  • 18. 1. 2018 9:55

    ByCzech

    Zajimave, ale silne pochybuji ze jde o chybu systemd - spise service files / aplikace.

    Pochybovat můžete, ale to je asi tak všechno.

    Asi chybi v service nastaveni TimeoutSec.

    Určitě nechybí. Teoreticky uvažujete správně, ale prakticky to neštymuje. :D

    Kazdopadne nevim na jake to mas distribuci, ale s nejvetsi pravdepodobnosti to bude chyba primo v services.

    Ne není. A nemáme tu jen servery, ale i desktopy, Váš rozhled je velmi omezený.

    pokud uz se stane, ze se sluzba odmita se ukoncit, tak proste dojde na timeout.

    Kdo říká, že se nějaká služba odmítla ukončit. Zdá se že máte jen málo zkušeností co se systemd týká. Na jednom notebooku dokážu stav replikovat v podstatě se 100% úspěšností. Stačí, že se zavěsí rozjíždějící session a pokud dám povel k vypnutí, systemd se zavěsí v nekonečné smyčce ještě před ukončováním služeb.
    Moc si ten experimentální kus softu idealizujete. Kdyby nebyl tak rozlezlý v kde čem a nebyl proto už nutný pro jiné kusy softy (typicky některá DE např.), tak bude nejspíš na distrech stále v experimental větvích.

  • 18. 1. 2018 10:20

    krauser

    > Zdá se že máte jen málo zkušeností co se systemd týká.

    Mas pravdu, jen par stovek serveru / VM, pak nejake Fedory 27, na laptopu Arch.
    Pokud se chces bavit konkretne, hod sem link na bugreport. Predpokladam, ze jsi to reportoval :-)

    Jinak je to na urovni jedna pani povidala.

    Co se tyka sessions a systemd - jsou tam nejake zname stare (vyresene) bugy - https://github.com/systemd/systemd/issues/2691 a https://github.com/systemd/systemd/issues/2390 - ale to neni rozhodne nic, co popisujes (a tam k normalnimu shutdownu vzdycky dojde + oprava byla prave v .service souboru).

  • 18. 1. 2018 10:26

    ByCzech

    Mas pravdu, jen par stovek serveru / VM, pak nejake Fedory 27, na laptopu Arch.

    Očividně to nestačí...

    Pokud se chces bavit konkretne, hod sem link na bugreport. Predpokladam, ze jsi to reportoval :-)

    To jsem svého času zkoušel, vzhledem k bezradnosti těch, co to mají na starosti a tomu, že jsem si to vždycky nakonec nějak vyřešil sám to už nedělám, je to zbytečná ztráta času. A hlásit to přímo Poeteringovi? Vyřešit to tak, že to prohlásím za feature umím taky - opět zbytečná ztráta času.

    Jinak je to na urovni jedna pani povidala.

    To vaše určitě :)

    Co se tyka sessions a systemd - jsou tam nejake zname stare (vyresene) bugy

    Což dle vaší logiky vylučuje neznámé a nevyřešené... Jasně :)

    Pro váš klid prohlašuji, že systemd je bezchybný, tahle diskuze s "idealistama", uzavřenýma ve svém výseku světa, kde jim to náhodou funguje a popírající stavy, kdy to prostě nefunguje je zbytečná. ;)

  • 18. 1. 2018 10:49

    krauser

    > To jsem svého času zkoušel, vzhledem k bezradnosti těch, co to mají na starosti a tomu, že jsem si to vždycky nakonec nějak vyřešil sám to už nedělám, je to zbytečná ztráta času. A hlásit to přímo Poeteringovi? Vyřešit to tak, že to prohlásím za feature umím taky - opět zbytečná ztráta času.

    No tak sup, linky na bugreporty, kdyz jsi to zkousel :-)

    > Pro váš klid prohlašuji, že systemd je bezchybný, tahle diskuze s "idealistama", uzavřenýma ve svém výseku světa, kde jim to náhodou funguje a popírající stavy, kdy to prostě nefunguje je zbytečná. ;)

    Ja nejsem zadny idealista, me je SD celkem sumak, spoustu veci si dovedu predstavit, ze by delal jinak / lepe / ... Jen konstatuji to, ze pokud vis o nejakych chybach, tak je mas nareportovat.
    Pokud jsi je nareportoval, neni nic jednodussiho nez poslat bugreporty.
    Pokud jsou ty chyby tak bezne a nereportoval jsi je, jiste neni problem najit nejake bugreporty jinych.

    Ja jsem si tu praci s googlenim problemu, co jsi popsal dal a nic potvrzujici tve tvrzeni jsem nenasel.
    A nikde netvrdim, ze tam nezname bugy nejsou - zcela jednoznacne jsou (stejne jako v kernelu, glibc, OpenSSH, ....).

    Tvrdis neco, pro co jsi neprinesl zadny dukaz. Stejne tak muzu prohlasit, ze LP znasilnuje male deti a upstart zpusobuje zaludecni vredy (i kdyz, s tim by mozna autor clanku souhlasil :-D), argumentacni kvalitu to ma uplne stejnou.

  • 18. 1. 2018 11:54

    ByCzech

    No tak sup, linky na bugreporty, kdyz jsi to zkousel :-)

    Nechcete se zklidnit? Nejsem váš podřízený ani nemám potřebu pořád sedět na Rootu, popohánějte si někoho jiného.

    Kdo chce, bugrepoty si najde, já už co se týká systemd nerepotuji, vzhledem k přístupu autora k řešení chyb i bezradnosti maintainerů. Čas je drahý, naučil jsem se si s tím poradit různými způsoby, které jsou výrazně rychlejší než zbytečné hlášení a vysvětlování, že to skutečně funguje, že jsem to co mi navrhují dávno vyzkoušel a že to nepomohlo a skončení ve stavu, že nevědí co s tím a nakonec, že to stejně nějak vyřeším sám a hotovo.

    Vzhledem k vašemu povýšenému přístupu k diskuzi nepošlu, nemám zájem se s vámi zbytečně dohadovat a vyvracet vám vaše teorie, bez praktické zkušenosti.

    Jen konstatuji to, ze pokud vis o nejakych chybach, tak je mas nareportovat.

    To u systemd už nedělám, nemá to cenu. U jiných softů s tím problém nemám.

    Tvrdis neco, pro co jsi neprinesl zadny dukaz.

    Zato vy tvrdíte s důkazy, že? :D :D :D

    Na zbytek vašeho příspěvku zbytečné reagovat (obzvlášť o znásilňování dětí, jen se snažíte dát svému prázdnému příspěvku váhu v silných slovech a emotivních nesouvisejících tématech).

  • 18. 1. 2018 12:25

    krauser

    > Zato vy tvrdíte s důkazy, že? :D :D :D
    Ja jsem linkoval 2 bugreporty.
    A obecne plati ze dukazni bremeno nese ten, jez neco tvrdi (v tomto pripade ty).
    Chtit po jinych aby bez dukazu akceptovali nejake tvrzeni (navic odporujicich zkusenosti) je prinejmensim detinske.

    > To u systemd už nedělám, nemá to cenu. U jiných softů s tím problém nemám.
    To je tvoje svobodne rozhodnuti, nicmene pokud uz to nedelas a ty chyby, ktere jsi tu zminoval, jsi reportoval / nasel reportovane, tak neni opravdu nic jednodussiho nez postnout link :-)

    > Na zbytek vašeho příspěvku zbytečné reagovat (obzvlášť o znásilňování dětí, jen se snažíte dát svému prázdnému příspěvku váhu v silných slovech a emotivních nesouvisejících tématech).

    To je priklad argumenty / dukazy nepodlozeneho tvrzeni. Kdyz to vezmeme do dusledku, tak je to stejna situace jako diskuse o onech zasadnich chybach systemd s tebou - tvrzeni, ktere neni nicim podlozene.

    Ja ti klidne verim, ze jsi se sd nejake problemy mel, ja je mel taky, ale to absolutne nevylucuje moznosti, ze
    a) delas neco spatne
    b) autor tve distribuce udelal neco spatne
    c) je chyba v sd

    Vetsina "chyb" sd, co jsem videl / cetl (vazici se napr. k zastavovani sluzeb) byla v dusledku zpusobena spatnymi .service a nikoliv chybou v samotnem sd. Tot moje zkusenost.
    Ty jsi tvrdil neco jineho, ja po tobe chtel odkaz na bugreport (ktere jsem i sam zkousel hledat), ty jsi zadny nedostal a rozcilujes se, ze ti to neverim jen proto, ze to tvrdis :-) Tot ve strucnosti cela tahle diskuse.

  • 18. 1. 2018 15:37

    ByCzech

    A obecne plati ze dukazni bremeno nese ten, jez neco tvrdi (v tomto pripade ty).

    Začínám mít pocit, že jste nějakým způsobem vyšinutý. Nejsme u soudu a nemám potřebu zrovna vám něco dokazovat. Už jsem vám jasně dal najevo, že o diskuzi s vámi nestojím, tak mi není jasné, co na tom nechápete a proč se mě do ní neustále snažíte zatáhnout. Ale možná to je jen projev toho, jak si z mých příspěvku vyberete co se vám hodí a "přehlížíte" zbytek, takže jste přehlídl i můj nezájem s vámi diskutovat potažmo vám něco dokazovat.

    tak neni opravdu nic jednodussiho nez postnout link

    "Nechci" pro vás není odpověď, že? Začínáte být otravný až vlezlý. Akceptujte prosím, že NECHCI, děkuji.

    a rozcilujes se, ze ti to neverim jen proto, ze to tvrdis

    1. Nerozčiluji se (proč taky, kvůli nějaké virtuální diskuzi po netu?)

    2. Jestli mi to věříte nebo ne je mi úplně šuma fuk, takže jste i v tomto úplný mimoň, vaše neustálé mylné předpoklady, na kterých lpíte jako na axiomech jsou dost podstatnou chybou.

  • 18. 1. 2018 15:54

    Sid (neregistrovaný)

    Kludne napis, ze si si to vymyslel s tym bugreportom aby si si dodal na vaznosti... Lebo podporit svoje tvrdenie linkom zaberie max 1m a tu si pisanim stratil viac casu.

  • 18. 1. 2018 18:37

    null null (neregistrovaný)

    @ByCzech

    Hele mě se systemd stalo něco podobného. Ale neboj, ono je to dříve nebo později vyfackuje samo, pak jim někdo jen tak z patra vysvětlí že je to jejich chyba a najednou se vmžiku stane to, co se tobe v 5000 příspěvcích nepodaří ...

  • 20. 1. 2018 15:54

    ebik

    > Zajimave, ale silne pochybuji ze jde o chybu systemd - spise service files / aplikace.

    Pak je ale chyba systemd nebo jeho dokumentace, že takové service files vznikají často.

    > Asi chybi v service nastaveni TimeoutSec.

    Ano ano, zase práce, která byla v SysV initu vyřešená, byla zahozena abychom objevili kolo znovu.

    > Kazdopadne nevim na jake to mas distribuci ...

    Nevím jakou distribuci má ByCzech, ale mám pocit, že většina non-redhat distribucí neměla možnost konzultovat s vývojáři systemd na obědě, a podle toho zavedení systemd dopadlo. Ať žije dokumentace. Pokud má totiž maintainer balíčku napsat service file měl by vědět co si má o programu vůbec zjistit. Protože například vývojáři zdokumentovali jen to co považovali za podstatné a start vyřešili dodáním init skriptu. Kdyby systemd umožňoval příčetné evoluční přejití se sysV initu na systemd, tak by nejspíš tolik zlé krve nebylo. Systemd sice umí vygenerovat servicu když vidí sysv init skript, ale výsledek je to horší z obou světů. O zachování plné kompatibility se sysv se tu mluvit nedá, a revoluce bolí. Podle mnohých bolí výrazně víc, než je nezbytně nutné.

  • 20. 1. 2018 17:05

    krauser

    > Pak je ale chyba systemd nebo jeho dokumentace, že takové service files vznikají často.

    A chybou Ritchieho je to, ze se v C pisi derave programy... No jasne :-)

    > Ano ano, zase práce, která byla v SysV initu vyřešená, byla zahozena abychom objevili kolo znovu.

    Prave, ze nebyla vyresena vubec a kazdy init skript si to musel bastlit po svem vice ci mene blbe.

    > Nevím jakou distribuci má ByCzech, ale mám pocit, že většina non-redhat distribucí neměla možnost konzultovat s vývojáři systemd na obědě, a podle toho zavedení systemd dopadlo. Ať žije dokumentace.

    Pokud srovnam dokumentaci systemd a v podstate skoro jakehokoliv sysvinitu z predchozich dob na Linuxu, tak mi z toho jednoznacne vychazi lepe systemd. Typicky init predtim byla smes bashovych funkci, povetsinou bez jakekoliv dokumentace.

    > Pokud má totiž maintainer balíčku napsat service file měl by vědět co si má o programu vůbec zjistit. Protože například vývojáři zdokumentovali jen to co považovali za podstatné a start vyřešili dodáním init skriptu. Kdyby systemd umožňoval příčetné evoluční přejití se sysV initu na systemd, tak by nejspíš tolik zlé krve nebylo. Systemd sice umí vygenerovat servicu když vidí sysv init skript, ale výsledek je to horší z obou světů. O zachování plné kompatibility se sysv se tu mluvit nedá, a revoluce bolí. Podle mnohých bolí výrazně víc, než je nezbytně nutné.

    Pochopitelne, diky tomu, ze sysv init je smes bashovych skriptu, neda se zadnym zpusobem rozumne sparsovat (protoze to neni deklarativni konfigurace, ale imperativni zapis kroku), tak pochopitelne vsechny tyhle konverze jsou odsouzeny k zahube.

    Ale napr. pokud vezmu Archlinux, systemd tam pouzivam skoro od zacatku a krom nekolika pocatecnich porodnich bolesti to vzdy fungovalo celkem bezne, posledni leta naprosto bezproblemu.
    A myslim, ze autori Archlinuxu na obed s LP nechodi :-D

  • 20. 1. 2018 18:47

    ebik

    > Pokud srovnam dokumentaci systemd a v podstate skoro jakehokoliv sysvinitu z predchozich dob na Linuxu, tak mi z toho jednoznacne vychazi lepe systemd. Typicky init predtim byla smes bashovych funkci, povetsinou bez jakekoliv dokumentace.

    To není pravda. Sys-V init je pouze infrastuktura která říká JAK se ty init skripty spouštějí. Vše si pak implementuje autor/maintai­ner/správce sám, a potřebuje na to znalost shellu, kterou tak jako tak doposud při práci v *nixu potřeboval. To že dokumentace obsahuje jen málo věcí neznamená, že tam je spousta nezdokumentovaných věcí. Ty v tom systému prostě nejsou, takže nepotřebují dokumentovat. A vzhledem k tomu, že ten systém se nesnažil vytlačit jiný systém, tak nepotřeboval dokumentaci běžných usecases. Místo toho existovala dokumentace k tomu jak se má chovat správný daemon (dvojitý fork, zavření stdin/stdout, ...) a považovalo se to za dokumentaci toho jak má být správně napsaná služba (nikoli za dokumentaci init systému). Systemd to bere na sebe, takže to musí zdokumentovat, a snaží se přebrat pod sebe i služby které byly napsané pro sys-V init. Takže by měl obsahovat dokumentaci správného přechodu těchto služeb. (Viz dokumentace upstartu a jeho expect fork.) To že se do stable verze tak velké distribuce jako je Debian dostane špatně napsaný service file pro tak klíčovou službu jako je ssh považuji za fail jak Debianu tak dokumentace systemd.

  • 20. 1. 2018 19:10

    Filip Jirsák
    Stříbrný podporovatel

    Ty v tom systému prostě nejsou, takže nepotřebují dokumentovat.
    Viděl jste někdy nějaký rc skript? Zkuste se někdy na nějaký podívat, uvidíte, kolik tam je věcí – a zdokumentované obvykle není vůbec nic.

  • 20. 1. 2018 19:34

    ebik

    Netvrdím, že zdokumentovat nepotřebují. Naopak. Ale nejsou to věci o které se stará sysV init, takže to není chyba dokumentace sysV initu. Může to být chyba designu, ale není to chyba dokumentace.

  • 20. 1. 2018 19:38

    Filip Jirsák
    Stříbrný podporovatel

    Aha, takže SysVInit nedělá skoro nic, takže vlastně za nic nemůže. A ty skripty, co jsou okolo, aby to vůbec něco dělalo, ty se nepočítají, to jsou jen skripty.

  • 20. 1. 2018 19:50

    ebik

    Ano přesně tak. Někdo napsal SysV init kdysi velmi jednoduše, protože nechtěl/neměl sílu řešit co bude pod tím. A vznikl čurbes, se kterým se většina lidí naučila žít, a v leckterých distribucích ho i uměli docela dobře uklidit. (V debianu jsem se SysV init skripty neměl problém. Většina jich navíc používá společnou shellovou knihovnu.) Systemd sám o sobě je krokem vpřed (a často i stranou, ale o tom se teď nebavíme), ale způsob jeho zavádění je krok vzad.

  • 20. 1. 2018 18:49

    ebik

    > Pochopitelne, diky tomu, ze sysv init je smes bashovych skriptu, neda se zadnym zpusobem rozumne sparsovat (protoze to neni deklarativni konfigurace, ale imperativni zapis kroku), tak pochopitelne vsechny tyhle konverze jsou odsouzeny k zahube.

    No a právě proto je lepší se nezkoušet dělat automatické konverze ale místo toho udělat rozumný sysVinit wrapper, který bude sysV emulovat dobře.

  • 20. 1. 2018 20:15

    krauser

    > No a právě proto je lepší se nezkoušet dělat automatické konverze ale místo toho udělat rozumný sysVinit wrapper, který bude sysV emulovat dobře.
    Nebo nedelat zbytecnou praci s udrzovanim kompatibility s necim, co melo umrit uz davno, a proste to prevest na robustnejsi .service, jak to udelaly vsechny majoritni distribuce :-)

  • 18. 1. 2018 9:17

    pet I. (neregistrovaný)

    Ano, to je přesně ten rozdíl ;-). Autorům se podařilo najít, kde při konfigurování udělali chybu. V případě, že by bylo použito systemd, by akorát mohli konstatovat: „že to nefunguje“.
    Dále autoři zjistili, že:
    a) pokud něco bastlí pro produkci, měli by to opravdu důkladně otestovat, nejlépe ještě před nasazením,
    b) pokud něco testují, měli by k tomu používat to, co bude v reálném nasazení, a to nejen přesně stejný OS, ale i přesně stejnou verzi (získanou nejlépe klonováním provozního systému)

  • 18. 1. 2018 9:27

    krauser

    > pokud něco bastlí pro produkci,

    A to je prave ono - ze se to musi bastlit a ani takova zakladni vec, jako rizeni procesu / uzivatelu neni resena v ramci upstartu.

    Pokud by pouzili systemd (nebo cokoliv jineho, to neni zadna super feature tohle - daemon tools by to zvladli tez, stejne tak jako jakykoliv jiny rozumny service manager), tak by proste napsali neco ala:

    ...
    [service]
    Type=simple
    User=xxx
    Group=xxx
    Environment=JA­VA_HOME=/usr/ja­va/jdk1.8
    ExecStart=/op­t/kafka/bin/zo­okeeper-server-start.sh /opt/kafka/con­fig/zookeeper­.properties
    ExecStop=/opt/kaf­ka/bin/zookee­per-server-stop.sh
    ...

    A tenhle problem by se nikdy nestal.

    Ale kdyz i pro takove triviality service manager nuti administratora bastlit, tak je to samozrejme zasadni problem.

  • 18. 1. 2018 9:39

    L. (neregistrovaný)

    Ale Upstart to taky umí také, jen oni používají kvůli CentOS nějakou archaickou verzi, kde to ještě není.

  • 18. 1. 2018 9:53

    Petr M (neregistrovaný)

    Otázka je, co nutí firmu používat starou verzi v produkčním systému a pak naříkat, že tam chybí nový věci, že něco je ve verzi 1.5.x a oni mají teprve 0.9.x... Tím spíš pokud si hrají na bezpečnostní firmu a zákazníkům říkají "aktualizovat, aktualizovat, aktualizovat".

  • 18. 1. 2018 10:50

    MarSik (neregistrovaný)

    Ale CentOS 6 je přece pořád ještě podporovaný a dostává aktualizace.

  • 18. 1. 2018 11:04

    krauser

    Prave proto, ze si "hraji na bezpecnostni firmu" neaktualizuji na nove (mozna nekompatibilni) verze jako blazni, ale pouzivaji stabilni, zaplatovanou verzi z podporovane verze distribuce :-)

  • 18. 1. 2018 10:00

    krauser

    Tak je to 7 let stara distribuce. V RHEL / Centos 7 uz se preslo na systemd.
    setuid/seteuid bylo pridano v upstartu nekdy v te dobe releasu, takze predpokladam, ze do RHEL 6 se to nedostalo.