ПРОЕКТЫ 


  АРХИВ 


Apache-Talk @lexa.ru 

Inet-Admins @info.east.ru 

Filmscanners @halftone.co.uk 

Security-alerts @yandex-team.ru 

nginx-ru @sysoev.ru 


  СТАТЬИ 


  ПЕРСОНАЛЬНОЕ 


  ПРОГРАММЫ 



ПИШИТЕ
ПИСЬМА












     АРХИВ :: nginx-ru
Nginx-ru mailing list archive (nginx-ru@sysoev.ru)

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

nginx, fastcgi php and invision powerboard 2.1.7 (ajax?)



Привет.

Поставил nginx 0.5.4, php 5.2.0 как fastcgi. Система FreeBSD 6.1.
На всём этом стоит движок форума invision powerboard 2.1.7. Это делалось на 
замену обычной связке - апаче+mod_php и nginx как фронтенд.

Всё заработало с виду нормально, но после часа эксплуатации заметили некоторые 
проблемы. Самое основное это ошибки при использовании AJAX-фичи для быстрого 
редактирования своих сообщений:
2006/12/17 16:10:00 [error] 55895#0: *28759 upstream prematurely closed 
connection while reading response header from upstream, client: 10.0.1.31, 
server: forum.tld, URL: 
"/index.php?s=&act=xmlout&do=post-edit-save&p=3213952&t=404709&f=129", 
upstream: "fastcgi://unix:/tmp/php.sock:", host: "forum.tld", referrer: 
"http://forum.tld/index.php?showtopic=404709";

Для клиента это выглядит так - выбираешь опцию "Быстрое редактирование", 
правишь сообщение, нажимаешь "Применить исправления", появляется бегунок и на 
этом всё, более никаких изменений.
В логах PHP при этом ругань о преждевременной (premature) кончине скрипта 
sources/ipclass.php, с указанием строки 3737 (к сожалению точных логов не 
сохранилось):
    /**
        * UnHTML and stripslashes _GET _POST value
    *
        * @param        string  Input
        * @return       string  Cleaned Input
        * @since        2.1
        */
    function parse_clean_value($val)
    {
        if ($val == "") # <<< вот строка номер 3737 <<<
        {
                return "";
        }

Я грешил на отсутствие некоторых переменных, которые не передавались в 
fastcgi, но эксперименты ними не помогли. Вот конфиг nginx в части fastcgi:
location ~* ^.+\.(php)$ {
    fastcgi_pass unix:/tmp/php.sock;
    fastcgi_index  index.php;

# пробовал с минимумом параметров:
    fastcgi_param  PATH_TRANSLATED    $fastcgi_path_translated;
    fastcgi_param  QUERY_STRING       $query_string;

# потом с параметрами для метода POST:
    fastcgi_param  REQUEST_METHOD     $request_method;
    fastcgi_param  CONTENT_TYPE       $content_type;
    fastcgi_param  CONTENT_LENGTH     $content_length;

# и со всеми параметрами, какие нашёл:
    fastcgi_param  REDIRECT_STATUS    200;
    fastcgi_param  SCRIPT_FILENAME    $fastcgi_path_translated;
    fastcgi_param  SCRIPT_NAME        $fastcgi_script_name;
    fastcgi_param  REQUEST_URI        $request_uri;
    fastcgi_param  DOCUMENT_URI       $document_uri;
    fastcgi_param  DOCUMENT_ROOT      $document_root;
    fastcgi_param  SERVER_PROTOCOL    $server_protocol;
    fastcgi_param  GATEWAY_INTERFACE  CGI/1.1;
    fastcgi_param  REMOTE_ADDR        $remote_addr;
    fastcgi_param  REMOTE_PORT        $remote_port;
    fastcgi_param  SERVER_ADDR        $server_addr;
    fastcgi_param  SERVER_PORT        $server_port;
    fastcgi_param  SERVER_NAME        $server_name;
}

А вот так запускается php:
PHP_FCGI_CHILDREN=10 /usr/local/php520/bin/php -a -b /tmp/php.sock


Кроме этого возникала другая ошибка, которую мне не удалось привязать к 
конкретному действию на форуме (вероятно какие ресурсоёмкие запросы, типа 
поиска):
2006/12/17 16:10:50 [error] 55893#0: *29240 FastCGI sent in stderr: "PHP Fatal 
error:  Out of memory (allocated 2883584) (tried to allocate 1732099484 
bytes) in /www/forum/sources/sql/mysql_extra_que
ries.php on line 70" while reading response header from upstream, client: 
195.38.161.6, server: forum.tld, URL: 
"/index.php?s=&act=xmlout&do=get-member-names&name=%u041F%u0438%u043B%u044E%u0
43B%u044F&__=1166350279734", upstream: "fastcgi://unix:/tmp/php.sock:", host: 
"forum.tld", referrer: "http://forum.tld/index.php?act=Search&f=";

Т.е. php запросил 1.7 гига памяти, в то время когда ему выдано 2.8 метра )



После часа экспериментов на живых людях пришлось откатиться к старой схеме с 
апачем (

Есть ли у кого-нибудь какие замечания по устранению этих проблем?
Спасибо.
Малик.



 




Copyright © Lexa Software, 1996-2009.