linux – 限制集在哪里? bash:fork:retry:没有子进程
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了linux – 限制集在哪里? bash:fork:retry:没有子进程,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1537字,纯文字阅读大概需要3分钟。
内容图文
![linux – 限制集在哪里? bash:fork:retry:没有子进程](/upload/InfoBanner/zyjiaocheng/958/646a28d1c46445f2810d2a0d8f9bd795.jpg)
这个:
$seq 100000 | xargs -P0 -n1 -I {} bash -c 'echo {};sleep {}'
:
5514
bash: fork: retry: No child processes
当系统运行11666个进程时,他们开始抱怨5500左右.现在,11666对我来说真的很惊讶:
$ulimit -u
313370
$cat /proc/sys/kernel/pid_max
313370
$grep hard.*nproc /etc/security/limits.conf
* hard nproc 313370
为什么我只能运行11600个进程?
编辑:
对另一个用户进行测试我得到6100(即12200次触发),因此共计24000次触发.所以限制不是系统范围的.
$uname -a
Linux aspire 4.4.0-116-generic #140-Ubuntu SMP Mon Feb 12 21:23:04 UTC 2018 x86_64 x86_64 x86_64 GNU/Linux
$grep -i tasksmax /etc/systemd/*
/etc/systemd/logind.conf:#UserTasksMax=12288
/etc/systemd/system.conf:#DefaultTasksMax=
所以12288可能是罪魁祸首.我把它改为1000并做了:
sudo systemctl daemon-reexec
sudo systemctl restart systemd-logind
如果我现在以我以前没有登录的用户身份登录,则新限制有效.但是,如果我以最近登录的用户身份登录,则会强制执行首次登录时激活的限制.所以限制在某处缓存.
使用上面我测试了多达30000个触发器,这可行,但仅适用于之前未登录的用户.
那么什么是缓存限制
/etc/systemd/logind.conf?我该如何刷新缓存?
新限制远高于60000触发(并且可能是我预期的313370).
解决方法:
有问题的系统运行systemd.这是使用cgroups在不同进程组之间划分系统资源的一件事.
sysctl kernel.sched_autogroup_enabled = 1可能已设置.这将是使用cgroup划分系统资源的第二件事.
有可能一旦特定用户的cgroup或一组cgroup被初始化,它就会保持不变,直到重新启动.
我没有办法去寻找它是因为systemd还是autogroup,是因为进程数限制还是因为内存限制(在cgroup内),也没有时间在源代码中搜索.想要评论而不是回答,但我没有足够的声誉.
内容总结
以上是互联网集市为您收集整理的linux – 限制集在哪里? bash:fork:retry:没有子进程全部内容,希望文章能够帮你解决linux – 限制集在哪里? bash:fork:retry:没有子进程所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。