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

use*_*987 9 nginx uwsgi

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

uwsgi --processes 4 --socket /tmp/uwsgi.sock
Run Code Online (Sandbox Code Playgroud)

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

upstream my_servers {
    server unix:///tmp.uwsgi1.sock;
    server unix:///tmp.uwsgi2.sock;
    #...
}
Run Code Online (Sandbox Code Playgroud)

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

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

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

rob*_*rto 7

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

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

  • 您能详细说明通过uWSGI进程实际共享的数据吗?流程不是孤立运行的吗? (4认同)