【发布时间】:2019-09-06 07:00:21
【问题描述】:
我试图了解 servlet 和它提供的优于 CGI 的优势。有人提到在 CGI 中每次都会启动一个新进程,并且与 servlet 相比它很慢。有人可以解释一下这里的进程到底是什么,以及 servlet 对 CGI 有何好处?
【问题讨论】:
标签: servlets jakarta-ee process cgi
我试图了解 servlet 和它提供的优于 CGI 的优势。有人提到在 CGI 中每次都会启动一个新进程,并且与 servlet 相比它很慢。有人可以解释一下这里的进程到底是什么,以及 servlet 对 CGI 有何好处?
【问题讨论】:
标签: servlets jakarta-ee process cgi
CGI 可以被认为是一个普通的可执行文件——它是一个运行、做某事、然后结束的程序。就像 dos 或 shell 命令一样。问题是启动这样一个可执行文件有少量开销,操作系统分配内存,将程序加载到内存中,运行它,然后释放所有内容。如果您正在运行一个每秒有 100 多个请求的网站,则此开销可能会变得很大,如果许多并发 HTTP 请求到达服务器,则此 CGI 的许多副本可能会最终存储在内存中。
另一方面,Servlet 的资源只分配一次,用于内存中的一个实例。这个单一实例可以同时处理许多 HTTP 请求,单一实例在所有请求之间共享它分配的资源。这可能是一个问题 - 如果两个请求尝试访问,实例和静态变量可能会损坏。但是,效率和速度的优势远不止于此。
【讨论】: