【问题标题】:Perl's worker don't process connections, waiting on a futexPerl 的工作人员不处理连接,等待 futex
【发布时间】:2013-07-02 07:46:14
【问题描述】:

我们有 10 个工作人员处理用户的连接。 Worker 是在 Perl 中实现的,使用 FCGIFCGI::ProcManager

有时,一名工作人员会停止处理连接。 Strace 显示:

futex(0x7fa9ebde0e80, FUTEX_WAIT_PRIVATE, 2, NULL

那就是休眠,等待一个 futex。

工人永远不会从等待中返回。

如果我们杀死这个工人

kill -9

然后它的父母收获它。返回码等于 9。

我们的项目是高负载的。这个问题很少出现。

【问题讨论】:

  • 工人从不等待返回。
  • 好的,你想知道我们为什么?或如何解决它或什么?这个问题还不清楚..
  • 我想知道为什么会这样。以及如何解决它。

标签: perl fastcgi futex


【解决方案1】:

根据futex man page

此系统调用通常用于实现共享内存中锁的竞争情况,如 futex(7) 中所述

所以我的第一个问题是:您的 Perl 脚本是否使用“Perl 线程”并且您是否对共享内存变量存在争用?

【讨论】:

  • 我没有明确使用任何“Perl 线程”。我没有明确使用任何共享内存变量。可能是标准模块之一使用它们。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-09-12
  • 1970-01-01
  • 2014-05-31
  • 2011-02-18
  • 1970-01-01
  • 2016-06-18
  • 1970-01-01
相关资源
最近更新 更多