【问题标题】:Lots of Inodes with Node.js大量使用 Node.js 的 Inode
【发布时间】:2016-08-11 04:05:20
【问题描述】:

这是一个与编程有关的问题,但更多的是在服务器管理方面。

我有一个有 256K INode 可用的服务器(这应该足够了),但另一方面,我有 5 个项目在这台服务器上运行,有很多节点依赖项(以及很多嵌套依赖项)。对于这 5 个项目中的 npm install,我使用了所有可用 inode 的 70%(准确地说是 251844 中的 176215)。

我的问题是:

有没有办法压缩节点deps?每个文件的数据更多但文件更少?

谢谢

【问题讨论】:

  • 最新版本的 NPM 将共享依赖模块而不是单独嵌套。
  • 这是一个很好的建议,但 npm 似乎还没有自动执行此操作。手动运行 npm dedupe。 docs.npmjs.com/cli/dedupe

标签: linux node.js npm npm-install inode


【解决方案1】:

我不知道减少 node_modules 中文件数量的自动方法(这是 npm 存储其依赖项的地方。)但是,我可以考虑一些减少 inode 使用的选项。

1) 如果这些项目之间存在共享依赖项(具有相同的版本号),您可以将一些依赖项从一个项目符号链接到另一个项目。如果你得到一个有很多嵌套依赖的依赖,这真的可以节省不少 inode。 (未经测试)

2) 如果有很多共享依赖项,另一种选择是使用 cp -l 将项目 1 的 node_modules 复制到项目 2。在这种情况下,每个副本都是指向同一个文件的硬链接,而不使用任何额外的 inode。之后,在项目 2 中运行 npm install && npm prune 以下载任何更改/附加依赖项。 (也未经测试)

3) 但是,这两个选项都很棘手,并且可能会或可能不会在以后、复制后、恢复备份后等给您带来难以调试的问题。真正的解决方案是重新创建文件系统有更多的 inode。对于 ext4,这可以通过 mkfs.ext4 -i 来完成。见https://unix.stackexchange.com/questions/26598/how-can-i-increase-the-number-of-inodes-in-an-ext4-filesystem

【讨论】:

  • 很抱歉迟到了,我会先测试你评论npm dedupe,然后再试试文件系统。 1 和 2 看起来真的很 hacky(这对于个人项目来说很好,但我的项目正在生产中运行......)
猜你喜欢
  • 2011-01-04
  • 2010-10-13
  • 2012-09-16
  • 2018-05-25
  • 2015-01-03
  • 2017-07-28
  • 2016-06-05
  • 2010-09-07
  • 1970-01-01
相关资源
最近更新 更多