当我在以前的工作场所是一家搜索引擎公司时,我注意到他们有使用C ++构建的可执行文件,这些文件是通过cgi脚本使用命令行参数调用的,用于为每个webrequest提供服务。 (例如,当用户点击搜索按钮时)
我无法理解完整的大图,但很惊讶在为每个用户请求启动新进程时会有多少开销,因为OS加载程序必须映射进程空间等(它是unix solaris)
这是一种过时的技术,还是我错过了什么? (例如,如果可以通过创建永久映射来优化流程启动,他们就会这样做)。或者是否有更好的替代方法来运行Web请求的C ++代码?
答案 0 :(得分:0)
Solaris可能已针对该用途进行了优化。是的,它必须初始化进程内存,但它可能会重用很多工作,并且只需要复制几千字节。
每个请求加载进程的唯一选择是允许服务器进程内的可扩展性。这可能会影响稳定性,限制服务器扩展,并对程序员提出额外要求。性能优势可能不值得。
如果性能优势值得,那么您可以将应用程序重写为扩展/模块/ servlet /等等。