gadar 0 Zgłoś post Napisano Styczeń 18, 2009 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
Dariusz Cieślak 3 Zgłoś post Napisano Styczeń 21, 2009 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