zoukankan      html  css  js  c++  java
  • ES-PHP向ES批量添加文档报No alive nodes found in your cluster

    ES-PHP向ES批量添加文档报No alive nodes found in your cluster

    参考文章phpcurl 请求Chunked-Encoded data 遇到的一个问题

    问题描述

    为了提高保存数据到es消耗的时间,采取积攒到3000条文档的时候才保存到ES中,之前一直没有问题,昨天新上了几个log服务器后,经常会发现保存失败报如下错误:

    No alive nodes found in your cluster
    • 1

    首先我要说这个错误真坑啊,以这个关键字搜索问题,花了两天也没解决,后来无意中翻墙搜google,网后翻了好几页看到上面的参考文章,才知道,原来真正的错误信息隐藏在ES-PHPConnection类中,代码如下:

    这里写图片描述

    添加var_dump($response['error']->getMessage());一行代码来输出一下错误信息,错误信息如下:

    cURL error 55: Send failure: Broken pipe
    • 1

    首先觉得是curlbug,所以我升级到了最新版本,发现问题还在,然后我调整3000条文档一保存改为500条,发现保存是没问题的,后来我怀疑是curlbody体是不是对大小有限制,但是经过询问得到的回复是没有这方面的限制,但是组长给我了一个提示,curl没有限制,可能是接收方有限制,这个提示给我了新方向,查了一下es果然有配置,配置项为http.max_content_length,默认为100M,然后我尝试了发送不同大小的数据看反应。

    • 第一次:141M,报错
    • 第二次: 40M,保存成功

    然后我跟es维护人员确认一下http.max_content_length确实是100M,由此问题定位成功,原因也知道了

    解决方法

    • 1.一次性保存500条数据,确保一次性存储数据量不超过100M
    • 2.由原来的VIP(一个host)改为几点IP(多host),这样做的好处是可以重试多次。
  • 相关阅读:
    Alpha 冲刺 (8/10)
    Alpha 冲刺 (7/10)
    Alpha 冲刺 (6/10)
    团队作业-随堂小测(同学录)
    Alpha 冲刺 (5/10)
    LeetCode-1
    c++向量
    软件工程实践总结作业
    个人作业——软件产品案例分析
    个人技术博客Alpha----Android Studio学习
  • 原文地址:https://www.cnblogs.com/gaoyuechen/p/9083112.html
Copyright © 2011-2022 走看看