0

Node的st模块文档提到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静态文件的传递?你能举个例子吗?

4

1 回答 1

3

这些是配置,用于st缓存模块,即lru-cache.

  • fd

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

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

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

  • stat

它表示调用 fs.stat 和 friends 的结果。设置 etag 或以 304 响应时需要它。

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

显然,对于所有缓存类型(fd、stat、content、...),数字(max 和 maxAge)越高,一些请求的服务速度就会更快,但会消耗更多的内存。

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

至于stat.max,我建议根据可用内存进行设置。我建议在您的生产系统中对其进行测试/测量,以了解每个 stat 对象使用了多少内存,以便您做出决定。

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

于 2014-04-18T14:17:08.017 回答