AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / unix / 问题 / 439287
Accepted
Scott M
Scott M
Asked: 2018-04-23 06:28:33 +0800 CST2018-04-23 06:28:33 +0800 CST 2018-04-23 06:28:33 +0800 CST

系统范围的文件句柄计数问题

  • 772

用更短、更集中的问题再试一次。请注意,这不是通常的“为什么 file-nr 报告的数字低于我的预期”的问题。我有相反的问题。

Linux 2.6 系统正在泄漏文件句柄。我知道这一点,因为我定期 cat /proc/sys/fs/file-nr。第一个数字在几个小时内趋于上升,第二个数字始终为 0。当第一个数字达到第三个时,登录变得不可能,没有新的 shell,等等。所以我相信 file-nr 的输出并且有理由相信有重大的文件句柄泄漏。(系统并不总是这样做,我们还没有找到导致它开始发生的原因或原因,但它相当普遍。)

现在奇怪的部分。以 root 身份运行,我通过 /proc/each 进程 id/fd 对所有 fd 执行 ls -l。请注意,我以 root 身份执行此操作,因此我应该看到所有进程的所有文件句柄。

根据我有限的理解, ls 的输出应该显示与 file-nr 显示的句柄数量大致相同。我不希望它是准确的,因为进程可能会来来去去,他们可能会在我走 /proc/# 时打开或关闭文件。但是完成了足够多的时间,我预计平均而言,粗略的协议。所以第一个问题是,这是一个合理的假设吗?如果不是,为什么不呢?

我之所以问,是因为 file-nr 显示了缓慢增加的句柄数,向 65536 前进。但是 /proc/ids../fd 的汇总输出显示的句柄数减少了数千。例如,在某一时刻,file-nr 看起来像“9900 0 65536”,但计算 proc 中每个进程的文件句柄数少于 2000,并且反复进行,它或多或少保持不变。任何泄漏的句柄都不会显示为一个过程。

相差7000多?当进程没有疯狂地启动和停止并且不应该疯狂地打开和关闭文件时?请注意,每个进程的硬文件句柄限制为 1024,因此并不是任何一个进程导致了这种情况。系统确实显示了几十个已失效的进程,但我认为已失效的进程不能保留文件句柄。而且我让其他人很难检查我的工作,所以这似乎不是对 ls 或任何东西的愚蠢滥用。

这对我来说是一个关键问题,如果有人能解释为什么在计数方面存在如此大的分歧,它可以让我走上解决关键和生产停止问题的轨道。

注意我没有使用 lsof - 它已从系统中删除。但由于我只对实际文件句柄感兴趣,这可能与“打开文件”不同,因此步行 /proc/#s 应该足够好。或者我是这么想的。

linux file-descriptors
  • 1 1 个回答
  • 382 Views

1 个回答

  • Voted
  1. Best Answer
    Scott M
    2018-04-24T17:59:00+08:002018-04-24T17:59:00+08:00

    事实证明,至少在 Linux 2.6 中,已失效的进程有可能保留文件句柄。我不知道怎么做,但是当我们强行清理失效的 sshd 进程时,句柄计数又下降了。

    • 1

相关问题

  • 有没有办法让 ls 只显示某些目录的隐藏文件?

  • 使用键盘快捷键启动/停止 systemd 服务 [关闭]

  • 需要一些系统调用

  • astyle 不会更改源文件格式

  • 通过标签将根文件系统传递给linux内核

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    如何将 GPG 私钥和公钥导出到文件

    • 4 个回答
  • Marko Smith

    ssh 无法协商:“找不到匹配的密码”,正在拒绝 cbc

    • 4 个回答
  • Marko Smith

    我们如何运行存储在变量中的命令?

    • 5 个回答
  • Marko Smith

    如何配置 systemd-resolved 和 systemd-networkd 以使用本地 DNS 服务器来解析本地域和远程 DNS 服务器来解析远程域?

    • 3 个回答
  • Marko Smith

    如何卸载内核模块“nvidia-drm”?

    • 13 个回答
  • Marko Smith

    dist-upgrade 后 Kali Linux 中的 apt-get update 错误 [重复]

    • 2 个回答
  • Marko Smith

    如何从 systemctl 服务日志中查看最新的 x 行

    • 5 个回答
  • Marko Smith

    Nano - 跳转到文件末尾

    • 8 个回答
  • Marko Smith

    grub 错误:你需要先加载内核

    • 4 个回答
  • Marko Smith

    如何下载软件包而不是使用 apt-get 命令安装它?

    • 7 个回答
  • Martin Hope
    rocky 如何将 GPG 私钥和公钥导出到文件 2018-11-16 05:36:15 +0800 CST
  • Martin Hope
    Wong Jia Hau ssh-add 返回:“连接代理时出错:没有这样的文件或目录” 2018-08-24 23:28:13 +0800 CST
  • Martin Hope
    Evan Carroll systemctl 状态显示:“状态:降级” 2018-06-03 18:48:17 +0800 CST
  • Martin Hope
    Tim 我们如何运行存储在变量中的命令? 2018-05-21 04:46:29 +0800 CST
  • Martin Hope
    Ankur S 为什么 /dev/null 是一个文件?为什么它的功能不作为一个简单的程序来实现? 2018-04-17 07:28:04 +0800 CST
  • Martin Hope
    user3191334 如何从 systemctl 服务日志中查看最新的 x 行 2018-02-07 00:14:16 +0800 CST
  • Martin Hope
    Marko Pacak Nano - 跳转到文件末尾 2018-02-01 01:53:03 +0800 CST
  • Martin Hope
    Kidburla 为什么真假这么大? 2018-01-26 12:14:47 +0800 CST
  • Martin Hope
    Christos Baziotis 在一个巨大的(70GB)、一行、文本文件中替换字符串 2017-12-30 06:58:33 +0800 CST
  • Martin Hope
    Bagas Sanjaya 为什么 Linux 使用 LF 作为换行符? 2017-12-20 05:48:21 +0800 CST

热门标签

linux bash debian shell-script text-processing ubuntu centos shell awk ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve