Remember that rate (N requests / second) and concurrency (N requests running at the same time) are 2 different things. Single worker process can handle single requests at once, but if request is handled in 0.1 second it can handle 10 requests / second. So you can't really expect to have 500 concurrent requests being handled using only 2 worker processes. The only way to handle > 1 requests at the same time using single worker process is using threads (but AFAIR django isn't thread safe and if it was threads with python have limitations so don't expect linear scaling) or gevent (or other async engines).
2014-01-29 Andriy Kornatskyy <[email protected]> > Dig, > > I really doubt and uwsgi can’t help there. > > Look at some benchmarks here: > http://mindref.blogspot.com/search/label/benchmark > > Thanks. > > Andriy Kornatskyy > > On Jan 29, 2014, at 8:16 AM, Dig <[email protected]> wrote: > > > Hi uWSGI, > > > > [Task] > > I have a Django application to serve my visitor for large concurrent > (>500). > > To simplify, we create empty project for deploy testing. > > > > [Background] > > Server: > > Env: Ubuntu 12.04 server 64bit + nginx 1.1.19 (1 worker) > > App: An empty Django (1.6.1) project (no database) + uWSGI (2.0) > > uwsgi command > > uwsgi --master --socket 127.0.0.1:54321 --uid 1000 --gid > 1000 --harakiri 120 --reload-on-rss 256 --vacuum --limit-post 10485760 > --post-buffering 4096 --touch-reload > /home/dig/st/touch-to-reload-speed-test --python-path /home/dig/st > --python-path /home/dig/st/st/ --module wsgi --socket-timeout 30 --listen > 1000 --close-on-exec --processes=2 > > > > Test tool: > > OS: Ubuntu 12.04 server 64bit > > Apache benchmark (ab) > > > > Network: 1Gbps Ethernet > > > > [Steps] > > 1. start nginx, and execute test for static content > > $ ab ab -k -c 500 -n 10000 http://10.144.166.55/static/ > > All requests completed, and about 10,000 requests handled per second. > > > > 2. create an empty Django project, and deploy with uwsgi, test with ab > again: > > $ ab ab -k -c 500 -n 10000 http://10.144.166.55/static/ > > I got error: > > Benchmarking 10.144.166.55 (be patient) > > apr_socket_recv: Connection reset by peer (104) > > > > 3. decrease the concurrent to 300: > > $ ab ab -k -c 300 -n 10000 http://10.144.166.55/static/ > > it successed, and about 530 requests handled per second. > > > > [Question] > > Is there any instructions to make the empty Django application support > over 500 concurrent in a single box? > > > > Thanks, > > Dig > > _______________________________________________ > > uWSGI mailing list > > [email protected] > > http://lists.unbit.it/cgi-bin/mailman/listinfo/uwsgi > > _______________________________________________ > uWSGI mailing list > [email protected] > http://lists.unbit.it/cgi-bin/mailman/listinfo/uwsgi > -- Łukasz Mierzwa
_______________________________________________ uWSGI mailing list [email protected] http://lists.unbit.it/cgi-bin/mailman/listinfo/uwsgi
