【发布时间】:2010-08-24 20:52:35
【问题描述】:
我编写了一个 Perl 程序来搜索和操作一个文本文件。这个 CGI 进程将文件直接吞入内存,根据用户的输入操作文件,然后生成 HTML 结果。
它的工作原理是明智的。但是,我知道,一旦我在大容量服务器上部署,它将无法及时响应。我怀疑内存是一个瓶颈。共享该文件的最佳方法是什么,以便在服务器启动后将其读入内存一次,然后再也不读?
我猜的解决方案是一个服务器守护进程,它将文件加载到内存中并为其他进程/线程提供它们的数据。如果是这样,实施 IPC 的最佳方法是什么?
【问题讨论】:
-
你真的需要文件一次出现在内存中吗?我知道这使编程更容易,但如果你可以通过一次一行/一个块的流式传输来完成你需要做的事情,那么你所有的内存问题都会消失,操作系统的磁盘缓存机制会做得很好。跨度>
-
这个文件有多大?如果它很小,让磁盘缓存来处理它。搜索有多复杂?您可能希望 SQLite 或 NoSQL 数据存储之类的东西都以有组织的方式保存数据,进行搜索并缓存它们。搜索平面文件无法扩展。