如何在fastCGI进程之间共享数据?

我编写了一个简单的perl脚本,我在Apache上通过fastCGI运行。应用程序加载一组XML数据文件,这些文件用于根据传入请求的查询参数查找值。据我了解,如果我想增加应用程序可以处理的并发请求量,我需要允许fastCGI生成多个进程。这些进程中的每一个都必须在内存中保存XML数据的重复副本吗?有没有办法设置,以便我可以在内存中加载一份XML数据,同时增加处理并发请求的能力?     
已邀请:
正如pilcrow正确回答的那样,FastCGI没有提供在进程之间共享数据的特殊方法,并列出了减少内存使用的传统方法。 另一种可能性是使持久的非FastCGI进程读取XML文件并充当FastCGI进程的数据服务器。这样做的效率取决于查询的复杂程度以及需要传入和传出的数据量,但是它允许单个数据副本保留在内存中。     
内存在单独的FastCGI进程之间共享,就像在普通的单独进程之间共享一样,也就是说,就我们的目的而言,数据不是共享的。 (FastCGI允许单个进程按顺序处理多个请求,从而无需重新初始化,重新读取配置和XML数据,例如,在该进程首次提供服务后的每个请求。) 从好的方面来说,任何可以在不同进程之间减少XML内存占用的技术都可以在这里工作。您可以将文件读入共享内存(可能很难同步和更新),选择较低内存的XML解析器,或间接访问信息,例如通过XML数据的“已编译”GDBM或您编写的自定义服务器回答问题。     

要回复问题请先登录注册