apache segfault (finaly solved)
Jan Kokoska
kokoska.jan na globe.cz
Úterý Prosinec 16 12:39:57 CET 2003
Dobry den,
skutecne malo prekvapujici, doporucuji predem precist dokumentaci:
phpdoc/html/install.apache2.html: Do not use Apache 2.0 and PHP in a
production environment neither on Unix nor on Windows.
Tuhle hlasku by slo jeste upresnit: Nepouzivejte vlaknovy model Apache
2.0 s PHP, ktere mate slinkovane s knihovnami, o nichz nevite s jistotou
je _jsou_ thread-safe.
Worker MPM je vlaknove, klasicky Prefork neni.. jako priklad knihovny v
PHP, ktere rozhodne s vlakny _maji_ problem uvedu GD (graficka knihovna
libgd), resp. freetype.
Freetypove glyphy jsou manipulovany v jedne font cache, takze nelze
pocitat s tim, ze by dve vlakna soucasne vykreslujici text s pomoci
libgd mohla uspet.
Takovych prikladu je cela rada, knihoven bezne linkovanych s PHP je
takove mnozstvi, ze ani autori PHP, ani jina iniciativa (napr. vyvojari
Apache), zatim nepristoupili (a podle vyjadreni na php listu ani
pristoupit nehodlaji) k masovemu odladovani klasickych knihoven s
pozadavkem na reentranci funkci - je to pomerne netrivialni zalezitost,
ktera by si casto vyzadala kompletni redesign knihovny.
Direktivou MaxRequestsPerChild 0 jste tomu skutecne trochu pomohl, na
kazdy request se inicializovalo nove vlakno s vlastnim stackem, takze
prilezitosti ke kolizim byly pouze v race condition s jinymi vlakny,
kterym se ovsem takhle take vyhnout neda a navic se zbavujete vykonu,
ktery patrne vlakny doufate ziskat ('levnejsi' inicializace oproti
fork()).
Tzn. Apache 2 threaded + PHP = ne, pokud opravdu presne nevite, co
delate (nejste ochoten odladovat cizi knihovny).
On Sun, 2003-12-14 at 23:50, dd na daemond.com wrote:
> Takze jsem to tentokrat uz opravdu VYRESIL
>
> namisto pouzivaneho mpm worker jsem prekompiloval apache s mpm prefork.
>
> Vsechno funguje tak jak ma, apache nepada a dokonce i apachectl restart
> funguje tak jak ma.
--
Jan Kokoska - Programator IT aplikaci
=========================
kokoska.jan na globe.cz
Mobil: +420 728 286 070
ICQ: 85 53 59 04
=========================
Globe Internet, s.r.o. - http://globe.cz
Planickova 1, 162 00 Praha 6 - http://mapa.globe.cz
Další informace o konferenci Linux