ES-PHP向ES批量添加文档报No alive nodes found in your cluster
ES-PHP向ES批量添加文檔報No alive nodes found in your cluster
2016年12月14日 12:31:40 閱讀數:2668參考文章phpcurl 請求Chunked-Encoded data 遇到的一個問題
問題描述
為了提高保存數據到es消耗的時間,采取積攢到3000條文檔的時候才保存到ES中,之前一直沒有問題,昨天新上了幾個log服務器后,經常會發現保存失敗報如下錯誤:
No alive nodes found in your cluster- 1
首先我要說這個錯誤真坑啊,以這個關鍵字搜索問題,花了兩天也沒解決,后來無意中FQ搜google,網后翻了好幾頁看到上面的參考文章,才知道,原來真正的錯誤信息隱藏在ES-PHP的Connection類中,代碼如下:
添加var_dump($response['error']->getMessage());一行代碼來輸出一下錯誤信息,錯誤信息如下:
cURL error 55: Send failure: Broken pipe- 1
首先覺得是curl的bug,所以我升級到了最新版本,發現問題還在,然后我調整3000條文檔一保存改為500條,發現保存是沒問題的,后來我懷疑是curl的body體是不是對大小有限制,但是經過詢問得到的回復是沒有這方面的限制,但是組長給我了一個提示,curl沒有限制,可能是接收方有限制,這個提示給我了新方向,查了一下es果然有配置,配置項為http.max_content_length,默認為100M,然后我嘗試了發送不同大小的數據看反應。
- 第一次:141M,報錯
- 第二次: 40M,保存成功
然后我跟es維護人員確認一下http.max_content_length確實是100M,由此問題定位成功,原因也知道了
解決方法
- 1.一次性保存500條數據,確保一次性存儲數據量不超過100M
- 2.由原來的VIP(一個host)改為幾點IP(多host),這樣做的好處是可以重試多次。
轉載于:https://www.cnblogs.com/gaoyuechen/p/9083112.html
《新程序員》:云原生和全面數字化實踐50位技術專家共同創作,文字、視頻、音頻交互閱讀總結
以上是生活随笔為你收集整理的ES-PHP向ES批量添加文档报No alive nodes found in your cluster的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 专访阿里云萧少聪、曹龙:一家云厂商对入局
- 下一篇: WPF绘制简单常用的Path