[MEGOLDVA]Apache2 reload során elhaló mod_fcgid processek

Fórumok

Üdv!

Jelenleg van egy apache2 webszerverem, mely több Virtual Host-ot szolgál ki, így egy osztott tárhelyet üzemeltet. Eddig mod_php-t használtam, viszont úgy gondoltam áttérek a mod_fcgid-re, több oknál fogva.

Rendszer:
- Debian Lenny
- Apache 2.2.9
- PHP 5.2.6-1+lenny9
- mod_fcgid

Viszont van egy saját fejlesztésű webadmin panelem, ami például Virtual Host hozzáadásakor szépen futtat egy "/etc/init.d/apache2 reload" parancsot, és ekkor jön elő a gond. A böngésző szerint a kapcsolat megszakadt, a log szerint meg:


[Sat Sep 11 10:24:26 2010] [emerg] mod_fcgid: server is restarted, 8051 must exit
[Sat Sep 11 10:24:26 2010] [emerg] (22)Invalid argument: mod_fcgid: can't get lock, pid: 8051
[Sat Sep 11 10:24:26 2010] [emerg] mod_fcgid: server is restarted, 8056 must exit
[Sat Sep 11 10:24:26 2010] [emerg] (22)Invalid argument: mod_fcgid: can't get lock, pid: 8056
[Sat Sep 11 10:24:26 2010] [emerg] mod_fcgid: server is restarted, 8052 must exit
[Sat Sep 11 10:24:26 2010] [emerg] (22)Invalid argument: mod_fcgid: can't get lock, pid: 8052

Akárhol keresgéltem, megoldást nem nagyon leltem rá, egyenlőre kényszer megoldás, hogy a script késleltetve reloadol 10 másodperccel, de ettől még elhalnak a php processek minden más oldalon, ami nem jó. Egyedül olyanokat olvastam, hogy az apache processnek más pid-je lesz, és az fcgid már nem tud vele kommunikálni, de megoldást nem találtam.

Segítségeteket előre is köszönöm!

Szerk:
Frissítettem a legújabb 2.3.5-re, talán ezzel már nem lesz ilyen gond (bár még nem a lenny tárolóban volt, hanem a sid-ben)

Hozzászólások

miért nem mod_fastcgi-t használsz? ott nem tapasztaltam ilyet.

fastcgi-nel a reload szerinten ujrainditja a php-cgi peldanyokat, emiatt van, hogy gyakorlatilag lekilleled sajat magad.
a szep megoldas az lenne, hogy inditasz egy kulon processzt a php scriptedbol, ami inditja a reload-ot, mert valszeg az graceful-t nyomna, azaz megvarna, mig kifutnak a keresek, csak biztos van valami timeoutja, ami utan ha nem lep ki a peldany, akkor kilovi.
namost mivel a reload-ot valoszinuleg nem hatterben futtatod, ezert a php exec vagy system hivasod meg akarja varni a reload lefutasat, ami meg akarja varni a fastcgi manager valaszat, ami meg akarja varni a child-ok graceful ujraindulasat, es itt lett egy korkoros varakozasod, ami egy ido utan megszakad, mert a manager kikilleli a hangelo childot, de ez persze abortalja azt a lapletoltest.

szerintem

Tyrael

Eredetileg van egy script, ami exec-el kerül megnyitásra, most raktam bele timeoutot, és háttérben indul, tehát a webadmin nem várakozik rá, viszont amint a timeout letelik, és én akkor frissítek egy oldalt, akkor ugyanúgy látszik, hogy elhalt a folyamat + a logban is látszik.