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