Thread View: pl.comp.lang.perl
5 messages
5 total messages
Started by Cezar
Tue, 30 Jun 2009 14:05
signals (lighttpd + mod_fastcgi)
Author: Cezar
Date: Tue, 30 Jun 2009 14:05
Date: Tue, 30 Jun 2009 14:05
73 lines
2874 bytes
2874 bytes
Witam,
Jedna z uslug, którą potrzebuje zaimplementować musi przyjąć kilkaset
zapytań na sekunde.
Wybór padł na fastcgi i lighttpd .. bo dobrze o nich piszą :)
Niestety mam pewien problem z przechwytywanim signals ... albo po prostu
czegoś nie rozumiem.
Robie tak jak w przykładach:
fastcgi.server = (
".pl" =>
((
"fastcgi.debug" => 50000,
"bin-path" => "/var/www/http/test.pl",
"socket" => "/tmp/lighttpd.perl.fcgi",
"check-local" => "disable",
"min-procs" => 1,
"max-procs" => 5,
"idle-timeout" => 20
))
)
Przepisałem juz swoj wczesniejszy skrypt, który działał na
POE::Component::Server::HTTP na CGI:Fast czy tez FCGI i wyszystko działa
pięknie, jak oczekiwałem jeśli chodzi o wydajność ... ale
niestety w zaden sposob nie przechytuje ani SIGTERM ani SIGUSR1.
Nawet po zabiciu/zamknięciu lighttpd, procesy 'test.pl' zostają dalej
uruchomione i jedyne na co reagują to SIGKILL.
Ten sam efekt jest gdy uzywam przykladowego skryptu ze strony
http://www.fastcgi.com/docs/faq.html#PerlSignals :
#!/usr/local/bin/perl -w
use FCGI;
use strict;
my $count = 0;
my $handling_request = 0;
my $exit_requested = 0;
my $request = FCGI::Request();
sub sig_handler {
$exit_requested = 1;
exit(0) if !$handling_request;
}
$SIG{USR1} = \&sig_handler;
$SIG{TERM} = \&sig_handler;
$SIG{PIPE} = 'IGNORE';
while ($handling_request = ($request->Accept() >= 0)) {
&do_request;
$handling_request = 0;
last if $exit_requested;
}
$request->Finish();
exit(0);
sub do_request() {
print("Content-type: text/html\r\n\r\n", ++$count);
$request->Finish();
}
Czy ktoś ma pomysł co robię źle lub może mi wytłumaczyć dlaczego tak jest?
(i musi tak być) :)
Re: signals (lighttpd + mod_fastcgi)
Author: Marcin Gryszkalis
Date: Wed, 01 Jul 2009 04:47
Date: Wed, 01 Jul 2009 04:47
26 lines
1405 bytes
1405 bytes
Cezar wrote:
> Nawet po zabiciu/zamknięciu lighttpd, procesy 'test.pl' zostają dalej
> uruchomione i jedyne na co reagują to SIGKILL.
> sub sig_handler {
> $exit_requested = 1;
> exit(0) if !$handling_request;
> }
> while ($handling_request = ($request->Accept() >= 0)) {
> &do_request;
> $handling_request = 0;
> last if $exit_requested;
> }
może na przykład wiszą sobie w jakimś miejscu gdzie masz ustawione
handling_request na 1, np. tutaj:
> $request->Finish();
ale strzelam zupełnie w ciemno :)
pozdrawiam
--
Marcin Gryszkalis, PGP 0x9F183FA3
jabber jid:mg@fork.pl, gg:2532994
http://the.fork.pl
Re: signals (lighttpd + mod_fastcgi)
Author: Cezar
Date: Wed, 01 Jul 2009 08:45
Date: Wed, 01 Jul 2009 08:45
19 lines
1616 bytes
1616 bytes
> może na przykład wiszą sobie w jakimś miejscu gdzie masz ustawione > handling_request na 1, np. tutaj: > >> $request->Finish(); > > ale strzelam zupełnie w ciemno :) > pozdrawiam nie,nie ... to nie to. Sygnaly nie są wcale odbierane. Nawet wrzuciłem wypluwanie czegoś do sysloga w 'sig_handler' i absolutnie nic nie zapisuje. Dodam jeszcze ze jak dodam w konfiguracji lighttpd: "kill-signal" => 9 czyli SIGKILL, to procesy zostają poprawnie zabite.... ale nie o to mi do końca chodzi. Skrypty nawiązują połączenia, które potrzebuje 'gracefully' zamknąć. c.
Re: signals (lighttpd + mod_fastcgi)
Author: Adam Osuchowski
Date: Wed, 08 Jul 2009 08:43
Date: Wed, 08 Jul 2009 08:43
5 lines
955 bytes
955 bytes
Cezar wrote: > Czy ktoś ma pomysł co robię źle lub może mi wytłumaczyć dlaczego tak jest? > (i musi tak być) :) Poczytaj rozdział ,,Deferred Signals (Safe Signals)'' w dokumentacji perlipc.
Re: signals (lighttpd + mod_fastcgi)
Author: Cezar
Date: Wed, 08 Jul 2009 17:38
Date: Wed, 08 Jul 2009 17:38
14 lines
1360 bytes
1360 bytes
"Adam Osuchowski" <someone@somewhere.com> wrote in message news:20090708084302.6b8b4567@polsl.pl... > Cezar wrote: >> Czy ktoś ma pomysł co robię źle lub może mi wytłumaczyć dlaczego tak >> jest? >> (i musi tak być) :) > > Poczytaj rozdział ,,Deferred Signals (Safe Signals)'' w dokumentacji > perlipc. dzieki, pomoglo. c.
Thread Navigation
This is a paginated view of messages in the thread with full content displayed inline.
Messages are displayed in chronological order, with the original post highlighted in green.
Use pagination controls to navigate through all messages in large threads.
Back to All Threads