首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >-bash:叉:无法分配内存

-bash:叉:无法分配内存
EN

Stack Overflow用户
提问于 2017-04-27 08:04:35
回答 4查看 38.6K关注 0票数 8

当我在bash中运行任何命令时,它返回:

代码语言:javascript
复制
$ free -m
-bash: fork: Cannot allocate memory

然后,我尝试用ps命令调试内存泄漏。它返回:

代码语言:javascript
复制
$ ps --sort -rss -eo rss,pid,command | head
RSS   PID COMMAND
518116 1310 /usr/bin/influxd -pidfile /var/run/influxdb/influxd.pid -config /etc/influxdb/influxdb.conf
281700 1912 /opt/td-agent/embedded/bin/ruby /usr/sbin/td-agent --log /var/log/td-agent/td-agent.log --daemon /var/run/td-agent/td-agent.pid
68260 23896 /home/alphauser/Envs/vogo-alpha/bin/python ./manage.py runserver 0.0.0.0:8008
43720 20201 python ./manage.py runserver 0.0.0.0:8008
36928  2223 rsyslogd
27432  1909 /opt/td-agent/embedded/bin/ruby /usr/sbin/td-agent --log /var/log/td-agent/td-agent.log --daemon /var/run/td-agent/td-agent.pid
25296 15009 /usr/bin/telegraf -pidfile /var/run/telegraf/telegraf.pid -config /etc/telegraf/telegraf.conf -config-directory /etc/telegraf/telegraf.d
24428 32529 /usr/sbin/grafana-server --pidfile=/var/run/grafana-server.pid --config=/etc/grafana/grafana.ini cfg:default.paths.data=/var/lib/grafana cfg:default.paths.logs=/var/log/grafana cfg:default.paths.plugins=/var/lib/grafana/plugins
20792  2314 /var/lib/waagent/Microsoft.OSTCExtensions.LinuxDiagnostic-2.3.9025/bin/mdsd -A -C -c /var/lib/waagent/Microsoft.OSTCExtensions.LinuxDiagnostic-2.3.9025/./xmlCfg.xml -p 29131 -R -r lad_mdsd -e /var/log/azure/Microsoft.OSTCExtensions.LinuxDiagnostic/2.3.9025/mdsd.err -w /var/log/azure/Microsoft.OSTCExtensions.LinuxDiagnostic/2.3.9025/mdsd.warn -o /var/log/azure/Microsoft.OSTCExtensions.LinuxDiagnostic/2.3.9025/mdsd.info

如何调试?核心问题是什么?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2018-06-21 04:31:30

我的Ubuntu14.04桌面也面临着这个问题。

代码语言:javascript
复制
 free -m

即使显示的这些基本命令也不能分配内存错误。在调查时,发现系统正在使用所有内存进行缓存,而不是释放内存。这被称为缓存膨胀,并通过清除缓存来解决这个问题。

票数 8
EN

Stack Overflow用户

发布于 2020-04-13 10:18:10

在我的例子中,操作系统正在耗尽PID而不是内存,但是错误消息是一样的。

最大值的默认值为32768,若要查看该值,请运行

代码语言:javascript
复制
cat  /proc/sys/kernel/pid_max

若要更改最大pid数字,请运行

代码语言:javascript
复制
echo 100000 > /proc/sys/kernel/pid_max

在我的场景中,根本原因是一个java进程生成了18k+线程(在linux内核中,线程本质上是一个进程),为了找出每个进程的线程数,运行

代码语言:javascript
复制
ps -eo nlwp,pid,args --sort nlwp
票数 4
EN

Stack Overflow用户

发布于 2017-06-14 04:51:22

您可能首先要检查系统内存的使用情况,以确定是否有足够的空闲内存。

如果不是,这就是我的情况,请通过输入ulimit -a来检查您的ulimit,看看您是否达到了最大打开文件的极限(主要是由于某些进程占用了大量文件描述符)。在这种情况下,调整上限将解决您的问题。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43652021

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档