I wanted to run a particular configuration by you guys to get your
thoughts. I’m
moving from lighttpd to nginx.
First a little bit of background. The site is a single server running
FreeBsd.
It’s a Dual Processor Quad Core Xeon 5310 1.60GHz (Clovertown) with a 2
x 8MB
cache and 4 GB RAM. The site serves only static content. There is
absolutely
zero dynamic content. No databases involved. Each static file is about
50 kb.
I get about 3000-3500 requests/second with lightpd and with my initial
setup of
nginx I get about the same. While I’m happy with this I used a very
simple
config file and just wanted to see if the experienced folks over here
could
point out some things that might be able to boost that up even further.
It’s
very simple and short (just about 20 lines) and I hope some of you could
give me
some advise to get more performance (if possible).
worker_processes 4;
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
On Sat, Apr 05, 2008 at 03:55:47AM +0000, Amer wrote:
config file and just wanted to see if the experienced folks over here could
}
gzip on;
}
error_page 404 /404.html;
}
}
As it was suggested, try to use gzip_static.
Also, remove unused MIME types from gzip_types.
There is no application/xml, application/xml+rss, and ext/javascript
in default miem.types. The gzip modules tests Content-Type sequentially,
so the shorter list is the better.
You may need to increase worker_connections, 1024 mean that you are
able to handle 4*1024 connections only. You also need to increase
number of files, sockets, etc in kernel.
If you do not need access_log, you may set it off.
Or, you may use buffered log:
http {
access_log /path/to/log buffer=32k;
Also you may marginally decrease number of syscalls using:
timer_resolution 100ms;
And finally use open file descriptor cache to decrease number of
open()/stat()/close() syscalls:
Apart from turning gzip_static, I did what you guys suggested and I’m up
to
consistently 3900 Requests/Second in benchmarking.
Possibly with gzip_static, I can break the 4000 mark. Thanks guys !
I’ve been trying to figure this out from the site but I just can’t
What I want is the following
When a user puts it just my domain name, I want the server to give him
the
index.htm file … i.e. if the user enters in example.com I want him to
get www.example.com/index.htm
I tried the following but it I get a 403 forbidden:
server {
listen 80;
server_name localhost;
root /usr/local/www/data;
location / {
index index.htm;
}
Okay I’ve crossed 4000 (consistently between 4100 and 4200) now but I
had a
couple of questions.
First of all, I’m using
nginx-0.6.29.tar.gzhttp://sysoev.ru/nginx/nginx-0.6.29.tar.gzfrom nginx: скачать … I build it from source. I don’t
understand the Russian on that site but it seems to me
that this is a developement version? Is this stable to use in
production?
Secondly I noticed something strange with gzip_static on. If I have this
in
my conf and I have a file indexd12.htm as well as indexd12.htm.gz in the
root then even though I have
indexd12.htm.gz it still picks up indexd12.htm … However when I delete
indexd12.htm , then the server rightly sends back indexdh1.htm.gz …
According to http://wiki.codemongers.com/NginxHttpGzipStaticModule,
the server should be sending back indexd12.htm.gz even if there is an
indexd12.htm in the directory. Any thoughts?
rkmr.em, this is my final config file (I also bumped up max allowed file
descriptors in freebsd kernel):
worker_processes 5;
timer_resolution 100ms;
events {
worker_connections 1500;
}
http {
include mime.types;
default_type application/octet-stream;
On Sat, Apr 05, 2008 at 06:41:16PM -0400, Amer Shah wrote:
First of all, I’m using
nginx-0.6.29.tar.gzhttp://sysoev.ru/nginx/nginx-0.6.29.tar.gzfrom nginx: скачать … I build it from source. I don’t
understand the Russian on that site but it seems to me
that this is a developement version? Is this stable to use in production?
It’s stable enough. I use it on most my production sites.
Secondly I noticed something strange with gzip_static on. If I have this in
my conf and I have a file indexd12.htm as well as indexd12.htm.gz in the
root then even though I have
indexd12.htm.gz it still picks up indexd12.htm … However when I delete
indexd12.htm , then the server rightly sends back indexdh1.htm.gz …
According to http://wiki.codemongers.com/NginxHttpGzipStaticModule,
the server should be sending back indexd12.htm.gz even if there is an
indexd12.htm in the directory. Any thoughts?
There is your problem, you need the source, non gzip’ed file for
clients that don’t request content-encoding. From my understanding,
nginx locates the requested file, then looks aside for a gziped
version if gzip_static is enable (and the original file has a matching
mime type?)
Yes this indeed was the problem. Thanks guys, you’re the best!
What I don’t get though is why when I hit index.htm directly it works
(even
though there is no index.htm but only index.htm.gz) but not when i hit
the www.hostname.com … In both cases I am using the same client (browser).
Shouldn’t in both cases, I be served with the gz file ?
On Sun, Apr 06, 2008 at 06:26:47PM +1000, Dave C. wrote:
There is your problem, you need the source, non gzip’ed file for
clients that don’t request content-encoding. From my understanding,
nginx locates the requested file, then looks aside for a gziped
version if gzip_static is enable (and the original file has a matching
mime type?)
No, gzip_types are not checked for static files.
It’s assumed, that admin has gzipped right files.
The following directives are checked, if gzip_static is on:
gzip_http_version, gzip_proxied, and gzip_disable.
On Sun, Apr 06, 2008 at 04:36:37AM -0400, Amer Shah wrote:
Yes this indeed was the problem. Thanks guys, you’re the best!
What I don’t get though is why when I hit index.htm directly it works (even
though there is no index.htm but only index.htm.gz) but not when i hit the www.hostname.com … In both cases I am using the same client (browser).
Shouldn’t in both cases, I be served with the gz file ?
Because your browser supports gzipped content and it (browser) is not
disabled in your configuraiton.
ngx_http_index_module tests index.htm existance only. It does not know
anything about any .gz files.
It’s quite an easy fix for me because among the hundreds of gzipped
files I
have (and no matching .htm files) I only have to make sure that I have
an
htm version of index.htm.gz lying around since that’s
the only one referenced in ngx_http_index_module .