I have a single server, ubuntu 12.04 running 3 web2py instances + 2 php
wordpress websites
Php runs with fcgi - web2py runs with uwsgi, because of that I have 12
nginx workers running
I am not an expert on this, but this solution is working well for me.
That is what I have in top
*TOP*
top - 22:54:55 up 78 days, 4:24, 1 user, load average: 0.05, 0.13, 0.13
Tasks: 111 total, 1 running, 110 sleeping, 0 stopped, 0 zombie
Cpu(s): 0.1%us, 0.2%sy, 0.0%ni, 98.2%id, 1.5%wa, 0.0%hi, 0.1%si,
0.0%st
Mem: 1012860k total, 934292k used, 78568k free, 27148k buffers
Swap: 524284k total, 343908k used, 180376k free, 258680k cached
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+
COMMAND
1123 www-data 20 0 396m 41m 14m S 0 4.2 7:40.82
php5-fpm
3738 www-data 20 0 160m 1512 1472 S 0 0.1 5:00.87
uwsgi-core
3901 www-data 20 0 160m 1512 1472 S 0 0.1 5:04.47
uwsgi-core
4730 www-data 20 0 397m 43m 15m S 0 4.4 9:45.87
php5-fpm
4731 www-data 20 0 397m 42m 15m S 0 4.3 9:41.48
php5-fpm
4732 www-data 20 0 392m 37m 14m S 0 3.8 9:32.35
php5-fpm
4734 www-data 20 0 393m 38m 15m S 0 3.9 9:58.31
php5-fpm
5113 www-data 20 0 208m 36m 3824 S 0 3.7 0:56.18
uwsgi
8993 www-data 20 0 240m 94m 4504 S 0 9.5 0:20.76
uwsgi
9409 www-data 20 0 217m 2188 2184 S 0 0.2 1:34.40
uwsgi-core
9410 www-data 20 0 217m 4388 2180 S 0 0.4 0:51.60
uwsgi-core
9457 www-data 20 0 214m 65m 4840 S 0 6.7 0:08.62
uwsgi
15463 www-data 20 0 79460 3356 1664 S 0 0.3 5:56.76
nginx
15464 www-data 20 0 79108 3476 1712 S 0 0.3 5:56.79
nginx
15465 www-data 20 0 79632 3480 1656 S 0 0.3 5:59.49
nginx
15466 www-data 20 0 79468 3392 1652 S 0 0.3 5:54.69
nginx
15467 www-data 20 0 79184 3244 1660 S 0 0.3 5:49.36
nginx
15468 www-data 20 0 79460 3380 1668 S 0 0.3 5:39.78
nginx
15469 www-data 20 0 79604 3860 1672 S 0 0.4 5:46.62
nginx
15470 www-data 20 0 79488 3368 1680 S 0 0.3 5:55.42
nginx
15471 www-data 20 0 79604 3280 1656 S 0 0.3 5:52.24
nginx
15472 www-data 20 0 79444 3468 1688 S 0 0.3 5:59.96
nginx
15473 www-data 20 0 79440 3452 1684 S 0 0.3 5:54.13
nginx
15474 www-data 20 0 79476 3516 1692 S 0 0.3 5:49.28
nginx
16040 www-data 20 0 193m 47m 3884 S 0 4.8 2:49.74
uwsgi
22482 www-data 20 0 153m 2384 2144 S 0 0.2 2:41.56
uwsgi
22651 www-data 20 0 160m 4864 2208 S 0 0.5 2:42.54
uwsgi
22818 www-data 20 0 160m 5532 2220 S 0 0.5 3:01.67
uwsgi
28847 www-data 20 0 192m 46m 3588 S 0 4.7 2:18.97
uwsgi
29885 www-data 20 0 208m 37m 4052 S 0 3.8 0:34.50
uwsgi
29914 www-data 20 0 222m 2192 2188 S 0 0.2 0:11.24
uwsgi-core
30403 www-data 20 0 205m 2208 2176 S 0 0.2 0:05.77
uwsgi-core
*uwsgitop*
uwsgi-1.0.3-debian - Tue Jan 8 23:01:58 2013 - req: 1110940 - lq: 0 - tx:
22786619414
node: li284-252 - cwd: /home/www-data/web2py - uid: 33 - gid: 33 -
masterpid: 22818
WID % PID REQ EXC SIG STATUS AVG RSS
VSZ TX RunT
1 71.03 10199 789111 0 0 idle 162ms 76M
222M 15494M 3912m
2 28.97 10171 321829 0 0 idle 246ms 60M
205M 6236M 1776m
*UWSGI FILE* ( Ihave the same file for other 2 apps, but other apps have no
<master> tag )
<uwsgi>
<plugin>python</plugin>
<socket>/run/uwsgi/app/web2py/web2py.socket</socket>
<pythonpath>/home/www-data/web2py/</pythonpath>
<app mountpoint="/">
<script>wsgihandler</script>
</app>
<master/>
<processes>4</processes>
<harakiri>60</harakiri>
<reload-mercy>8</reload-mercy>
<cpu-affinity>1</cpu-affinity>
<stats>/tmp/stats.socket</stats>
<max-requests>2000</max-requests>
<limit-as>512</limit-as>
<reload-on-as>256</reload-on-as>
<reload-on-rss>192</reload-on-rss>
<no-orphans/>
<vacuum/>
</uwsgi>
*NGINX FILE*
server {
server_name xxxxxxxxxxxxx.com.br;
rewrite ^/(.*) http://www.xxxxxxxxxxxxxx.com.br/$1 permanent;
}
server {
client_max_body_size 10M;
listen 80;
server_name wwwxxxxxxxxxxxxcom.br;
if ( $http_referer ~*
(babes|forsale|girl|jewelry|love|nudit|poker|porn|sex|teen) )
{
# return 404;
return 403;
}
if ($request_method !~ ^(GET|HEAD|POST)$ ) {
return 444;
}
location ~ \.(aspx|php|jsp|asp|cgi)$ {
return 410;
}
if ($http_user_agent ~* LWP::Simple|BBBike|wget) {
return 403;
}
if ($http_user_agent ~*
msnbot|scrapbot|WebCopier|AhrefsBot|Baidu|Yandex|baiduspider|yandexspider )
{
return 403;
}
location ~* /(\w+)/static/ {
root /home/www-data/web2py/applications/;
}
location ~ ^/download/(.*)$ {
alias /home/www-data/web2py/applications/init/uploads/$1;
}
location / {
uwsgi_pass unix:///run/uwsgi/app/web2py/web2py.socket;
include uwsgi_params;
uwsgi_param UWSGI_SCHEME $scheme;
uwsgi_param SERVER_SOFTWARE nginx/$nginx_version;
}
}
server {
client_max_body_size 10M;
listen 443;
server_name xxxxxxxxxxx.com.br;
ssl on;
ssl_certificate /etc/nginx/ssl/web2py.crt;
ssl_certificate_key /etc/nginx/ssl/web2py.key;
location / {
uwsgi_pass unix:///run/uwsgi/app/web2py/web2py.socket;
include uwsgi_params;
include uwsgi_params;
uwsgi_param UWSGI_SCHEME $scheme;
uwsgi_param SERVER_SOFTWARE nginx/$nginx_version;
}
}
--