2011-04-06 31 views
0

当我在之前的工作场所(一家搜索引擎公司)工作时,我注意到他们使用C++构建了可执行文件,这些文件是通过cgi脚本的命令行参数调用的,以便为每个webrequest服务。 (例如,当用户点击搜索按钮时)加载进程以运行webrequest

我无法理解完整的大图,但很惊讶在为每个用户请求启动新进程时会有多少开销,因为OS加载器必须映射进程空间等(这是unix solaris)

这是一个过时的技术,还是我错过了什么? (例如,如果可以通过创建永久映射来优化流程启动并且他们会这样做)。或者是否有更好的选择来为webrequest运行C++代码?

回答

0

对于该用法,Solaris可能已经过很好的优化。是的,它必须初始化进程内存,但它可能会重复使用很多工作,并且只需要复制几千字节。

每个请求加载进程的唯一替代方法是允许服务器进程内的可扩展性。这可能会影响稳定性,限制服务器扩展,并对编程人员提出额外要求。性能优势可能不值得。

如果性能好处是值得的,那么你可以将应用程序重写为扩展/模块/ servlet /任何。

+0

你应该提到[FastCGI](http://www.fastcgi.com),它[支持](http://www.fastcgi.com/drupal/node/5?q=node/10)在PHP中。 – 2011-04-06 15:31:23