从Node请求Elasticsearch超时
Requesting Elasticsearch from Node times out
我正在使用官方Javascript客户端设置一个简单的Node.js REST服务来与Elasticsearch接口。我在本地运行这段代码,但集群位于远程。当我通过浏览器使用_head
插件时,我可以毫无问题地连接ES和查询。但是,通过Javascript客户端这样做会使所有请求超时。我设置了ElasticSearch对象,但是向它发送任何请求都不起作用。我不认为这是网络问题,因为我可以通过浏览器访问ES。这是我请求东西的方式,一个非常基本的get:
var elasticsearch = require("elasticsearch");
var es = new elasticsearch.Client({
host: "https://my-address:9200/", // also tried without protocol part and trailing slashes
log: "error",
sniffOnStart: true
});
es.get({
index: "things",
type: "someThing",
id: "42"
}).then(doSomeStuff, handleStuffFailed);
此操作失败,并显示一个简单的错误消息Errror: Request timeout after 30000ms.
我错过了什么吗?我已经通读了客户端文档,这似乎是客户端的基本"hello world"。
在实例化ES Client时尝试扩展requestTimeout参数。
client = new elasticsearch.Client({
host : 'http://localhost:9200',
requestTimeout: 60000
});
我有一个长时间运行的进程,耗时不到10分钟。通过设置requestTimeout值60000(10分钟),进程可以在不超时的情况下完成。
我们在QBox上也有这个问题,因为sniffOnStart。试试这个配置:
var es = new elasticsearch.Client({
host: "my-address:9200",
log: "trace",
sniffOnStart: true
});
您将看到添加的节点ip是私有ip。在我们这边,我们决定禁用嗅探并手动添加公共节点主机地址数组,如下所示:
var es = new elasticsearch.Client({
hosts: ["my-address1:9200", "my-address2:9200", "my-address3:9200"],
log: "error"
});
关于弹性搜索中的超时,需要区分两种类型的超时:
-
初始化超时时间:初始化ES:
requestTimeout
,pingTimeout
时默认为30000ms。阅读更多:弹性搜索文档 中的配置文档 操作超时:许多操作,如
bulk
、create
、delete
、index
也可以设置timeout
。比如说,如果你有一个巨大的批量对象要插入,你可以设置基于操作的超时:弹性搜索文档
您应该知道基于操作的超时覆盖了初始化RequestTimeout
。
查看此问题:https://github.com/elastic/elasticsearch-js/issues/186
我想我们需要使用requestTimeout
变量如上所述。
如果看到
请检查以下项目发现:30000ms后请求超时
- 确保Elasticsearch CPU/内存不阻塞
- 如果查询窗口有很多数据,那么请求是可能的30000ms内超时在kibana中增加kibana的超时时间。mysql -> elasticsearch.requestTimeout:120000重启kibana服务 减少kibana仪表板加载的数据量发现:sampleSize在管理-高级设置->更改相应的值
- 如果两者之间有负载均衡器,则增加超时设置
如果每台服务器运行多个节点,请尝试锁定每个jvm可以访问的处理器数量。我们有这个问题,这样做解决了它。我们认为一个节点使用了太多的系统资源,这会导致同一服务器上的另一个节点在查询状态时响应主节点很慢。
- 使用优化器在慢速连接上加载main.js时需要js超时
- 当浏览器控制台未打开时,为什么要求会导致Internet Explorer 9超时
- 超时功能的性能
- 使用不同的超时对数组中的每个项目进行角度动画处理
- 设置第一次执行的超时
- node.js测试事件是否是在不使用超时的情况下使用sinon.js发出的
- 使用javascript和随机暂停/超时快速循环文本
- 如何在jQuery事件处理程序中存储和重用超时
- 当定位模式设置为“0”时,总是达到关于地理定位的超时;仅设备”;
- 为什么页面重新加载会使设置超时无效,以及如何避免
- 立即设置超时
- 在promise中为回调添加超时并拒绝
- 如何设置$.ajax请求的超时,并在超时时间过长时进行重做
- iOS Safari Javascript设置超时问题
- 如何将嵌套设置超时转换为承诺
- XMLHTTPRequest脚本中没有internet连接和超时
- CXP项目中的Javascript超时
- 超时后才能再次单击
- AngularjS到ElasticSearch的连接超时
- 从Node请求Elasticsearch超时