fastcgi problems (connection hangs/time outs)

Attila Nagy bra at fsn.hu
Fri Oct 19 12:49:49 MSD 2007


On 10/09/07 12:23, Attila Nagy wrote:
> Hello,
>
> I have a very simple perl fastcgi application (just for testing) and 
> nginx 0.5.32 and 0.6.13.
> With both versions I get nothing in the web browser and the log says 
> that there is a timeout.
>
> ktrace of the nginx process: (the first read is from the fcgi program, 
> via localhost/TCP, same with unix socket)
> 91364 nginx    1191924703.034159 CALL  
> recvfrom(0xa,0x80fa000,0x1000,0,0,0)
> 91364 nginx    1191924703.034195 GIO   fd 10 read 85 bytes
>       0x0000 0106 0001 0035 0000 436f 6e74 656e 742d  |.....5..Content-|
>       0x0010 7479 7065 3a20 7465 7874 2f68 746d 6c0d  |type: text/html.|
>       0x0020 0a43 6f6e 7465 6e74 2d6c 656e 6774 683a  |.Content-length:|
>       0x0030 2035 0d0a 0d0a 6865 6c6c 6f0d 0a01 0600  | 5....hello.....|
>       0x0040 0100 0000 0001 0300 0100 0800 0000 0000  |................|
>       0x0050 0000 0000 00                             |.....|
>
> 91364 nginx    1191924703.034199 RET   recvfrom 85/0x55
> 91364 nginx    1191924703.034229 CALL  
> kevent(0x9,0x80b4000,0,0x80c4000,0x200,0xbfbfea60)
> 91364 nginx    1191924763.022580 RET   kevent 0
> 91364 nginx    1191924763.022613 CALL  gettimeofday(0xbfbfe9b8,0)
> 91364 nginx    1191924763.022616 RET   gettimeofday 0
> 91364 nginx    1191924763.022634 CALL  
> kevent(0x9,0x80b4000,0,0x80c4000,0x200,0xbfbfea60)
> 91364 nginx    1191924763.032573 RET   kevent 0
> 91364 nginx    1191924763.032583 CALL  gettimeofday(0xbfbfe9b8,0)
> 91364 nginx    1191924763.032585 RET   gettimeofday 0
> 91364 nginx    1191924763.032613 CALL  write(0x4,0xbfbfe1e0,0xe6)
> 91364 nginx    1191924763.032635 GIO   fd 4 wrote 230 bytes
>       "2007/10/09 12:12:43 [error] 91364#0: *1 upstream timed out (60: 
> Operat\
>        ion timed out) while reading upstream, client: 172.16.129.150, 
> server:\
>         localhost, URL: "/", upstream: "fastcgi://127.0.0.1:1026", 
> host: "jap\
>        an.asdfghj.private"
>       "
> 91364 nginx    1191924763.032639 RET   write 230/0xe6
> 91364 nginx    1191924763.033010 CALL  close(0xa)
> 91364 nginx    1191924763.033588 RET   close 0
>
> I've also tried the same program with lighttpd and there everything 
> works fine:
>
> 90925 lighttpd GIO   fd 8 read 85 bytes
>       0x0000 0106 0001 0035 0000 436f 6e74 656e 742d  |.....5..Content-|
>       0x0010 7479 7065 3a20 7465 7874 2f68 746d 6c0d  |type: text/html.|
>       0x0020 0a43 6f6e 7465 6e74 2d6c 656e 6774 683a  |.Content-length:|
>       0x0030 2035 0d0a 0d0a 6865 6c6c 6f0d 0a01 0600  | 5....hello.....|
>       0x0040 0100 0000 0001 0300 0100 0800 0000 0000  |................|
>       0x0050 0000 0000 00                             |.....|
>
> 90925 lighttpd RET   read 85/0x55
> 90925 lighttpd CALL  kevent(0x6,0xbfbfe930,0x1,0,0,0xbfbfe928)
> 90925 lighttpd RET   kevent 0
> 90925 lighttpd CALL  close(0x8)
> 90925 lighttpd RET   close 0
> [...]
> the above little page gets served to the browser.
>
> nginx config:
> worker_processes  1;
> error_log  /tmp/nginx.log  debug;
> events {
>    worker_connections  1024;
> }
> http {
>    include       mime.types;
>    default_type  application/octet-stream;
>    sendfile        on;
>    keepalive_timeout  65;
>    server {
>        listen       80;
>        server_name  localhost;
>        location / {
>                include        fastcgi_params;
>                fastcgi_pass 127.0.0.1:1026;
>                fastcgi_param  SCRIPT_FILENAME  
> /scripts$fastcgi_script_name;
>        }
>        error_page   500 502 503 504  /50x.html;
>        location = /50x.html {
>            root   /usr/local/www/nginx-dist;
>        }
>    }
> }
>
> And the program, which serves the fastcgi response:
> use FCGI::Async;
> use IO::Async::Set::IO_Poll;
>
> my $fcgi = FCGI::Async->new(
>        port => 1026,
>        on_request => sub {
>                        my ($fcgi, $req) = @_;
>                        my $page = "hello";
>                        $req->print_stdout(
>                                "Content-type: text/html\r\n".
>                                "Content-length: ".length($page)."\r\n".
>                                "\r\n".
>                                $page."\r\n"
>                        );
>                        $req->finish();
>        }
> );
>
> my $set = IO::Async::Set::IO_Poll->new();
>
> $set->add($fcgi);
> $set->loop_forever;
>
> (but I've tried with a completely different stuff, 
> POE::Component::FastCGI and the effect is the same)
>
> Any ideas?
I saw some e-mails in the archive regarding fastcgi, but not neither of 
them was about it does not work in nginx.
Could it be that it's OS specific, or is it just me? The above is on 
FreeBSD/i386.

Thanks,

-- 
Attila Nagy                                   e-mail: Attila.Nagy at fsn.hu
Free Software Network (FSN.HU)                 phone: +3630 306 6758
http://www.fsn.hu/






More information about the nginx mailing list