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

2024-01-08

我注意到你可以在 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进程中工作(即共享内存/缓存)?如果是这样,可能很难从第一种方法扩展到第二种方法......


不同之处在于,在 uWSGI 的情况下,没有“真正的”负载平衡。第一个空闲进程总是会响应,因此这种方法比在多个实例之间进行 nginx 负载平衡要好得多(这显然仅适用于本地实例)。你需要考虑的是“雷霆羊群问题”。其含义如下:http://uwsgi-docs.readthedocs.org/en/latest/articles/SerializingAccept.html http://uwsgi-docs.readthedocs.org/en/latest/articles/SerializingAccept.html.

最后,所有 uWSGI 功能都是多线程/多进程(和绿色线程)感知的,因此缓存(例如)由所有进程共享。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 nginx 和 uWSGI 的多个服务器进程 的相关文章

随机推荐