Proč mi umírá Apache?

Rhinox

Proč mi umírá Apache?
« kdy: 31. 05. 2016, 20:41:08 »
Kdyz uz jsou tady ty oslavne clanky na systemd, mohl by mi nekdo vysvetlit, proc mi furt umira apache, na minimalne zatizenem servru, v prumeru kazdy 2-3 dny? A proc ho kur*a systemd znovu nenastartoval???

Kód: [Vybrat]
[root@vepusix etc]# systemctl status httpd
● httpd.service - The Apache HTTP Server
   Loaded: loaded (/usr/lib/systemd/system/httpd.service; enabled; vendor preset: disabled)
   Active: failed (Result: exit-code) since Mon 2016-05-30 13:46:22 UTC; 1 day 4h ago
     Docs: man:httpd(8)
           man:apachectl(8)
  Process: 27587 ExecStop=/bin/kill -WINCH ${MAINPID} (code=exited, status=1/FAILURE)
  Process: 26685 ExecReload=/usr/sbin/httpd $OPTIONS -k graceful (code=exited, status=0/SUCCESS)
  Process: 19881 ExecStart=/usr/sbin/httpd $OPTIONS -DFOREGROUND (code=killed, signal=KILL)
 Main PID: 19881 (code=killed, signal=KILL)
   Status: "Total requests: 0; Current requests/sec: 0; Current traffic:   0 B/sec"

May 20 17:51:34 vepusix systemd[1]: Reloaded The Apache HTTP Server.
May 20 18:05:22 vepusix systemd[1]: Reloaded The Apache HTTP Server.
May 29 03:12:03 vepusix systemd[1]: Reloaded The Apache HTTP Server.
May 30 03:29:02 vepusix systemd[1]: Reloaded The Apache HTTP Server.
May 30 13:46:13 vepusix systemd[1]: httpd.service: main process exited, code=killed, status=9/KILL
May 30 13:46:27 vepusix systemd[1]: httpd.service: control process exited, code=exited status=1
May 30 13:46:27 vepusix systemd[1]: Unit httpd.service entered failed state.
May 30 13:46:27 vepusix systemd[1]: httpd.service failed.
May 30 13:46:28 vepusix kill[27587]: kill: cannot find process ""
May 01 07:44:03 vepusix systemd[1]: Reloaded The Apache HTTP Server.

[root@vepusix ~]# journalctl -u httpd.service
May 30 13:46:13 vepusix systemd[1]: httpd.service: main process exited, code=killed, status=9/KILL
May 30 13:46:27 vepusix systemd[1]: httpd.service: control process exited, code=exited status=1
May 30 13:46:27 vepusix systemd[1]: Unit httpd.service entered failed state.
May 30 13:46:27 vepusix systemd[1]: httpd.service failed.
May 30 13:46:28 vepusix kill[27587]: kill: cannot find process ""

Kdyz ho nahodim rucne, pobezi zas par dni, a pak umre. Pameti mam dost, a pred apachem je jeste varnishd. Proc mi tedy ten prokletej indian porad pada???
« Poslední změna: 31. 05. 2016, 21:11:22 od Petr Krčmář »


Sten

Re:proc mi umira apache?
« Odpověď #1 kdy: 31. 05. 2016, 21:09:31 »
A proc ho kur*a systemd znovu nenastartoval???

Asi v /usr/lib/systemd/system/httpd.service chybí:
Kód: [Vybrat]
Restart=on-failure(výchozí je no, tedy že se nic nerestartuje)

Kód: [Vybrat]
Main PID: 19881 (code=killed, signal=KILL)

Tohle říká, že mu někdo poslal SIGKILL. To typicky dělá OOM killer. Opravdu je tam dost paměti? Není v dmesg informace o OOM?

Rhinox

Re:Proč mi umírá Apache?
« Odpověď #2 kdy: 31. 05. 2016, 21:48:31 »
v /usr/lib/systemd/system/httpd.service nic takoveho nemam! To mam snad editovat soubory v /usr/lib? Co je tohle za bordel?

dmesg je prazdnej, nic o OOM tam neni. Na serveru je 4GB RAM, pouzito kolem 300MB. Web-servr je prazdnej, jen jedna staticka stranka. Apache bezi jen na loopbacku, dostupnej jen pres varnish.

Neni mozne aby naraz neco sezralo ~3.5GB. Krom toho, pada jenom apache, nic jinyho. Nevim dle jake logiky pracuje OOM, jen tipuju ze by snad neshazoval porad jenom apache. A v logu neni nic ohledne pameti, melo by tam snad byt neco jako "Out of memory"...

Re:Proč mi umírá Apache?
« Odpověď #3 kdy: 31. 05. 2016, 21:56:28 »
v /usr/lib/systemd/system/httpd.service nic takoveho nemam! To mam snad editovat soubory v /usr/lib? Co je tohle za bordel?

No to ti snad Sten rikal, ze to tam nejspis nebude, kdyz se to nepouziva.

Co si precist fajnovy manual?

https://www.freedesktop.org/software/systemd/man/systemd.unit.html
Example 2. Overriding vendor settings

Re:Proč mi umírá Apache?
« Odpověď #4 kdy: 31. 05. 2016, 22:00:33 »
verze apache, distro?

Hele nejspis to nebude tvuj pripad, ale ja se tuhle natrapil s tim, ze apache nezvladl reload(asi v 3/4 pripadu, naprosto random, blbe bylo ze se mu to nekdy povedlo tak se to blbe hledalo ten problem) a sestreloval mi ho logrotate v nedeli rano, lahudka (tak jsem v nem nastavil restart a od ty doby dobry).
Děkuji za možnost editace příspěvku.


Rhinox

Re:Proč mi umírá Apache?
« Odpověď #5 kdy: 31. 05. 2016, 22:16:46 »
verze apache, distro?
Apache 2.4.6, Centos7/64b

Sten

Re:Proč mi umírá Apache?
« Odpověď #6 kdy: 31. 05. 2016, 22:21:11 »
v /usr/lib/systemd/system/httpd.service nic takoveho nemam! To mam snad editovat soubory v /usr/lib? Co je tohle za bordel?

Můžeš nastavit drop-in v /etc/systemd, pokud ti to bude víc vyhovovat. Přidej soubor /etc/systemd/system/httpd.service.d/restart.conf s obsahem:

Kód: [Vybrat]
[Service]
Restart=on-failure

A reloadovat systemd pomocí systemctl daemon-reload. Jestli to funguje, můžeš ověřit pomocí systemctl cat httpd.service, měl by ten drop-in vypsat na konci.

Sten

Re:Proč mi umírá Apache?
« Odpověď #7 kdy: 31. 05. 2016, 22:24:46 »
Mimochodem není to virtuál v LXC nebo OpenVZ, kde běží Apache na hostiteli?

Rhinox

Re:Proč mi umírá Apache?
« Odpověď #8 kdy: 31. 05. 2016, 22:31:17 »
Mimochodem není to virtuál v LXC nebo OpenVZ, kde běží Apache na hostiteli?
Je to VPS (OpenVZ), apache bezi v nem...

Re:Proč mi umírá Apache?
« Odpověď #9 kdy: 31. 05. 2016, 22:33:35 »
Mimochodem není to virtuál v LXC nebo OpenVZ, kde běží Apache na hostiteli?
Co by z toho plynulo?

Re:Proč mi umírá Apache?
« Odpověď #10 kdy: 31. 05. 2016, 23:06:16 »
V paravirtualizaci lze RAMku masivně sdílet mezi uživateli. Samozřejmě, že to jde nastavit dobře, ale proč by to administrátor dělal, když na tom může vydělat pořádný prachy ;D tzn. prodat tu ramku stokrát. Tuším že to ani v logách není, jen v accountingu VPSky.

Mimochodem není to virtuál v LXC nebo OpenVZ, kde běží Apache na hostiteli?
Co by z toho plynulo?
„Řemeslo se naučí každý. Umění nikdo.“
„Jednoduchost je nejvyšší úroveň sofistikovanosti.“
- Leonardo Da Vinci

Re:Proč mi umírá Apache?
« Odpověď #11 kdy: 31. 05. 2016, 23:11:47 »
V paravirtualizaci lze RAMku masivně sdílet mezi uživateli. Samozřejmě, že to jde nastavit dobře, ale proč by to administrátor dělal, když na tom může vydělat pořádný prachy ;D tzn. prodat tu ramku stokrát. Tuším že to ani v logách není, jen v accountingu VPSky.
To by ale snad nesestřelilo procesy v guestu, spíš by jenom host začal swapovat, ne?

A navíc by se Sten neptal, jestli na hostu neběží ausgerechnet Apache. Pochopil jsem ten dotaz tak, že vzniká nějaký problém, když Apache běží v hostu i guestu.

Sten

Re:Proč mi umírá Apache?
« Odpověď #12 kdy: 31. 05. 2016, 23:44:10 »
Mimochodem není to virtuál v LXC nebo OpenVZ, kde běží Apache na hostiteli?
Co by z toho plynulo?

Procesy v hostiteli vidí procesy na všech virtuálech. Apache pak má takovou ošklivou vlastnost, že když vidí jiné procesy Apache, které nereagují na reload třeba při logrotate, tak je postřílí.

Mimochodem není to virtuál v LXC nebo OpenVZ, kde běží Apache na hostiteli?
Je to VPS (OpenVZ), apache bezi v nem...

OpenVZ má ještě bean countery, které mohou způsobovat problémy. S Apache jsem měl často problém s nedostatkem shmpages. Zkusil bych se podívat do /proc/user_beancounters, jestli nějaké nemají nenulový failcnt.

Druhá věc u OpenVZ je, že dmesg ve virtálu nevypisuje skoro nic a free není (nebo alespoň nebyl, když jsem OpenVZ naposledy používal, což už jsou tři roky) ani orientační, tak pokud jsi hledal je ve virtuálu, ten OOM kill tam nemusel být vidět.

Re:Proč mi umírá Apache?
« Odpověď #13 kdy: 31. 05. 2016, 23:53:34 »
Apache pak má takovou ošklivou vlastnost, že když vidí jiné procesy Apache, které nereagují na reload třeba při logrotate, tak je postřílí. [...] tak pokud jsi hledal je ve virtuálu, ten OOM kill tam nemusel být vidět.
Hmmmmm, tak to jsou teda hodně dobrý špeky! Dík.

Re:Proč mi umírá Apache?
« Odpověď #14 kdy: 01. 06. 2016, 00:09:44 »
Osobně jsem názoru, že LXC nebo OpenVZ se nehodí pro zcela běžné uživatele.
Jsou to spíš technologie pro firmu, která potřebuje dobrou správu, vysoký výkon a tím pádem i optimální využití hardware (má celý ten svůj cloud pod kontrolou).
Lze to sice nastavit podobně jako "běžnou" virtualizaci, ale to není vlastně cíl těchto technologií a naprosté nepochopení je vidět v různých fórech po internetu končícím (dám tam KVM jako kdyby to snad byl stejný produkt).
Většina lidí se prostě utopila v accountingu toho stroje, asi příliš futuristické - nepřišel čas, možná za pár let s LXC se to znovu vynalezne.

To s tím apachem je teda hnusný, ale v době systemd mě asi nic nešokuje. Dneska co se samo nerestartuje, tak je vlastně nefunkční :)
„Řemeslo se naučí každý. Umění nikdo.“
„Jednoduchost je nejvyšší úroveň sofistikovanosti.“
- Leonardo Da Vinci