Fwd: nginx performance on Amazon EC2

Rakan Alhneiti rakan.alhneiti at gmail.com
Wed Feb 20 20:13:18 UTC 2013


I am running a django app with nginx & uwsgi on an amazon ec2 instance and
a vmware machine almost the same size as the ec2 one. Here's how i run

sudo uwsgi -b 25000 --chdir=/www/python/apps/pyapp
--module=wsgi:application --env DJANGO_SETTINGS_MODULE=settings
--socket=/tmp/pyapp.socket --cheaper=8 --processes=16  --harakiri=10
--max-requests=5000  --vacuum --master --pidfile=/tmp/pyapp-master.pid
--uid=220 --gid=499

& nginx configurations:

server {
    listen 80;
    server_name test.com

    root /www/python/apps/pyapp/;

    access_log /var/log/nginx/test.com.access.log;
    error_log /var/log/nginx/test.com.error.log;

    # https://docs.djangoproject.com/en/dev/howto/static-files/#serving-static-files-in-production
    location /static/ {
        alias /www/python/apps/pyapp/static/;
        expires 30d;

    location /media/ {
        alias /www/python/apps/pyapp/media/;
        expires 30d;

    location / {
        uwsgi_pass unix:///tmp/pyapp.socket;
        include uwsgi_params;
        proxy_read_timeout 120;

    # what to serve if upstream is not available or crashes
    #error_page 500 502 503 504 /media/50x.html;}

Here comes the problem. When doing "ab" (ApacheBenchmark) on both machines
i get the following results: (vmware machine being almost the same size as
the ec2 small instance)

*Amazon EC2:*

nginx version: nginx version: nginx/1.2.6

uwsgi version:1.4.5

Concurrency Level:      500Time taken for tests:   21.954
secondsComplete requests:      5000Failed requests:        126
   (Connect: 0, Receive: 0, Length: 126, Exceptions: 0)Write errors:
        0Non-2xx responses:      4874Total transferred:      4142182
HTML transferred:       3384914 bytesRequests per second:    227.75
[#/sec] (mean)Time per request:       2195.384 [ms] (mean)Time per
request:       4.391 [ms] (mean, across all concurrent
requests)Transfer rate:          184.25 [Kbytes/sec] received

*Vmware machine (CentOS 6):*

nginx version: nnginx version: nginx/1.0.15

uwsgi version: 1.4.5

Concurrency Level:      1000Time taken for tests:   1.094
secondsComplete requests:      5000Failed requests:        0Write
errors:           0Total transferred:      30190000 bytes
HTML transferred:       28930000 bytesRequests per second:    4568.73
[#/sec] (mean)Time per request:       218.879 [ms] (mean)Time per
request:       0.219 [ms] (mean, across all concurrent
requests)Transfer rate:          26939.42 [Kbytes/sec] received

As you can see... all requests on the ec2 instance fail with either timeout
errors or "Client prematurely disconnected". However, on my vmware machine
all requests go through with no problems. The other thing is the difference
in reqs / second i am doing on both machines.

What am i doing wrong on ec2?
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mailman.nginx.org/pipermail/nginx/attachments/20130220/32edb792/attachment-0001.html>

More information about the nginx mailing list