Thanks to help from the uwsgi group (Specifically Ryan Showalter and Lukasz
Mierzwa) I learned about two important settings to help speed up web2py
sites.

I hope this advice helps anyone else who is using uwsgi and has a very slow
site with traffic starts poring in.

1) Set --cpu-affinity when you are starting uwsgi. I used 3 so 3 processes
will be handled by each processor (I set 12 workers in nginx config, 3
Workers * 4 CUPs)
http://lists.unbit.it/pipermail/uwsgi/2011-March/001594.html

2) Use a socket file instead of the TCP stack with uwsgi_pass and when
starting uwsgi:
in uwsgi config use: "socket = /var/run/uwsgi.socket"
in nginx config use: "uwsgi_pass  unix:///var/run/uwsgi.socket;"
http://lists.unbit.it/pipermail/uwsgi/2011-September/002625.html

Comments directly from Lukasz:
It's hard to saturate single core with just one worker since it might wait
for
external resources like memcached, db or client, 2-4 workers per core seems
like a good starting point, but check how many workers can fit in ram before
you start setting very high max number of workers. Once you're out of memory
and you hit swap all the performance of fast server is gone. If you use
cgroup
memory limits in uWSGI than it will start swapping workers memory to disk
once
they eat all memory they can.
If you use max-requests or memory limits in uWSGI config than check how long
does it take in peak hours to hit that limit and reload worker, it might
happen to frequently, and if your app takes to long to start it might slow
everything down.
Keep in mind that high number of workers may hit max database connection
limit
(it depends on db you use).
As always - if you can benchmark you workers, apache benchmark or siege are
good enough to get some idea of how many request per second you can get.

Also - if you can change the way nginx talks to uwsgi - instead of local tcp
connection use file socket - you want hammer tcp stack with a lot of
connections.

in uwsgi config use: "socket = /var/run/uwsgi.socket"
in nginx config use: "uwsgi_pass  unix:///var/run/uwsgi.socket;"

-- 
-- 
Regards,
Bruce Wade
http://ca.linkedin.com/in/brucelwade
http://www.wadecybertech.com
http://www.fittraineronline.com - Fitness Personal Trainers Online
http://www.warplydesigned.com

Reply via email to