什么是前叉Web服务器模型?

我想知道当Web服务器将自己描述为预分叉Web服务器时,究竟意味着什么。 我有几个例子,如独angular兽的ruby和pythongunicorn 。

更具体地说,这些是问题:

  • 这个模型解决了什么问题?
  • 预分叉Web服务器最初启动时会发生什么?
  • 它如何处理请求?

此外,一个更具体的问题独angular兽/ gunicorn:

比方说,我有一个web应用程序,我想与(g)独angular兽运行。 在初始化时,webapp会做一些初始化的东西(例如填写额外的数据库条目)。 如果我configuration(g)独angular兽与多个工人,将初始化的东西多次运行?

预分叉基本上意味着主人创build处理每个请求的分叉。 一个fork是一个完全独立的* nix进程。

根据下面的评论更新。 pre-fork中的pre-fork意味着这些进程在请求进入之前是分叉的。但是它们通常可以随着负载的上升和下降而增加或减less。

如果您的库不是线程安全的,则可以使用预分叉。 这也意味着请求中的问题导致问题将只影响他们处理的过程而不是整个服务器。

多次运行的初始化完全取决于您正在部署的内容。 然而,通常连接池和这种性质的东西都会存在于每个进程中。

在线程模型中,主服务器会创build更轻量级的线程来调度请求。 但是,如果一个线程导致大量问题,可能会对主进程产生影响。

使用Nginx,Apache 2.4的Event MPM或gevent(可与Gunicorn一起使用)这些工具是asynchronous的,这意味着一个进程可以处理数百个请求,而不会阻塞。

问候乔