【问题标题】:StatsD start errorStatsD 启动错误
【发布时间】:2013-07-02 07:15:38
【问题描述】:

我在使用 etsy 的 statsD 时遇到了一些问题,并且看到我对 javascript 并没有真正的经验,我想我应该问一个问题,也许有人以前遇到过这个错误,因为很遗憾这次谷歌不是那样的有帮助。

几天前,当我决定重新启动保持 statsD 正常运行的节点进程时,麻烦就开始了,但重新启动后它就无法启动。它给了我以下输出:

2 Jul 03:02:08 - reading config file: /opt/statsd/statsd/psrkConfig.js
2 Jul 03:02:08 - server is up
2 Jul 03:02:08 - Loading backend: ./backends/graphite
events.js:72
        throw er; // Unhandled 'error' event
          ^
Error: bind Unknown system errno 92
    at errnoException (dgram.js:440:11)
    at dgram.js:207:28
    at dns.js:72:18
    at process._tickCallback (node.js:415:13)

首先,我认为我应该描述一下我的环境。我正在使用 gentoo 作为操作系统,我在系统上安装了 net-libs/nodejs-0.10.10(实际上是 0.10.8,但我在搜索问题解决方案时升级了)并且我已经克隆了最新的 etsy/statsD来自 git 的回购。我也尝试过使用 npm 版本的 statsD,但得到了相同的行为。

我尝试使用 strace 跟踪程序并遇到错误,但我不知道如何继续。我猜测失败的系统调用如下:

setsockopt(11, SOL_SOCKET, 0xf /* SO_??? */, [1], 4) = -1 ENOPROTOOPT (Protocol not available) <0.000009>

但它必须从 statsD 内部的某个地方调用(使其更容易调试),但我找不到它。

我将不胜感激任何形式的小帮助或指示,因为我猜测错误来自 node.js 库,而我对它们一无所知。谢谢你。

【问题讨论】:

  • 我放弃了这个并使用了statite,在对石墨水槽进行一些更改后,它就像一个魅力。

标签: javascript node.js statsd


【解决方案1】:

类似于@user1135,在最近的 debian/testing 版本中无法绑定到 UDP 套接字。我们将 udp.c 中的#ifdef 部分注释掉并重新编译以解决问题。

【讨论】:

    【解决方案2】:

    我最近在 Gentoo Linux 上也遇到了类似的问题。碰巧我安装了 3.9 linux 头文件,但仍在运行较旧的内核。这导致在构建 node.js(特别是 uv)时定义了 SO_REUSEPORT。回到正确的标头版本或在 deps/uv/src/unix/udp.c 中执行 #undef SO_REUSEPORT 应该可以修复它。升级到 3.9+ 内核也可以。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-03-23
      • 1970-01-01
      • 2017-02-23
      • 2016-11-10
      • 2013-02-13
      • 2016-06-06
      • 2015-07-08
      相关资源
      最近更新 更多