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