(nginx – > uwsgi – > wsgi应用程序)体系结构中的IPC开销?

最近我正在build立一些Python网站,看来架构nginx -> uwsgi -> wsgi application在Python世界中是一个显而易见的select。 (其实我正在将一个由Apache + mod_wsgi支持的MoinMoin网站迁移到一个运行nginx的新VM上,所以我花了一些时间来看看nginx支持的部署可能性。)

我已经读了很多关于为什么需要这样的间接层,我完全知道,涉及到的各种技术 – nginx,uwsgi和wsgi – 都是现代的,function非常高,性能非常高,到今天为止都是成熟的。 但是由于在这样的体系结构中有两层IPC( nginx -> uwsgiuwsgi -> wsgi application ),我一直在想

  • IPC如何影响整体performance?
  • 是否具有足够的影响力,具有实际意义?

我search了一下,发现没有直接的答案。 那么IPC的开销是否足够小,或者我没有find正确的关键字?

(顺便说一下,我读到Erlang社区已经生成了几个HTTP服务器,直接将用户的HTTP请求传送到应用程序代码,并且性能也非常高,我search了一下,但是找不到比较这两种方法的基准)

uwsgi-> wsgi部分没有ipc。 唯一的连接/ ipc是从nginx到uWSGI,它几乎没有影响(记住,即使apache + mod + wsgi守护进程模式使用ipc)

关于你的问题中的Erlang部分,有高性能的httpparsing器可以embedded到你的代码中(甚至uWSGI可以使用whay),但是经验表明这不是一个安全性,通用性和可伸缩性的好方法但显然你可以自由地做到这一点)。 拥有前端代理看起来是最合理的select(独立于应用程序服务器或语言)