使用nginx和uWSGI的多个服务器进程

时间:2014-04-12 08:47:14

标签: nginx uwsgi

我注意到你可以在nginx后面的一个uWSGI实例中启动多个进程:

uwsgi --processes 4 --socket /tmp/uwsgi.sock

或者你可以在不同的套接字上启动多个uWSGI实例,并使用nginx在它们之间实现负载平衡:

upstream my_servers {
    server unix:///tmp.uwsgi1.sock;
    server unix:///tmp.uwsgi2.sock;
    #...
}

这两种策略之间有什么区别,而另一种策略是优先的?

nginx(在第一种情况下)完成的负载平衡与uWSGI完成的负载平衡有何不同(在第二种情况下)?

nginx可以在多个主机上使用前端服务器。 uWSGI可以在单个实例中执行此操作吗?某些uWSGI功能是否仅在单个uWSGI进程(即共享内存/缓存)中工作?如果是这样,可能很难从第一种方法扩展到第二种方法......

1 个答案:

答案 0 :(得分:7)

不同之处在于,在uWSGI的情况下,没有“真正的”负载平衡。第一个自由进程将始终响应,因此这种方法比在多个实例之间使用nginx加载balacing更好(这显然仅适用于本地实例)。您需要考虑的是“雷鸣般的群体问题”。其含义在此处公开:http://uwsgi-docs.readthedocs.org/en/latest/articles/SerializingAccept.html

最后,所有uWSGI功能都是多线程/多进程(和greenthreads),因此所有进程都可以共享缓存(例如)。