【发布时间】:2014-11-04 19:24:09
【问题描述】:
我有一个从命令行运行的长时间运行(复杂)的 php 脚本:
php myscript.php 2> myscript.err.out > myscript.out &
由于某种原因,这会打开许多(系统级)文件句柄 - 即 lsof | grep myscript.out | wc -l 会增加直到达到限制。
当然可以增加限制(通过ulimit),但我真的需要找到原因,因为实际上应该只有一个文件句柄打开该文件。 (即增加只会延迟问题)
因为我无法精简到一个最小的例子 - 这里有一些特征:
- 打开文件的数量与以下两个操作密切相关:
- 打开(和关闭!)临时文件(通过
tempnam) - 将这些临时文件存储在 MongoDB 中
- 打开(和关闭!)临时文件(通过
- 系统:SMP Debian 3.14.15-2
有人知道吗? (或者我可以尝试一些事情?)
【问题讨论】:
-
很难说没有看到代码中的所有内容可能会打开文件、套接字、命名管道等或访问
lsof列出的设备 -
但是由于我没有在我的脚本中打开一个名为 myscript.out 的文件,所以这不会影响 lsof 上的 grep。我错了吗?