【问题标题】:Resque timing out after 800 workers800 名工人后 Resque 超时
【发布时间】:2012-10-20 23:09:02
【问题描述】:

我有一个繁重的处理需要使用很多机器来完成。目前,Resque 有 700 名员工在运行,一切正常。但是,如果我将工作人员的数量增加到 1000,我会开始收到很多 redis 超时。 我几乎可以肯定限制在 redis 中,因为我什至无法从 redis-cli 连接。 resque 或 redis 有任何限制吗?或者它可能是一些文件系统限制?

有谁知道这个配置在哪里,所以我可以更改它?

谢谢。

【问题讨论】:

  • 您的 Redis 配置中是否设置了 maxclients

标签: ruby redis resque


【解决方案1】:

您的服务器可能已达到资源限制。

在 Linux 上,检查:

ulimit -a
sysctl net.ipv4.ip_local_port_range
sysctl net.ipv4.tcp_fin_timeout
sysctl net.core.somaxconn
sysctl net.ipv4.tcp_tw_recycle
sysctl net.ipv4.tcp_tw_reuse
sysctl fs.file-max
sysctl net.ipv4.tcp_window_scaling
sysctl kernel.pid_max
sysctl net.ipv4.tcp_orphan_retries
sysctl net.ipv4.tcp_max_orphans

在 FreeBSD 上,检查:

sysctl kern.ipc.nmbclusters
sysctl kern.ipc.maxsockets
sysctl kern.maxfiles
sysctl kern.maxfilesperproc
sysctl net.inet.tcp.msl
sysctl net.inet.ip.portrange.first
sysctl net.inet.ip.portrange.last

获取有关这些 sysctl 配置的更多信息并根据需要增加。

【讨论】:

    【解决方案2】:

    每个工人都是分叉的,并且根据您机器的其他资源,您可能已经达到了运行 700 到 1000 个工人之间的限制。

    我建议监控正在使用的内存量,并检查是否按照上面@Andrew Marshall 的建议设置了 maxclients

    【讨论】:

    • 我让这 1k 名工人在 100 台不同的机器上运行。我猜底部的脖子在redis-server中。但是我没有设置 maxclients,所以它应该是无限的。
    猜你喜欢
    • 1970-01-01
    • 2013-04-02
    • 2015-11-08
    • 1970-01-01
    • 1970-01-01
    • 2012-09-01
    • 2023-03-11
    • 1970-01-01
    • 2015-06-14
    相关资源
    最近更新 更多