处于“打开太多文件”的混乱之中

处于“打开太多文件”的混乱之中

我正处于“文件限制”混乱之中,我不知道该怎么办。

我确信重新启动系统会在一段时间内有所帮助。然而,有人可以为我指明正确的方向,找到帮助诊断此问题的工具并在这里找到问题的根源?

在使用我的系统几周而没有重新启动后,有几件事开始困扰我:

  • 系统变得明显缓慢,
  • 某些程序无明显原因或日志崩溃:例如,如果我正在运行 Wezterm - Google Chrome 无法启动,
  • 或者 Google Chrome 正在运行 - 那么 Wezterm 无法启动。

这种情况已经持续了好几个月了,我不明白是什么原因造成的。

这次我决定尝试从另一个终端模拟器运行 Wezterm,看看它是否会在标准输出中溢出任何错误。它做了。显然,我达到了打开文件描述符的限制。

我已经检查并重新检查了当前限制,并尝试根据互联网上的随机建议增加它。没有运气。我不明白为什么文件描述的数量不足以启动Wezterm。

在此输入图像描述

更令人困惑的是,我尝试查看每个进程当前打开的文件数,结果显示:

lsof | awk '{ print $1 " " $2; }' | sort -rn | uniq -c | sort -rn | head -15
[...]
lsof: no pwd entry for UID 65535
lsof: no pwd entry for UID 65535
  72450 plasmashe 610475
  39294 krunner 623883
  27808 telegram- 2383506
  22572 chrome 2167881
  21600 chrome 2167924
  21344 slack 616893
  20987 plasma-di 2394216
  17050 kwin_x11 610405
  12606 zeal 610569
   8732 slack 616960
   8692 1password 2364911
   7766 konsole 2403669
   7480 spectacle 1976672
   7452 xdg-deskt 610370
   4456 kded5 610402

第一列应该是进程的文件描述符的数量。为什么进程需要打开文件?另外:这不可能与 50k 文件描述符的上限一致。现在超级迷茫。

琐事:

  • 系统控制:

    sysctl --all | grep file-max
    sysctl: permission denied on key 'fs.protected_fifos'
    sysctl: permission denied on key 'fs.protected_hardlinks'
    sysctl: permission denied on key 'fs.protected_regular'
    sysctl: permission denied on key 'fs.protected_symlinks'
    fs.file-max = 9223372036854775807
    sysctl: permission denied on key 'kernel.apparmor_display_secid_mode'
    sysctl: permission denied on key 'kernel.cad_pid'
    sysctl: permission denied on key 'kernel.unprivileged_userns_apparmor_policy'
    sysctl: permission denied on key 'kernel.usermodehelper.bset'
    sysctl: permission denied on key 'kernel.usermodehelper.inheritable'
    sysctl: permission denied on key 'net.core.bpf_jit_harden'
    sysctl: permission denied on key 'net.core.bpf_jit_kallsyms'
    sysctl: permission denied on key 'net.core.bpf_jit_limit'
    sysctl: permission denied on key 'net.ipv4.tcp_fastopen_key'
    sysctl: permission denied on key 'net.ipv6.conf.all.stable_secret'
    sysctl: permission denied on key 'net.ipv6.conf.br-77aecafe7c63.stable_secret'
    sysctl: permission denied on key 'net.ipv6.conf.br-faf1bfa0fcca.stable_secret'
    sysctl: permission denied on key 'net.ipv6.conf.default.stable_secret'
    sysctl: permission denied on key 'net.ipv6.conf.docker0.stable_secret'
    sysctl: permission denied on key 'net.ipv6.conf.enp2s0f1.stable_secret'
    sysctl: permission denied on key 'net.ipv6.conf.lo.stable_secret'
    sysctl: permission denied on key 'net.ipv6.conf.wlp3s0.stable_secret'
    sysctl: permission denied on key 'vm.mmap_rnd_bits'
    sysctl: permission denied on key 'vm.mmap_rnd_compat_bits'
    

    sysctl:密钥“vm.stat_refresh”的权限被拒绝

  • 内核版本:

    uname -a
    Linux eugene-pc 5.15.0-56-generic #62-Ubuntu SMP Tue Nov 22 19:54:14 UTC 2022 x86_64 x86_64 x86_64 GNU/Linux
    
  • 操作系统版本:

    lsb_release -a
    No LSB modules are available.
    Distributor ID: Ubuntu
    Description:    Ubuntu 22.04.1 LTS
    Release:        22.04
    Codename:       jammy
    

相关内容