我有一个基于 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)