Hi, i ran into strange issue. My server have a 590MB of RAM. Until today i had about 800 request per hour for Django app and uWSGI works very well with it, but as a result of massive advertising i manage to get about 10 000 requests per hour. So, i was forced to increase number of requests that uWSGI can handle. Before applying new config file, i make some performance test and i was suprised that increase threads number from one, as is was so far, to 10 blows out my server.
Until now uWSGI runs with 10 workers and one thread, with 512 listen queue. With 10 workers and 10 threads, uWSGI eats all of my RAM and constantly respawn workers. I make some simple test with default wsgi app and there's a result: uWSGI --workers 10 --threads 1 used about 38MB RAM uWSGI --workers 1 --threads 10 used about 79MB RAM uWSGI --workers 10 --threads 10 used hmm. All of it. uWSGI --workers 100 --threads 1 used about 350MB. uWSGI --workers 1 --threads 100 again eats all of my RAM. I understood, 10 threads with one worker uses 79MB of RAM, and with 10 threads it's should use about a 800MB, but in preforking mode i was able to run a 100 workers and it takes only a 350MB. It is a bug or not? Why uWSGI with 10 threads used almost a double of RAM than with 10 workers, with the same app and configuration, when threads should be a more memory-efficient? There's a screenshots from htop and console running uWSGI (don't blame me for using Windows, different memory manage etc. :) uWSGI --workers 100 --threads 1: http://i.minus.com/iRY7Ynupo1RiC.png uWSGI --workers 1 --threads 100: http://i.minus.com/ib2u1C1EJAXI9S.png uWSGI --workers 10 --threads 10 (here was worse than with 100 threads, memory usage was jumped from 40 to 100%, CPU was fully utilized, and i barely managed to kill uWSGI with Ctrl+C): http://i.minus.com/ibrlHVjC64tG9N.png And after kill: http://i.minus.com/iYbDACS6nfDMP.png
_______________________________________________ uWSGI mailing list [email protected] http://lists.unbit.it/cgi-bin/mailman/listinfo/uwsgi
