我们使用 Tika 提取 PDF 文本内容进行搜索。我发现大量使用临时文件,这似乎已经耗尽了我们的文件句柄。
我们使用的是 CentOS 5.5。对于我们的搜索系统,我们之前已经增加了打开文件句柄 (/etc/sysctl.conf) fs.file-max = 65535
当查看我的进程的 lsof 时,我看到很多文件被标记为 DEL(已删除的内存映射文件)。如果我停止提交要索引的新文档,这些文件将在几分钟后被清除。
java 11105 根 DEL REG 104,2 1278402 /tmp/+~JF4155000471009101661.tmp
我可以调整内核以更快地清除这些 DEL 文件吗,还是应该增加文件句柄的数量?如果是这样,我们可以安全地达到多高?我有足够的内存可以为内核提供更多内存。
谢谢
大卫
答案1
我找不到一个很好的参考资料来说明增加fs.file-max
对系统的影响。据推测,这会让您的内核消耗更多内存,因为跟踪打开文件的结构越来越大。我建议增加到更大的数字,例如 128K,并密切关注/proc/sys/fs/file-nr
实际使用的文件数量。
答案2
在这段高峰时间内,几分钟的 vmstat 会显示什么?vmstat 会显示您的 I/O 是否受 CPU、交换、内存限制。我会从那里开始。