我最近发出了这个命令:
find . -type f | wc -l
计算我的 public_html 文件夹中有多少文件。
不久之后,Nginx 返回 500 内部服务器错误并且 error.log 充斥着“打开的文件太多”错误。我想也许这可能是这个问题的根源?
Der*_*rfK 14
看着strace -eopen find . -type f用GNU发现(4.4.2从Debian的挤压)的答案似乎是“不,找不开的文件”,但它确实打开目录:
open("details", O_RDONLY|O_NONBLOCK|O_DIRECTORY|O_CLOEXEC) = 5
open("..", O_RDONLY|O_NOCTTY|O_NONBLOCK|O_DIRECTORY|O_NOFOLLOW) = 5
open("..", O_RDONLY|O_NOCTTY|O_NONBLOCK|O_DIRECTORY|O_NOFOLLOW) = 5
open("..", O_RDONLY|O_NOCTTY|O_NONBLOCK|O_DIRECTORY|O_NOFOLLOW) = 5
open("..", O_RDONLY|O_NOCTTY|O_NONBLOCK|O_DIRECTORY|O_NOFOLLOW) = 5
open("..", O_RDONLY|O_NOCTTY|O_NONBLOCK|O_DIRECTORY|O_NOFOLLOW) = 5
open("..", O_RDONLY|O_NOCTTY|O_NONBLOCK|O_DIRECTORY|O_NOFOLLOW) = 5
open("..", O_RDONLY|O_NOCTTY|O_NONBLOCK|O_DIRECTORY|O_NOFOLLOW) = 5
open("..", O_RDONLY|O_NOCTTY|O_NONBLOCK|O_DIRECTORY|O_NOFOLLOW) = 5
open(".uml", O_RDONLY|O_NONBLOCK|O_DIRECTORY|O_CLOEXEC) = 5
open("..", O_RDONLY|O_NOCTTY|O_NONBLOCK|O_DIRECTORY|O_NOFOLLOW) = 5
open(".dbus", O_RDONLY|O_NONBLOCK|O_DIRECTORY|O_CLOEXEC) = 5
Run Code Online (Sandbox Code Playgroud)
等等。当然,所有这些命令都返回相同的文件句柄#,这强烈暗示 find 再次关闭它们。我创建了一组相当深的目录,似乎 find 用于..上一个目录而不是打开目录。
不过,这似乎确实是一个非常了不起的巧合。
| 归档时间: |
|
| 查看次数: |
302 次 |
| 最近记录: |