【问题标题】:How can I raise the limit for open files in Ubuntu 20.04 on WSL2?如何提高 WSL2 上 Ubuntu 20.04 中打开文件的限制?
【发布时间】:2021-01-05 16:39:49
【问题描述】:

我的设置如下所示:Windows 10,Release 1909(内部版本 18363.1082),在 Ubuntu 20.04 环境中使用 WSL2。大多数时候一切都很好,但有些问题我无法解决。

在使用parcel (React bundler) 开发过程中,我遇到了 bundler 显然同时打开 lots 文件的问题,并且在某个时刻,我遇到了以下问题问题:

EMFILE: too many open files, open '/home/myusername/Projects/some-project-path/node_modules/@material-ui/icons/esm/RoundedCornerRounded.js'

由于parcel 似乎不容易支持使用graceful-fs 之类的东西,我试图增加在 Ubuntu 环境中打开文件的限制。到目前为止我尝试过的:

  • 一个简单的ulimit -n 4096(默认情况下可能最高),但显然(到目前为止?)还不够
  • 我尝试将fs.files-max 增加到/etc/sysctl.conf 中的某个非常高的值,但它似乎没有效果(sysctl -p 之后和wsl 重新启动之后都没有)
  • 我也尝试增加fs.inotify.max_user_watches,但这似乎也没有效果
  • /etc/security/limits.conf 中设置软限制和硬限制似乎没有效果
  • 我还发现在 /etc/systemd/system.conf 中更改 DefaultLimitNOFILE 会产生影响(所以我也这样做了)

有没有人设法在 WSL2 上解决 Ubuntu 20.04 上的类似系统?这让我很困惑,它阻止我在这个环境中使用parcel。真可惜,因为其他一切都运行良好。


更新

所以我发现我在各个地方的更改(可能是/etc/security/limits.conf中的那个)已经产生了某种效果。只是直接登录时没有。这说明了这一点:

donmartin@SOMEMACHINE:~$ ulimit -Hn
4096
donmartin@SOMEMACHINE:~$ su donmartin
Password:
donmartin@SOMEMACHINE:~$ ulimit -Hn
65536
donmartin@SOMEMACHINE:~$

这意味着:如果我 su 对我自己的用户,ulimit 确实已经提出。但是,如果我使用 Windows 终端正常登录,则此限制有效。现在更加困惑 - 但是 - 我有一个解决我的问题的方法。将我的值设置为65536 后,parcel 构建现在可以工作,以我自己的用户身份运行。去搞清楚!我仍然不太清楚现在哪个设置正在改变行为 - 也许有人对它的工作原理和/或我如何将其设为默认设置有更全面的信息,而无需执行 su 以获得更新的限制。

【问题讨论】:

    标签: windows-subsystem-for-linux parceljs ulimit wsl-2


    【解决方案1】:

    试试这个:

    $ visudo
    ADD: user ALL=(ALL) NOPASSWD:ALL
    
    $ vi ~/.profile
    ADD: user ALL=(ALL) NOPASSWD:ALL
    
    $ vi /etc/security/limits.conf
    ADD: user soft nproc 10000
    user hard nproc 10000
    user soft nofile 10000
    user hard nofile 10000
    

    【讨论】:

      【解决方案2】:

      我必须将以下行添加到/etc/systemd/user.conf

      DefaultLimitNOFILE=65535
      

      正如这里的答案所写:

      https://superuser.com/questions/1200539/cannot-increase-open-file-limit-past-4096-ubuntu/1200818#1200818?s=1b927bb17396480da98a94cbacf8da62

      【讨论】:

      • 你能确认你在 WSL 上吗?最初的问题是关于 Linux 的 Windows 子系统,它不支持 systemd,所以如果编辑 systemd 配置文件会对这个问题产生任何影响,那将是令人惊讶的。也许我错过了一些东西;或者你是?
      • 这是在 WSL2 上。我在使用 WSL2 和 Ubuntu 20.04 的打开文件数量方面遇到了完全相同的问题。首先,我尝试了limits.conf 以及我习惯于其他Linux 发行版的内容,然后我偶然发现了链接的答案,它为我解决了这个问题。
      • 酷 - 正如我所说,我很惊讶,但感谢您的确认!
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-10-29
      • 2020-10-25
      • 1970-01-01
      • 2021-07-13
      • 2014-02-26
      • 2022-09-29
      • 1970-01-01
      相关资源
      最近更新 更多