Portál AbcLinuxu, 23. dubna 2024 09:41


Dotaz: Apache httpd nefunguje po aktualizaci na 2.2.6

17.9.2007 12:29 Andrej | skóre: 51 | blog: Republic of Mordor
Apache httpd nefunguje po aktualizaci na 2.2.6
Přečteno: 518×
Odpovědět | Admin

Ahoj, prosím o radu s následujícím problémem.

Na serveru jsem měl httpd (Apache) verze 2.x. (Nevím už přesně, která verze to byla.) Server bez problémů fungoval, včetně PHP a přístupu k databázi.

Po aktualizaci (balíčkovacím systémem ArchLinuxu) na verzi 2.2.6 přestal fungovat. Jakýkoliv dotaz způsobí zatuhnutí démona se 100% využitím CPU.

Web tedy samozřejmě nefunguje a každý další pokus o načtení www stránky spustí další proces httpd, který opět využívá CPU, jak nejvíc může.

Po zamrznutí jsou procesy httpd nesmrtelné. Nelze je zabít žádným způsobem kromě restartu. Zdůrazňuji, že nejde o zombie procesy. Tyto využívají procesor velmi náruživě.

V logu nic podezřelého není. Možná bych měl zapnout jinou úroveň logování... Ale kterou?

Googlem jsem našel desítky odkazů o zamrzajících procesech httpd, ale vždy šlo o zombie nebo chybný PHP skript. Toto je zjevně jiný případ. Nemám ponětí, čím to může být.

Nástroje: Začni sledovat (2) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

frEon avatar 17.9.2007 13:05 frEon | skóre: 40 | Praha
Rozbalit Rozbalit vše Re: Apache httpd nefunguje po aktualizaci na 2.2.6
Odpovědět | | Sbalit | Link | Blokovat | Admin
k tomu logovani, je to LogLevel debug
dela to u vsech virtualhostu? zkousel jsi i nacist sranku bez jakehokoliv php, mysql nebo jinejch skriptu?
Talking about music is like dancing to architecture.
17.9.2007 17:56 Andrej | skóre: 51 | blog: Republic of Mordor
Rozbalit Rozbalit vše Re: Apache httpd nefunguje po aktualizaci na 2.2.6

Zkusím tedy LogLevel debug. Zatím to vypadá, že se do logu nepíše absolutně nic, ale třeba se tam při vyšším LogLevelu stihne ještě něco zapsat, než to zamrzne.

Týká se to všech virtual hostů. I těch, u kterých není PHP.

17.9.2007 18:35 Andrej | skóre: 51 | blog: Republic of Mordor
Rozbalit Rozbalit vše Re: Apache httpd nefunguje po aktualizaci na 2.2.6

Tak teda fakt nevím, čím by to mohlo být. Zapnul jsem LogLevel debug. Tvrdilo to jedinou podezřelou věc - že vypršela platnost CRL. Tedy jsem vygeneroval nový CRL a hláška tam už pak není.

Ale zamrzá to dál přesně stejně. Do access_log se vůbec nic nezapíše, resp. nestihne zapsat. V error_logu taktéž nic zajímavého není. Jediná hlášení typu error vznikají ve chvíli, kdy se při restartu server vypíná a nemůže žádným způsobem zabít své zaseknuté potomky.

Takže co s tím? Přece nemůžu být jediný, kdo má tenhle problém... To by byla moc velká náhoda.

17.9.2007 18:53 vasek125
Rozbalit Rozbalit vše Re: Apache httpd nefunguje po aktualizaci na 2.2.6
df
cat /etc/hosts
cat /etc/resolv.conf
Nebude tam někde bordel? Zkoušel jste nedistribuční apache?
17.9.2007 19:20 Andrej | skóre: 51 | blog: Republic of Mordor
Rozbalit Rozbalit vše Re: Apache httpd nefunguje po aktualizaci na 2.2.6
Filesystem           1K-blocks      Used Available Use% Mounted on
/dev/hda1              3937220   1763492   1973724  48% /
none                    144108         0    144108   0% /dev/shm
/dev/hda2             15314684  11207300   3329440  78% /home
/dev/hdc1              5699964   1153176   4257244  22% /var
127.0.0.1       localhost.localdomain   localhost       charon
nameserver 127.0.0.1

Pro úplnost ještě dodám, že nastavení je přesně stejné jako u původní verze Apache, která fungovala. Na tom serveru zároveň běží named pro mou doménu, proto je sám sobě name serverem. (DNS funguje bez potíží.)

Jakmile ale přijde jakýkoliv http požadavek - bez ohledu na to, zda z vnitřní sítě nebo zvenčí - celý Apache se zasekne a nepomůže nic jiného než restart.

Už jsem měl podobný problém dvakrát. Jednou šlo (matně si vzpomínám) o problém s interpretem PHP (vyřešeno). Podruhé byl problém s šifrovacím enginem - špatný název souboru s klíčem (vyřešeno). Jenže v obou případech tam zůstávaly jen zombie, které nevyužívaly procesor. Tento případ je naprosto ojedinělý a asi kvůli němu brzy přijdu o nervy...

17.9.2007 19:27 Andrej | skóre: 51 | blog: Republic of Mordor
Rozbalit Rozbalit vše Re: Apache httpd nefunguje po aktualizaci na 2.2.6

Nedistribuční apache jsem nezkoušel. (Kdysi ano, ale tuto verzi nikoliv.) Je poměrně složité to správně nakonfigurovat a v tuto chvíli na to nemám čas ani kuráž. Kdybych jenom převzal konfiguraci z PKGBUILDu, získal bych stejný Apache... Jedině bych mohl někde splašit starší verzi, ale tím ten problém nezmizí.

17.9.2007 19:38 Filip Jirsák | skóre: 68 | blog: Fa & Bi
Rozbalit Rozbalit vše Re: Apache httpd nefunguje po aktualizaci na 2.2.6
Odpovědět | | Sbalit | Link | Blokovat | Admin
Jste si opravdu jist, že to není chybný PHP skript nebo nějaký problém s přepisováním adres? Odhadoval bych, že problém je v tom, že se Apache pokouší rekurzivně vkládat do sebe jednu a tu samou stránku, nebo se přesměrovává neustále na jednu a tu samou adresu (případně navzájem mezi více adresami v kolečku). Neaktualizovalo se s Apachem i PHP? Konfigurační soubory se změnily, nebo jsou tam stále ty samé?

Zkusil bych nejprve vyloučit problém se skriptem nebo přesměrováním – vypnout všechny rewrite a zkusit načíst nějakou statickou stránku. Pak můžete postupně začít přidávat – rewrite, PHP skripty…
17.9.2007 22:45 Andrej | skóre: 51 | blog: Republic of Mordor
Rozbalit Rozbalit vše Re: Apache httpd nefunguje po aktualizaci na 2.2.6
Jste si opravdu jist, že to není chybný PHP skript nebo nějaký problém s přepisováním adres?

Aktualizoval jsem pouze software. Skripty zůstaly navlas stejné. Fungovaly předtím cca půl roku. Pokud jde o mod_rewrite, nic takového nepoužívám.

Odhadoval bych, že problém je v tom, že se Apache pokouší rekurzivně vkládat do sebe jednu a tu samou stránku, nebo se přesměrovává neustále na jednu a tu samou adresu (případně navzájem mezi více adresami v kolečku).

To si nemyslím. Ani LogLevel debug neukazuje nic podezřelého nebo snad cyklického... Kdyby třeba narůstala spotřeba paměti nebo kdyby se hodně logovalo, dá se z toho kdeco usoudit. Jenže ono nic. Jen procesor je zatížený na maximum. Jednou se mi hromadily instance httpd proto, že selhal jeden z harddisků a nešlo zapisovat do logu. Ale toto není ten případ.

Neaktualizovalo se s Apachem i PHP? Konfigurační soubory se změnily, nebo jsou tam stále ty samé?

PHP se aktualizovalo taktéž. PHP (prostě přímo příkaz php) funguje - nechybí žádné knihovny nebo tak něco. Konfigurační soubory jsou původní. Časem se chystám provést nějaký merge, ale to bude dlouhá a nepříjemná procedura...

Zkusil bych nejprve vyloučit problém se skriptem nebo přesměrováním – vypnout všechny rewrite a zkusit načíst nějakou statickou stránku.

Provedeno. Přepisování nepoužívám. Mám hned několik virtuálních hostů se statickými stránkami. Bohužel taktéž nefungují. Dopadne to stejně, ať přistupuju ke stránce s PHP nebo bez něj.

18.9.2007 12:07 Filip Jirsák | skóre: 68 | blog: Fa & Bi
Rozbalit Rozbalit vše Re: Apache httpd nefunguje po aktualizaci na 2.2.6
Aktualizoval jsem pouze software. Skripty zůstaly navlas stejné. Fungovaly předtím cca půl roku. Pokud jde o mod_rewrite, nic takového nepoužívám.
To by něco znamenalo, pokud by to nebylo PHP. S PHP si ale člověk nemůže být nikdy jistý, bohužel. Zvlášť když jste aktualizoval i PHP, tam co verze, to originál…
Provedeno. Přepisování nepoužívám. Mám hned několik virtuálních hostů se statickými stránkami. Bohužel taktéž nefungují. Dopadne to stejně, ať přistupuju ke stránce s PHP nebo bez něj.
Nemůžete mít zapnuté nějaké include nebo něco podobného? I z toho, že jsou všechny procesy ve stavu R bych tipoval, že ty procesy na nic nečekají, ale opravdu se snaží něco (cyklicky) načítat. Zkusil jste se připojit k serveru přímo telnetem a podívat se, jestli alespoň něco odpoví?
telnet server 80
GET / HTTP/1.0
Host: virtualhost.example.com
<Enter>
<Enter>
17.9.2007 21:22 Michal Kubeček | skóre: 72 | Luštěnice
Rozbalit Rozbalit vše Re: Apache httpd nefunguje po aktualizaci na 2.2.6
Odpovědět | | Sbalit | Link | Blokovat | Admin
Jestli to nejsou zombie, ale přesto nejdou zabít ani signálem KILL, pak jsou nejspíš ve stavu D. Pokud vám procesy zůstávají viset v tomto stavu, znamená to obvykle buď hardwarové problémy nebo chybu v jádře. Neupdatoval jste současně s Apachem i jádro?
17.9.2007 22:54 Andrej | skóre: 51 | blog: Republic of Mordor
Rozbalit Rozbalit vše Re: Apache httpd nefunguje po aktualizaci na 2.2.6

Jádro jsem updatoval až po Apache. (Právě kvůli takovému podezření.) Jenže před updatem i po něm to bylo stejné. Příkaz top ukazuje, že zamrzlé procesy jsou ve stavu R. Z nějakého důvodu je ovšem nelze zabít ani pomocí kill -9.

PID  USER      PR  NI  VIRT  RES  SHR S %CPU %MEM   TIME+   COMMAND
4035 nobody    25   0 21228 8372 2276 R 99.4  2.9   0:25.39 httpd

S každým dalším HTTP dotazem přibude další httpd. (Až do maximálního počtu procesů, které smí httpd vytvářet.) Procesor si mezi sebou dělí spravedlivě, avšak bezúčelně.

Předejdu i další možné otázce: Memtest jsem nechal běžet 9 hodin. Nenašel žádnou chybu.

17.9.2007 23:27 Michal Kubeček | skóre: 72 | Luštěnice
Rozbalit Rozbalit vše Re: Apache httpd nefunguje po aktualizaci na 2.2.6
Pokud je nějaký proces ve stavu R a nezlikviduje ho 'kill -9', pak IMHO není problém v tom procesu.
18.9.2007 11:06 Andrej | skóre: 51 | blog: Republic of Mordor
Rozbalit Rozbalit vše Re: Apache httpd nefunguje po aktualizaci na 2.2.6

Možná není problém v procesu, ale pořád nevím, v čem by být mohl. Ty procesy jsou potomky jednoho httpd - nejspíš toho, který se spustil první. Ten se nezablokuje. Při restartu napřed zkouší zabít své zablokované potomky a zapisuje to do logu. Třikrát pošle SIGTERM. Když to nepomůže, pošle SIGKILL. Jenže ani ten nepomůže. (Tak prostě zůstanou běžet a přežijí dál.) (Zabíjení pomocí kill samozřejmě taky nepomáhá.)

18.9.2007 12:18 Michal Kubeček | skóre: 72 | Luštěnice
Rozbalit Rozbalit vše Re: Apache httpd nefunguje po aktualizaci na 2.2.6
Asi jsem to ještě pořád nenapsal dost srozumitelně, tak to zkusím ještě jednou: pokud signál KILL nezlikviduje proces ve stavu R, je to chyba jádra. I kdyby se proces stavěl na hlavu, signál KILL ho prostě musí zabít bez ohledu na to, co on si o tom myslí. Takže nemůžu vyloučit, že je nějaká chyba v Apachi, ale zcela jistě to není chyba jen v Apachi.
18.9.2007 13:13 Andrej | skóre: 51 | blog: Republic of Mordor
Rozbalit Rozbalit vše Re: Apache httpd nefunguje po aktualizaci na 2.2.6

Je to pravda. Týká se to i Courier-MTA, jak jsem zjistil. Problém není v Apachi, ale v novém distribučním kernelu. Vždy o důvod víc, proč si zkompilovat vlastní. Teprve během dneška jsem našel tohle. (Jinak bych tu s tím neotravoval.)

Zkusím zkompilovat vlastní kernel nebo sehnat starší a pak se uvidí. Předpokládám, že tím problém prostě zmizí.

Chyba v kernelu je to poslední, na co bych býval vsadil, ale asi už to tak bude...

18.9.2007 14:20 Michal Kubeček | skóre: 72 | Luštěnice
Rozbalit Rozbalit vše Re: Apache httpd nefunguje po aktualizaci na 2.2.6
Problém není v Apachi, ale v novém distribučním kernelu. Vždy o důvod víc, proč si zkompilovat vlastní.

To není tak jednoznačné. Distribuční jádra jsou obecně testována více než vanilla a při současném vývojovém modelu řady 2.6 to platí dvojnásob (zejména u 2.6.x). Samozřejmě se může stát, že distribuční patche zavlečou do jádra chybu, která ve vanilla stromu nebyla, ale obráceně je to pravděpodobnější.

18.9.2007 16:09 Andrej | skóre: 51 | blog: Republic of Mordor
Rozbalit Rozbalit vše Re: Apache httpd nefunguje po aktualizaci na 2.2.6

Konkrétně u ArchLinuxu bych nesázel na to, že distribuční jádra budou lepší než Vanilla...

17.9.2007 23:48 vasek125
Rozbalit Rozbalit vše Re: Apache httpd nefunguje po aktualizaci na 2.2.6
Odpovědět | | Sbalit | Link | Blokovat | Admin
Tak to opravu vypadá na problém s apachem. Ale stejně se zeptám, nebyl ten počítač násilně vypnut? Jste si jistý, že php skripty mohou běžet na upgradovaném sw? Např. nějaká drobná změna s aktualizací, jako že třeba program není zkompilován s parametry jako předtím. Ještě bych zkusil jednu věc, aby se opravdu vyloučilo jiné zavinění, a to zpětný downgrade apache a hned budeme moudřejší.
18.9.2007 11:10 Andrej | skóre: 51 | blog: Republic of Mordor
Rozbalit Rozbalit vše Re: Apache httpd nefunguje po aktualizaci na 2.2.6

Násilně vypnut byl mnohokrát. Pak byl vždy nabootován z CD a proveden e2fsck na všechny oddíly.

PHP skripty neobsahovaly nic nekompatibilního nebo zastaralého. Kromě toho nefungují ani statické stránky.

Asi ten downgrade budu muset udělat, i když se toho poněkud děsím... Nic jiného prostě nezbývá. Jenže kdyby to byl opravdu nový problém s Apachem, už by toho byl plný Google... Jenže ono pořád nic.

cooler avatar 18.9.2007 12:46 cooler | skóre: 19 | Medzilaborce
Rozbalit Rozbalit vše Re: Apache httpd nefunguje po aktualizaci na 2.2.6
A nevytvara niekdo hromadu poziadaviek na tento server ? Skusil by som apache pustit na inom porte na skusku.
18.9.2007 13:15 Andrej | skóre: 51 | blog: Republic of Mordor
Rozbalit Rozbalit vše Re: Apache httpd nefunguje po aktualizaci na 2.2.6

Tím to zcela jistě není. Teď to ale vypadá, že problém je (resp. brzy bude) vyřešen.

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.