Skocz do zawartości
gadar

problem z fastcgi+suexec+apache

Polecane posty

Chciałem ustawić sobie php w trybie fastcgi.

 

FastCgiIpcDir /usr/aa

AddHandler fastcgi-script .fcgi

FastCgiSuexec /usr/h2/bin/suexec

FastCgiConfig -killInterval 30 -pass-header HTTP_AUTHORIZATION -startDelay 3

 

<Location /php-fastcgi/>

Options ExecCGI

SetHandler fastcgi-script

</Location>

 

<VirtualHost *>

ServerAlias adres.strony.pl

DocumentRoot /home/user/public_html/

SuexecUserGroup user user

 

ScriptAlias /php-fastcgi/ /usr/suexec/

AddType application/x-httpd-fastphp .php

Action application/x-httpd-fastphp /php-fastcgi/fcgi

 

</VirtualHost>

 

I wszystko działa. Ale problem jest taki że jak np skrypt PHP się długo wykonuje, np 22 sekundy to co 3 sekundy spawnuje mi się kolejny child (wg. ust startDelay). Zajęty jest tak naprawde tylko jeden child, obróbka 22 sekundowego skryptu, ale spawnuje mi się maksimum wolnych childów (do ust -maxClassProcesses). To wygląda tak jakby fastcgi miał błąd i sprawdzał czy są wolne childy sprawdzając tylko ten pierwszy za każdym razem i za każdym razem gdy jest zajęty co 3 sekundy spawnował nie potrzebne wolne childy. Równolegle mogę odpalić jakiś szybki 1 sekundowy skrypcik i leci bez problemu bo childy są wolne, ale spawuje się ich max, co jest równoznaczne z odpaleniem ich statycznej ilości.

Wiem że można zrobić jeszcze wraper bashowy do fcgi, ale to nie ma sensu w użyciu z suexec, a bład jest ten sam wtedy jak sprawdzałem. Mogłbym ustawić startDelay na dużą wartośc ale wtedy faktycznie gdy zabraknie childów to się nie odpali nowy przez tyle sekund.

Udostępnij ten post


Link to postu
Udostępnij na innych stronach
I wszystko działa. Ale problem jest taki że jak np skrypt PHP się długo wykonuje, np 22 sekundy to co 3 sekundy spawnuje mi się kolejny child (wg. ust startDelay). Zajęty jest tak naprawde tylko jeden child, obróbka 22 sekundowego skryptu, ale spawnuje mi się maksimum wolnych childów (do ust -maxClassProcesses).
Proponuję ustawić "LogLevel debug" w konfiguracji Apache i podesłać fragment error.log. To powinno wyjaśnić zagadkę.

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

Bądź aktywny! Zaloguj się lub utwórz konto

Tylko zarejestrowani użytkownicy mogą komentować zawartość tej strony

Utwórz konto

Zarejestruj nowe konto, to proste!

Zarejestruj nowe konto

Zaloguj się

Posiadasz własne konto? Użyj go!

Zaloguj się


×