微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何在WSL2的Ubuntu 20.04中提高打开文件的限制?

如何解决如何在WSL2的Ubuntu 20.04中提高打开文件的限制?

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

在使用parcel(反应捆绑程序)进行开发期间,我遇到了一个问题,即捆绑程序显然同时打开了很多文件,并且在某个时候,我遇到了以下问题:

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中设置软限制和硬限制似乎没有效果
  • 我还发现,在DefaultLimitNOFILE中更改/etc/systemd/system.conf可以起到一定作用(所以我也这样做了)

有人能在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 Terminal正常登录,则此限制无效有效。现在更加困惑-但是-我有解决问题的方法。将我的值设置为65536之后,parcel构建现在可以工作,并且以我自己的用户身份运行。去搞清楚!我仍然不太清楚现在哪个设置正在改变行为-也许有人对它的工作方式和/或如何将其设为认值(而不必执行su)进行更全面的了解限制。

解决方法

我必须在 /etc/systemd/user.conf 中添加以下行:

DefaultLimitNOFILE=65535

正如这里的答案所写:

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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。