解释节点的st模块fd和stat配置

时间:2014-04-15 18:41:02

标签: node.js configuration static st

节点的模块documentation提到fdstat配置:

cache: { // specify cache:false to turn off caching entirely

    fd: {
      max: 1000, // number of fd's to hang on to
      maxAge: 1000*60*60, // amount of ms before fd's expire
    },

    stat: {
      max: 5000, // number of stat objects to hang on to
      maxAge: 1000 * 60, // number of ms that stats are good for
    },

    ...

}

但这些是什么以及它们如何影响st的静态文件传递?你能举例说明吗?

1 个答案:

答案 0 :(得分:3)

这些是st缓存模块的配置,lru-cache

  • fd

哪个代表file descriptor。每次sd模块想要提供文件并需要从中读取内容时,它需要/打开文件描述符。缓存文件描述符将删除打开文件所花费的时间。

如果移动或删除文件,使用文件描述符读取仍将导致旧内容。

每个系统每个进程和全局都有最大量的打开文件描述符,一旦用完,就无法打开任何文件。因此,请确保将cache.fd.max选项设置为小于每个进程的数量。

  • stat

代表result of calls to fs.stat and friends。设置etag或使用304进行响应时需要它。

max选项是项目/大小的最大数量,maxAge是项目可以保留在内存中的最长时间。

显然,对于所有缓存类型(fd,stat,content,...),数字(max和maxAge)越高,某些请求的提供速度越快,但消耗的内存越多。

fd.max设置为优化的数量可能会非常棘手。因为对于要服务的每个连接,所以在技术上打开文件描述符。您可能希望为要处理的连接留出一些空间,因为如果达到限制,您的服务器将不再接收连接。根据服务器预期要处理的并发连接数以及系统中进程的最大打开文件数来设置它。以下是检查/更改linux中最大数量的方法:http://cherry.world.edoors.com/CPZKoGkpxfbQ

对于stat.max,我建议根据可用内存进行设置。我建议在你的生产系统中测试/测量它,以找出每1个stat对象使用了多少内存,所以你可以决定。

设置maxAge取决于文件更新的频率。