小编kis*_*isp的帖子

在高负载下连接 nodejs 中的 EADDRNOTAVAIL - 如何更快地释放或重用 TCP 端口?

我有一个基于 express-framework 的类似 wiki 的小型 Web 应用程序,它使用弹性搜索作为后端。对于每个请求,它基本上只转到弹性搜索数据库,检索对象并返回由把手模板引擎呈现的对象。与弹性搜索的通信通过 HTTP

只要我只有一个 node-js 实例在运行,这个方法就很好用。在我更新我的代码以使用集群后(如nodejs-documentation 中所述,我开始遇到以下错误:connect EADDRNOTAVAIL

当我运行 3 个或更多 python 脚本时,会出现此错误,这些脚本不断从我的服务器检索一些 URL。使用 3 个脚本,我可以检索约 45,000 个页面,其中运行 4 个或更多脚本,在 30,000 到 37,000 个页面之间仅运行 2 或 1 个脚本,半小时后我停止了它们,分别检索了 310,000 页和 160,000 页。

我发现了这个类似的问题并尝试更改,http.globalAgent.maxSockets但没有任何效果。

这是代码的一部分,用于侦听 URL 并从弹性搜索中检索数据。

app.get('/wiki/:contentId', (req, res) ->
    http.get(elasticSearchUrl(req.params.contentId), (innerRes) ->
        if (innerRes.statusCode != 200)
            res.send(innerRes.statusCode)
            innerRes.resume()
        else
            body = ''
            innerRes.on('data', (bodyChunk) ->
                body += bodyChunk
            )
            innerRes.on('end', () ->
                res.render('page', {'title': req.params.contentId, 'content': JSON.parse(body)._source.html}) …
Run Code Online (Sandbox Code Playgroud)

port limit node.js coffeescript express

5
推荐指数
1
解决办法
4342
查看次数

标签 统计

coffeescript ×1

express ×1

limit ×1

node.js ×1

port ×1