У нас используется немного другая фигня, поскольку с CGI::Fast были
какие-то проблемы (не спрашивайте, может не умеем готовить)
=============================
use CGI ();
use FCGI ();
local *CGI::save_request;
*CGI::save_request = sub {};
my $request = FCGI::Request();
while($request->Accept() >= 0) {
my $q = CGI->new;
}
=============================
По твоим симптомам проблема где-то в CGI, но возможно в fcgi-spawn, я
иногда вместо его использую такой перловый код
==================================
use IO::Socket::INET;
use Getopt::Long;
our $PORT = 8888;
Getopt::Long::GetOptions( "port|p=s", \$PORT ) or exit 1;
my $s = IO::Socket::INET->new( Listen => 100, Reuse => 1, LocalPort =>
$PORT ) or die "$!";
open STDIN, "<&", $s;
exec "perl", "your fcgi.pl";
========================
20.11.2013 21:21, Grigory Batalov пишет:
Всем привет!
Моё FastCGI-приложение недавно начало странно зависать.
Выражается это в отказе принимать соединения некоторыми
из запущенных (идентичных) процессов, а потом и остальных.
При этом они реагируют на SIGHUP, сбрасывая в журнал статистику.
Как бы мне научиться его отлаживать и найти проблемное место?
В скрипте используется цикл
while ($loop) {
my $q = CGI::Fast->new;
...
}
Примитивное журналирование показывает, что дальше этого места
в цикле не идёт. (Но и процесс не завершается, как если бы
$loop стал 0 .)
Несколько процессов запускаются с помощью
spawn-fcgi -p <port> /path/to/script
и разными портами.
В качестве фронтенда - nginx, настройка:
upstream mine {
server localhost:8082;
server localhost:8083;
server localhost:8084;
}
location /mine/ {
fastcgi_pass mine;
fastcgi_index index.cgi;
fastcgi_param SCRIPT_FILENAME mine.pl;
fastcgi_param QUERY_STRING $query_string;
fastcgi_param REQUEST_METHOD $request_method;
fastcgi_param CONTENT_TYPE $content_type;
fastcgi_param CONTENT_LENGTH $content_length;
fastcgi_param REMOTE_ADDR $remote_addr;
}
В логах вижу
2013/11/20 12:24:02 [error] 12753#0: *22971445 recv() failed (104: Connection reset by peer) while reading
response header from upstream, client: x.x.x.x, server: localhost, request: "POST /mine/ HTTP/1.1",
upstream: "fastcgi://127.0.0.1:8082", host: "mine:8080"
После чего, не найдя ничего лучше, перезапускаю скрипты.
Куда копать?
--
С уважением Анатолий.
--
Moscow.pm mailing list
[email protected] | http://moscow.pm.org