【问题标题】:Numpy Runtime Warning causing Apache Workers to freeze in "Sending Reply" stateNumpy 运行时警告导致 Apache Worker 冻结在“发送回复”状态
【发布时间】:2013-10-13 08:57:05
【问题描述】:

最近,我在我的代码中寻找一个难以捉摸的错误。它归结为一些计算数组一部分平均值的 numpy 代码。

np.array(X[X == i]).mean(0)

当然,如果X中没有值为i的元素,那么前面的代码就相当于计算一个空数组的均值。

np.array([]).mean(0)

这会产生值nan。但在某些架构上,它也会导致此警告。

RuntimeWarning: double_scalars 中遇到无效值

我们修复了代码,现在一切正常,但这个故事的另一部分更令人不安。

该错误的表现方式是,它导致 Apache 进程占用了所有陷入“发送回复”状态的工作人员。在“发送回复”中被抓到的工人并不是导致问题的实际工人,而是紧随其后的工人。没有引发 python 异常,内存使用良好,几乎没有使用 CPU。它只是慢慢地削弱了 Apache,直到它完全没有响应。

我们使用 Apache、Django、mod_wsgi 和 numpy 等等。

关于为什么这个 numpy 代码导致 Apache 卡住的任何想法?我想采取措施防止它在未来发生。

【问题讨论】:

    标签: django apache numpy mod-wsgi


    【解决方案1】:

    见:

    从内存中,numpy 受到该问题的一个变体的影响。确保您强制 WSGI 应用程序在主解释器上下文中运行。

    【讨论】:

      【解决方案2】:

      从@Graham Dumpleton 回答构建,只需添加这一行:

      WSGIApplicationGroup %{GLOBAL}
      

      到我的应用程序的 apache 配置文件为我解决了这个问题。

      【讨论】:

        猜你喜欢
        • 2014-08-10
        • 1970-01-01
        • 1970-01-01
        • 2019-02-21
        • 1970-01-01
        • 2016-01-18
        • 2011-06-19
        • 2018-05-30
        • 2011-05-08
        相关资源
        最近更新 更多