【问题标题】:What does it mean when a new process is started for every request sent to CGI?为每个发送到 CGI 的请求启动一个新进程是什么意思?
【发布时间】:2019-09-06 07:00:21
【问题描述】:

我试图了解 servlet 和它提供的优于 CGI 的优势。有人提到在 CGI 中每次都会启动一个新进程,并且与 servlet 相比它很慢。有人可以解释一下这里的进程到底是什么,以及 servlet 对 CGI 有何好处?

【问题讨论】:

    标签: servlets jakarta-ee process cgi


    【解决方案1】:

    CGI 可以被认为是一个普通的可执行文件——它是一个运行、做某事、然后结束的程序。就像 dos 或 shell 命令一样。问题是启动这样一个可执行文件有少量开销,操作系统分配内存,将程序加载到内存中,运行它,然后释放所有内容。如果您正在运行一个每秒有 100 多个请求的网站,则此开销可能会变得很大,如果许多并发 HTTP 请求到达服务器,则此 CGI 的许多副本可能会最终存储在内存中。

    另一方面,Servlet 的资源只分配一次,用于内存中的一个实例。这个单一实例可以同时处理许多 HTTP 请求,单一实例在所有请求之间共享它分配的资源。这可能是一个问题 - 如果两个请求尝试访问,实例和静态变量可能会损坏。但是,效率和速度的优势远不止于此。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-04-23
      相关资源
      最近更新 更多