嵌入式linux 线程不执行

嵌入式linux 线程不执行,第1张

解决方法如下:

这个问题是由于访问内存错误造成的,例如一次时因为循环越界,导致访问界外内存时出现过此种问题。

2、程序卡死的问题,就是程序的进程还在,但是却卡在那里什么都不做,该问题可能也是内存访问越界造成的;

另外还可能是多线程中混合使用C和C++的函数造成,例如:某些嵌入式linux平台对C++支持的不好,这时候如果在多线程中混合使用printf和cout,就会造成此问题。

Hadoop的NameNode无法用hadoop用户登录,ssh –vvv 提示远程无Session资源。

用root登录进去查看hadoop用户的资源信息:

# su -m -c 'ulimit -a' hadoop

su: 无法设置用户ID: 资源暂时不可用

按经验看就是hadoop用户开了太多线程,达到系统最大限制(默认1024)

# ps –eL | wc -l

2219

总线程数超过1024,有可能是线程满的问题。不过这台服务器已经调整过用户线程限制了,为何还会出现这个问题呢?

用户环境变量,/etc/profile.d/ulimit.sh :

#!/bin/bash

[ "$(id -u)" == "0" ] &&ulimit -n 1048576

ulimit -u 10000

系统限制配置,/etc/security/limits.conf:

* soft nproc 10000

* hard nproc 10000

* soft nofile 1048576

* hard nofile 1048576

验证一下,结果还是设置无效:

# su -m -c 'ulimit -u' nobody

1024

最后确定是由于CentOS 6.4版本新增了限制配置 /etc/security/limits.d/90-nproc.conf ,以保证root用户无限制。此配置会覆盖主配置文件的设定:

# Default limit for number of user's processes to prevent

# accidental fork bombs.

# See rhbz #432903 for reasoning.

* softnproc 1024

root softnproc unlimited

OK,问题就此定位!

解决办法:删除 /etc/security/limits.d/90-nproc.conf 文件中1024那一行。

注意:不推荐删除此文件,一方面root无限制的配置丢了;另一方面如果此配置文件不存在,执行系统升级时可能又被写入;文件存在时,升级系统时,即使此文件需要更新,也不会被覆盖而是生成 90-nproc.conf.rpmnew。

解决办法如下:

1。终端输入 ps -aux ,列出进程。找到含有apt‘-get的进程,直接sudo kill PID。解决。

2。强制解锁,命令

sudo rm /var/cache/apt/archives/lock

sudo rm /var/lib/dpkg/lock


欢迎分享,转载请注明来源:内存溢出

原文地址: https://www.outofmemory.cn/yw/8905257.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-22
下一篇 2023-04-22

发表评论

登录后才能评论

评论列表(0条)

保存