6 messages in ru.sysoev.nginxContinuing issues with limit_conn
FromSent OnAttachments
Stuart McKimApr 28, 2008 6:09 pm 
CalomelApr 28, 2008 8:28 pm 
Maxim DouninApr 29, 2008 12:57 am 
CalomelApr 29, 2008 8:40 am 
Stuart McKimApr 29, 2008 11:50 am 
Maxim DouninApr 30, 2008 4:16 am 
Actions with this message:
Paste this link in email or IM:
Paste this link in email or IM:
Atom feed for this thread
Paste this URL into your reader:
Subject:Continuing issues with limit_connActions...
From:Stuart McKim (mcki@public.gmane.org)
Date:Apr 28, 2008 6:09:01 pm
List:ru.sysoev.nginx

I'm still unable to get limit_conn to work as expected, despite reading as much documentation as I can find, of which there seems to be very little.

In the http section of /etc/nginx/nginx.conf I have the two lines limit_zone test-limit $binary_remote_addr 10m; limit_conn test-limit 15;

The debug output from the error log, with line numbers added, is: 01 2008/04/28 16:06:51 [debug] 19050#0: *15 write new buf t:1 f:0 080F3778, pos
080F3778, size: 240 file: 0, size: 0 02 2008/04/28 16:06:51 [debug] 19050#0: *15 http write filter: l:0 f:0 s:240 03 2008/04/28 16:06:51 [debug] 19050#0: *15 http output filter "/webtest.html?" 04 2008/04/28 16:06:51 [debug] 19050#0: *15 copy filter: "/webtest.html?" 05 2008/04/28 16:06:51 [debug] 19050#0: *15 http postpone filter
"/webtest.html?" BFEA3E58 06 2008/04/28 16:06:51 [debug] 19050#0: *15 http postpone filter out
"/webtest.html?" 07 2008/04/28 16:06:51 [debug] 19050#0: *15 write old buf t:1 f:0 080F3778, pos
080F3778, size: 240 file: 0, size: 0 08 2008/04/28 16:06:51 [debug] 19050#0: *15 write new buf t:0 f:1 00000000, pos
00000000, size: 0 file: 0, size: 212 09 2008/04/28 16:06:51 [debug] 19050#0: *15 http write filter: l:1 f:0 s:452 10 2008/04/28 16:06:51 [debug] 19050#0: *15 http write filter limit 0 11 2008/04/28 16:06:51 [debug] 19050#0: *15 tcp_nopush 12 2008/04/28 16:06:51 [debug] 19050#0: *15 writev: 240 13 2008/04/28 16:06:51 [debug] 19050#0: *15 sendfile: @0 212 14 2008/04/28 16:06:51 [debug] 19050#0: *15 sendfile: 212, @0 212:212 15 2008/04/28 16:06:51 [debug] 19050#0: *15 http write filter 00000000 16 2008/04/28 16:06:51 [debug] 19050#0: *15 copy filter: 0 "/webtest.html?" 17 2008/04/28 16:06:51 [debug] 19050#0: *15 http finalize request: 0,
"/webtest.html?" 18 2008/04/28 16:06:51 [debug] 19050#0: *15 set http keepalive handler 19 2008/04/28 16:06:51 [debug] 19050#0: *15 http close request 20 2008/04/28 16:06:51 [debug] 19050#0: *15 http log handler 21 2008/04/28 16:06:51 [debug] 19050#0: *15 run cleanup: 080F3674 22 2008/04/28 16:06:51 [debug] 19050#0: *15 file cleanup: fd:58 23 2008/04/28 16:06:51 [debug] 19050#0: *15 run cleanup: 080F363C 24 2008/04/28 16:06:51 [debug] 19050#0: *15 free: 080F3178, unused: 2091 25 2008/04/28 16:06:51 [debug] 19050#0: *15 event timer add: 23:
75000:2538275930 26 2008/04/28 16:06:51 [debug] 19050#0: *15 free: 080B7770 27 2008/04/28 16:06:51 [debug] 19050#0: *15 free: 080F2D70 28 2008/04/28 16:06:51 [debug] 19050#0: *15 hc free: 00000000 0 29 2008/04/28 16:06:51 [debug] 19050#0: *15 hc busy: 00000000 0 30 2008/04/28 16:06:51 [debug] 19050#0: *15 http keepalive handler 31 2008/04/28 16:06:51 [debug] 19050#0: *15 malloc: 080F2D70:1024 32 2008/04/28 16:06:51 [debug] 19050#0: *15 recv: fd:23 -1 of 1024 33 2008/04/28 16:06:51 [debug] 19050#0: *15 recv() not ready (11: Resource
temporarily unavailable) 34 2008/04/28 16:06:51 [debug] 19050#0: *16 malloc: 080B7770:632 35 2008/04/28 16:06:51 [debug] 19050#0: *16 malloc: 080F3178:1024 36 2008/04/28 16:06:51 [debug] 19050#0: *16 malloc: 080F3580:4096 37 2008/04/28 16:06:51 [debug] 19050#0: *16 http process request line 38 2008/04/28 16:06:51 [debug] 19050#0: *16 recv: fd:24 122 of 1024 39 2008/04/28 16:06:51 [debug] 19050#0: *16 http request line: "GET
/webtest.html HTTP/1.0" 40 2008/04/28 16:06:51 [debug] 19050#0: *16 http uri: "/webtest.html" 41 2008/04/28 16:06:51 [debug] 19050#0: *16 http args: "" 42 2008/04/28 16:06:51 [debug] 19050#0: *16 http exten: "html" 43 2008/04/28 16:06:51 [debug] 19050#0: *16 http process request header line 44 2008/04/28 16:06:51 [debug] 19050#0: *16 http header: "User-Agent:
ApacheBench/1.3d" 45 2008/04/28 16:06:51 [debug] 19050#0: *16 http header: "Connection:
Keep-Alive" 46 2008/04/28 16:06:51 [debug] 19050#0: *16 http header: "Host:
mckim1.osuosl.org" 47 2008/04/28 16:06:51 [debug] 19050#0: *16 http header: "Accept: */*" 48 2008/04/28 16:06:51 [debug] 19050#0: *16 http header done 49 2008/04/28 16:06:51 [debug] 19050#0: *16 event timer del: 24: 2538800922 50 2008/04/28 16:06:51 [debug] 19050#0: *16 find location for "/webtest.html" 51 2008/04/28 16:06:51 [debug] 19050#0: *16 using configuration "" 52 2008/04/28 16:06:51 [debug] 19050#0: *16 http cl:-1 max:1048576 53 2008/04/28 16:06:51 [debug] 19050#0: *16 generic phase: 1 54 2008/04/28 16:06:51 [debug] 19050#0: *16 add cleanup: 080F3A44 55 2008/04/28 16:06:51 [debug] 19050#0: *16 limit zone: E1F43BF3 1 56 2008/04/28 16:06:51 [debug] 19050#0: *16 access phase: 2 57 2008/04/28 16:06:51 [debug] 19050#0: *16 access phase: 3 58 2008/04/28 16:06:51 [debug] 19050#0: *16 post access phase: 4 59 2008/04/28 16:06:51 [debug] 19050#0: *16 content phase: 5 60 2008/04/28 16:06:51 [debug] 19050#0: *16 content phase: 6 61 2008/04/28 16:06:51 [debug] 19050#0: *16 content phase: 7 62 2008/04/28 16:06:51 [debug] 19050#0: *16 http set discard body 63 2008/04/28 16:06:51 [debug] 19050#0: *16 http filename:
"/var/www/nginx/htdocs1/webtest.html" 64 2008/04/28 16:06:51 [debug] 19050#0: *16 add cleanup: 080F3A7C 65 2008/04/28 16:06:51 [debug] 19050#0: *16 http static fd: 58 66 2008/04/28 16:06:51 [debug] 19050#0: *16 HTTP/1.1 200 OK 67 Server: nginx/0.6.29 68 Date: Mon, 28 Apr 2008 23:06:51 GMT 69 Content-Type: text/html 70 Content-Length: 212 71 Last-Modified: Fri, 11 Apr 2008 21:43:45 GMT 72 Connection: keep-alive 73 Keep-Alive: timeout=20 74 Accept-Ranges: bytes

This is repeated many times, with the *XX number being the only significant change. The "limit zone: E1F43BF3 1" line is always identical.

If I do not use the limit_zone and limit_conn lines in my config, or exclude just the limit_conn line, the debug output appears to be the same except I don't see the lines 21 2008/04/28 16:06:51 [debug] 19050#0: *15 run cleanup: 080F3674 54 2008/04/28 16:06:51 [debug] 19050#0: *16 add cleanup: 080F3A44 55 2008/04/28 16:06:51 [debug] 19050#0: *16 limit zone: E1F43BF3 1

I'm not really sure what I should expect to see in the debug output, but it would appear that the module is trying to at least do something.

The catch is that with 1000 connections, in sessions with 50 concurrent connections, I'm expecting to see some 503 returns from the server, but the server responds with 200 every time. This is not proper behaviour, correct? As far as I can tell, this is a bug.

I am using version 0.6.29.

Has anybody had any success with using this module? If so, how did you test it?

If more information would be useful, I can provide it.

Thanks, Stuart