问题标签 [zombie-process]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
1847 浏览

linux - 关于僵尸进程和线程的问题

因为我正在阅读有关进程和线程的一些新主题,所以我想到了这些问题。如果有人可以帮助我,我会很高兴。

1)如果一个线程被标记为不可取消,然后进程在临界区内被杀死,会发生什么?

2)我们是否有操作系统已知的程序的主线程?我的意思是操作系统是否赋予程序的第一个线程一些有益的权利或什么?

3)当我们杀死一个进程并且线程没有加入时,它们会变成僵尸吗?

0 投票
1 回答
373 浏览

c++ - 父进程没有捕获他所有的子进程

我有以下问题:

我有主(父)进程,它使用 fork 函数创建另一个进程(子进程)。我正在捕捉孩子的状态以消除僵尸。当有 1 个子进程时,它被正确捕获,但是当父进程创建的进程(aprx. 30)更多时,有 aprx. 剩下 4 个僵尸 = 父级没有捕获所有子级(返回状态/状态 = <defunct>)。

使用捕获子状态

提前致谢。

0 投票
2 回答
7164 浏览

php - 调用 php 时 Apache 产生僵尸进程

我有一个在 modx 中构建的站点,当它的负载命中耗尽所有 cpu 处理能力时,top 显示许多已失效的 php 僵尸进程正在消耗它。

这是系统规格...
PHP 5.2.14
php 作为 suPHP
Mysql 5.1.51
Apache 2.0.63
modx 1.0.4运行

用于使用 ApacheBench 测试即时通讯并使用 100 个并发连接模拟 500 个连接

我现在已经测试了两种方法......

关闭 .htaccess 并对一个简单的 php 页面进行压力测试,该页面只是回显“Hello world”。
在顶部,这表明 php 将失效并变成僵尸,但它们很快就会消失

调用由 modx 提供的页面,其中 php 做得更多,会产生更多吃更多 CPU 的僵尸,其中一些不会很快消失。

什么会导致这种情况?在我们的代码中会不会是一个错误——在这种情况下,为什么简单的 Hello World 脚本会产生僵尸?

是服务器配置有问题还是服务器负载过大?

现在对这一切都摸不着头脑,希望能得到一些关于下一步该做什么的指示。

0 投票
3 回答
567 浏览

perl - Perl:通过 open() 没有 close() 创建僵尸

这是问题所在:我有一个守护进程,它从客户端获取请求,根据请求执行一个函数(来自某个模块)并向客户端返回一个答案。在 fork() 之后,我关闭了 STDIN、STDOUT 和 STDERR。一个功能是检查 dmesg。为此,我通过 open(DMESG, "/bin/dmesg |") 获得 dmesg 输出。读完后我没有关闭这个 fh,因为我认为它会在函数完成后自动关闭。但这并没有发生,每次调用 dmesg 我都会得到一个僵尸。

关于如何重新初始化 Perl 的 STDIN/STDOUT/STDERR?我发现“关闭 STDOUT 而不是重新打开的问题在于,如果您打开其他文件,它们可能会得到 fd 0,1 或 2 - 阻止您将来重新打开 STDOUT。” by jmanning2k 我认为这与它有关,但我真的不明白。我希望有人能给我解释一下。

我知道我可以避免这个问题,例如通过 qx(); 调用 dmesg; 或者只是关闭 fh 但我想了解僵尸来自哪里。

0 投票
2 回答
6733 浏览

apache - debian上的apache僵尸进程,是什么原因?

在顶部,我不断看到僵尸进程(一次不超过一个),它们很快消失(在 10 秒内),但几秒钟后又出现了一个新的僵尸进程。我的服务器运行 3 个站点,2 个用 PHP 编写,一个用 Perl 编写,全部由 Apache 提供服务。对于 PHP 站点,我使用 mod_rewrite 创建漂亮的 URL。我一直试图找出导致这些僵尸的页面或脚本,但找不到。有没有办法将进程的 PID 连接到它正在执行的请求?为了找出导致僵尸的原因,我停止了 Perl 站点和其中一个 PHP 站点,没有任何改变,僵尸不断出现,所以我最好的猜测是我已将其缩小到一个站点,但话又说回来,也许它什么都没有与特定站点有关(我无法将其余站点脱机检查,因为人们正在使用它)。

Apache/2.2.9 (Debian) DAV/2 SVN/1.5.1 PHP/5.2.6-1+lenny8 with Suhosin-Patch mod_ssl/2.2.9 OpenSSL/0.9.8g mod_perl/2.0.4 Perl/v5.10.0

非常感谢任何帮助或指出我正确的方向,我已经在谷歌上搜索并尝试了几天(不过我从中学到了很多;-))。

在安静的圣诞假期里,我有机会将第三个站点离线几分钟。令我惊讶的是,我一直看到僵尸出现,所以它似乎与某个站点无关,而是与 Apache 中的某些设置有关。有什么想法吗?

0 投票
3 回答
2884 浏览

c++ - 僵尸进程和分叉

我有这样的代码...

fd[READ] 和 fd[WRITE] 是管道文件描述符。

当我连续运行它时,当我使用 ps ax 时有很多僵尸进程。如何纠正这种情况?这是因为我没有使用父进程等待子进程的退出状态...

0 投票
2 回答
378 浏览

perl - 僵尸如何伤害?

来自perlipc/信号

如果超时的操作是 system() 或 qx(),这种技术很容易产生僵尸。如果这对您很重要,您将需要执行自己的 fork() 和 exec(),并终止错误的子进程。

我有一个类似的代码,其中超时的操作是 system() 或 qx()。

僵尸的坏处是它们消耗内存还是僵尸可以伤害的方式更多?

0 投票
1 回答
4486 浏览

gdb - gdb可以附加一个僵尸进程()?

我有一个作为僵尸进程运行的程序。我想调试它。但是我得到了一个 gdb 错误。

我的代码创建了僵尸进程:

0 投票
1 回答
4195 浏览

perl - 当父级退出时,如何在 perl 中生成一个进程而不使其失效或僵尸?

我有一个 perl 脚本,我想生成一个进程。这可能需要一段时间,大多数时候父脚本会退出。我如何生成这个进程,以便当父进程消失时它不会变成僵尸或已失效的进程?

编辑:我想我找到了两种方法。希望有人能告诉我哪个更合适?

  1. 设置 $SIG{CHLD} = 'IGNORE';
  2. 使用 POSIX 'setsid';

编辑:生成的进程也将是另一个 perl 脚本。

0 投票
1 回答
1185 浏览

python - 多处理 + psycopg2 僵尸孩子

我正在尝试使用 psycopg 和多处理插入和更新几百万行。根据http://initd.org/psycopg/docs/usage.html#thread-and-process-safety中的文档,每个孩子都有自己的数据库连接。

但在行刑过程中,只有一个孩子逃跑,其他孩子变成了僵尸。脚本本身非常简单,这里是相同的修剪版本,

我还通过窥视检查了表是否具有升级锁pg_locks,但看起来情况并非如此。我错过了一些明显的东西吗?