Nginx-0.7.52

Changes with nginx 0.7.52 20 Apr
2009

*) Feature: the first native Windows binary release.

*) Bugfix: in processing HEAD method while caching.

*) Bugfix: in processing the "If-Modified-Since", "If-Range", etc.
   client request header lines while caching.

*) Bugfix: now the "Set-Cookie" and "P3P" header lines are hidden in
   cacheable responses.

*) Bugfix: if nginx was built with the ngx_http_perl_module and with 

a
perl which supports threads, then during a master process exit
the
message “panic: MUTEX_LOCK” might be issued.

*) Bugfix: nginx could not be built --without-http-cache; the bug 

had
appeared in 0.7.48.

*) Bugfix: nginx could not be built on platforms different from 

i386,
amd64, sparc, and ppc; the bug had appeared in 0.7.42.

Is there a special way to start the windows version? Double-clicking
did nothing, and running from a prompt did nothing.


Kevin W.

2009/4/19 Igor S. [email protected]:

On Sun, Apr 19, 2009 at 09:12:37PM -1000, Kevin W. wrote:

Is there a special way to start the windows version? Double-clicking
did nothing, and running from a prompt did nothing.

cd c:
unzip nginx-0.7.52.zip
ren nginx-0.7.52 nginx
cd nginx
start nginx

Control:

nginx -s [ stop | quit | reopen | reloadf ]

For problems look in c:\nginx\logs\error.log or in EventLog.

Thanks for your hardwork. Do you have a plan to release the source of
Windows version?


From:Igor S.
Date:2009-04-20 14:40:53
To:nginx
CC:
Subject:nginx-0.7.52

Changes with nginx 0.7.52 20 Apr
2009

*) Feature: the first native Windows binary release.

*) Bugfix: in processing HEAD method while caching.

*) Bugfix: in processing the "If-Modified-Since", "If-Range", etc.
   client request header lines while caching.

*) Bugfix: now the "Set-Cookie" and "P3P" header lines are hidden in
   cacheable responses.

*) Bugfix: if nginx was built with the ngx_http_perl_module and with 

a
perl which supports threads, then during a master process exit
the
message “panic: MUTEX_LOCK” might be issued.

*) Bugfix: nginx could not be built --without-http-cache; the bug 

had
appeared in 0.7.48.

*) Bugfix: nginx could not be built on platforms different from 

i386,
amd64, sparc, and ppc; the bug had appeared in 0.7.42.


Igor S.
http://sysoev.ru/en/

On Mon, Apr 20, 2009 at 06:38:52PM +0800, Weibin Y. wrote:

Thanks for your hardwork. Do you have a plan to release the source of Windows version?

Yes, after I will adopt ./configure for MSYS.
Currently I ./configure nginx/Windows on FreeBSD using Wine in some
places
and I do want to support this procedure.

Changes with nginx 0.7.52 20 Apr 2009

*) Feature: the first native Windows binary release.

A really good news for me. I’m waiting for it for a long time.

I think many people will try to use native Windows binary, although they
did not say something about this like me.

Robert Kwok

2009/4/20 郭振立 [email protected]:

Changes with nginx 0.7.52 20 Apr 2009

*) Feature: the first native Windows binary release.

A really good news for me. I’m waiting for it for a long time.

I think many people will try to use native Windows binary, although they did
not say something about this like me.

Indeed, does it make use of IOCP? is it supposed to be reasonably high
performance?

On Mon, Apr 20, 2009 at 03:13:33PM +0400, Igor S. wrote:

On Mon, Apr 20, 2009 at 06:38:52PM +0800, Weibin Y. wrote:

Thanks for your hardwork. Do you have a plan to release the source of Windows version?

Yes, after I will adopt ./configure for MSYS.
Currently I ./configure nginx/Windows on FreeBSD using Wine in some places
and I do want to support this procedure.

I do NOT want …

On Mon, Apr 20, 2009 at 04:42:12PM +0200, Joaquin Cuenca Abela wrote:

Indeed, does it make use of IOCP? is it supposed to be reasonably high
performance?

No, currently it uses select(), therefore it would be slow and
noscaleable. “We call it BETA as it’s better than nothing”.
The next step will be IOCP with single thread, then with several
threads:
currently nginx is designed as single thread application, so
it’s required to set mutexes and locks in various places.

BTW, could someone run the simple small static file benchmark for
nginx/Windows, nginx/Cygwin, Apache2 and IIS (from another host):

ab -n 1000 -c 1 …
ab -n 1000 -c 10 …
ab -n 1000 -c 1 -k …

?

Thanks for the response. I am eager to try this out later.


Kevin W.

Anyone know why the following wouldn’t prompt for an id and password?
It
just goes directly to my 401 (requires authorization) page.

location ~ /(directory1/|directory2/|directory3/).* { fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; include fastcgi_params; auth_basic "Restricted"; auth_basic_user_file /etc/nginx/htpasswd; }

Thanks for this release! I’ve been trying to get nginx going on Windows
for a while now.

With this latest build though, all I can get is “No input file
specified”. I thought maybe I was specifying paths in a way it didn’t
like but I’ve tried every variation on the Windows paths I can think
of. This is my current conf for one of my sites. Can anyone tell me
what’s wrong here? TIA.

server {

listen 127.0.0.1:80;

listen 80;
server_name jobsite.xpdesktop;

access_log
“c:/cygwin/home/Chris/www/live/jobsite/logs/jobsite.access.log”;
error_log
“c:/cygwin/home/Chris/www/live/jobsite/logs/jobsite.error.log” debug;

root “c:/cygwin/home/Chris/www/live/jobsite/trunk/html/public”;
index index.php index.html;

location / {
fastcgi_pass 127.0.0.1:9000;
fastcgi_param SCRIPT_FILENAME
“c:/cygwin/home/Chris/www/live/jobsite/trunk/html/public/index.php”;
fastcgi_param QUERY_STRING q=$request_uri;
include “c:/nginx/conf/fastcgi_params”;
}

location ~ .php$ {
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME
“c:/cygwin/home/Chris/www/live/jobsite/trunk/html/public/$fastcgi_script_name”;
fastcgi_param QUERY_STRING q=$request_uri;
include “c:/nginx/conf/fastcgi_params”;
}
}

On Tue, Apr 21, 2009 at 03:51:57PM +0800, Weibin Y. wrote:

core.c
Requests per second: 703.30 [#/sec] (mean)
Test case2:
ab.exe -k -n 10000 -c 1 http://127.0.0.1/
ab.exe -n 10000 -c 1 http://127.0.0.1/

Welcome to nginx!

2. OS: Windows XP sp3, professional 3. CPU: Inlel pentium(R)4 3.0G 3.0G, memory: 1G. This is my PC, Dell 170L.

Thank you, this is really surprise for me, I did not expect this.
I needed this this simple benchmark to estimate Winsocket overhead.
Could you also try the Cygwin 0.7.50 build:

?

Could anyone test nginx against IIS/6 and /7 ?

BTW, could someone run the simple small static file benchmark for
nginx/Windows, nginx/Cygwin, Apache2 and IIS (from another host):

ab -n 1000 -c 1 …
ab -n 1000 -c 10 …
ab -n 1000 -c 1 -k … "

This is my rough test results. It seems that the
Windows version of Nginx is really great, even
with the simple ‘select’ method.

But it’s just a test with a small single static file.
We need more real test cases between these web
servers in Windows.


Test case1:
Apache2.2.11 with all default configration

httpd.exe -l
Compiled in modules:
core.c
mod_win32.c
mpm_winnt.c
http_core.c
mod_so.c

ab.exe -n 10000 -c 1 http://127.0.0.1/
Requests per second: 497.57 [#/sec] (mean)
CPU load: about 68%

ab.exe -n 10000 -c 10 http://127.0.0.1/
Requests per second: 703.30 [#/sec] (mean)
CPU load: about 100%

ab.exe -k -n 10000 -c 1 http://127.0.0.1/
Requests per second: 910.38 [#/sec] (mean)
CPU load: about 59%

ab.exe -k -n 10000 -c 10 http://127.0.0.1/
Requests per second: 1198.50 [#/sec] (mean)
CPU load: about 100%

Test case2:
IIS/5.1 with all default configration.

ab.exe -n 10000 -c 1 http://127.0.0.1/
Requests per second: 534.22 [#/sec] (mean)
CPU load: about 65%

ab.exe -n 10000 -c 10 http://127.0.0.1/
Requests per second: 829.02 [#/sec] (mean)
CPU load: about 100%, Failed requests: 49

ab.exe -k -n 10000 -c 1 http://127.0.0.1/
Requests per second: 1207.55 [#/sec] (mean)
CPU load: about 60%

ab.exe -k -n 10000 -c 10 http://127.0.0.1/
Requests per second: 1600.00 [#/sec] (mean)
CPU load: about 100%

Test case3:
nginx/0.7.52 with all default configration.

ab.exe -n 10000 -c 1 http://127.0.0.1/
Requests per second: 903.95 [#/sec] (mean)
CPU load: about 65%

ab.exe -n 10000 -c 10 http://127.0.0.1/
Requests per second: 1012.66 [#/sec] (mean)
CPU load: about 90%

ab.exe -k -n 10000 -c 1 http://127.0.0.1/
Requests per second: 2424.24 [#/sec] (mean)
CPU load: about 68%

ab.exe -k -n 10000 -c 10 http://127.0.0.1/
Requests per second: 2529.64 [#/sec] (mean)
CPU load: about 67%

My test platform:

  1. All tested index page is:
Welcome to nginx!

Welcome to nginx!

2. OS: Windows XP sp3, professional 3. CPU: Inlel pentium(R)4 3.0G 3.0G, memory: 1G. This is my PC, Dell 170L.

On Tue, Apr 21, 2009 at 03:51:57PM +0800, Weibin Y. wrote:

But it’s just a test with a small single static file.
We need more real test cases between these web
servers in Windows.

Just note for everyone: “-c 10” (concurrency 10) is far from real world
usage. The select() method used by nginx is poor scaleable for
concurrency
more than 100-200.

Thank you, this is really surprise for me, I did not expect this.
I needed this this simple benchmark to estimate Winsocket overhead.
Could you also try the Cygwin 0.7.50 build:
Nginx for Windows - 32-bit and 64-bit - free, easy-to-use setup packages
?
Could anyone test nginx against IIS/6 and /7 ?
Test case4:
nginx/0.7.50-win32-cygwin with all default configration.

ab.exe -n 10000 -c 1 http://127.0.0.1/
Requests per second: 563.38 [#/sec] (mean)
CPU load: about 65%

ab.exe -n 10000 -c 10 http://127.0.0.1/
Requests per second: 628.07 [#/sec] (mean)
CPU load: about 75%

ab.exe -k -n 10000 -c 1 http://127.0.0.1/
Requests per second: 1081.08 [#/sec] (mean)
CPU load: about 62%

ab.exe -k -n 10000 -c 10 http://127.0.0.1/
Requests per second: 1250.00 [#/sec] (mean)
CPU load: about 65%

The CPU load is not a exact value, but a estimate
value from the Windows Task Manager.

Just note for everyone: “-c 10” (concurrency 10) is far from real world
usage. The select() method used by nginx is poor scaleable for concurrency
more than 100-200.

Yes, you are right. But it’s the select() problem, not Nginx. The IOCP
method may be
much better.


Weibin Y.
2009-04-21

Just note for everyone: “-c 10” (concurrency 10) is far from real world
usage. The select() method used by nginx is poor scaleable for concurrency
more than 100-200.
It seems that the most suitable concurrency for my PC is 1-200.

More tests in test case3 for Native Nginx in Windows:

ab.exe -k -n 10000 -c 1 http://127.0.0.1/
Requests per second: 2424.24 [#/sec] (mean)
CPU load: about 68%

ab.exe -k -n 10000 -c 10 http://127.0.0.1/
Requests per second: 2529.64 [#/sec] (mean)
CPU load: about 67%

ab.exe -k -n 10000 -c 30 http://127.0.0.1/
Requests per second: 2433.46 [#/sec] (mean)
CPU load: about 72%

ab.exe -k -n 10000 -c 50 http://127.0.0.1/
Requests per second: 2397.00 [#/sec] (mean)
CPU load: about 75%

ab.exe -k -n 10000 -c 75 http://127.0.0.1/
Requests per second: 2293.91 [#/sec] (mean)
CPU load: about 77%

ab.exe -k -n 10000 -c 100 http://127.0.0.1/
Requests per second: 2214.53 [#/sec] (mean)
CPU load: about 82%

ab.exe -k -n 10000 -c 200 http://127.0.0.1/
Requests per second: 2184.30 [#/sec] (mean)
CPU load: about 95%

ab.exe -k -n 10000 -c 300 http://127.0.0.1/
Requests per second: 1987.58 [#/sec] (mean)
CPU load: about 99%

ab.exe -k -n 10000 -c 500 http://127.0.0.1/
Requests per second: 1549.64 [#/sec] (mean)
CPU load: about 100%


Weibin Y.
2009-04-21

Hi!

Please note that ab itself a huge bottleneck and it gives you zero
information about nginx performance. As you can see you hit the 100% CPU
-what comes from ab load-.
I realized that during performance testing, all what I can tell you: use
the
httperf instead if you have a chance.
(do not forget to modify the FD_SETSIZE to higher value)

Regards,
Istvan

2009/4/21 Weibin Y. [email protected]

On Tue, Apr 21, 2009 at 05:43:48PM +0800, Weibin Y. wrote:

Just note for everyone: “-c 10” (concurrency 10) is far from real world
usage. The select() method used by nginx is poor scaleable for concurrency
more than 100-200.
It seems that the most suitable concurrency for my PC is 1-200.

More tests in test case3 for Native Nginx in Windows:

ab.exe -k -n 10000 -c 1 http://127.0.0.1/
Requests per second: 2424.24 [#/sec] (mean)
CPU load: about 68%

Could you add

open_file_cache max=1000 inactive=20s;
open_file_cache_valid 30s;
open_file_cache_min_uses 2;
open_file_cache_errors on;

and run just

ab.exe -k -n 10000 -c 1

to see if CreateFile() adds noticeable overhead ?

István wrote:

Please note that ab itself a huge bottleneck and it gives you zero
information about nginx performance. As you can see you hit the 100% CPU
-what comes from ab load-.
I realized that during performance testing, all what I can tell you: use
the httperf instead if you have a chance.
(do not forget to modify the FD_SETSIZE to higher value)

Another replacement for ab is http_load:
http://www.acme.com/software/http_load/