解决python elasticsearch的TransportError异常问题

照例先扯闲话,今天的雾霾终于下去了,风很大,身体有些虚.  是时候该锻炼了. 

收到elasticsearch数据延迟的微信报警。 通过看日志得知consumer进程异常了, ps aux f看了下进程状态貌似是正常.  我们可以确定了41577 是主进程,剩下的都是由41577 spawn出去的. 让我们拿出大杀器,strace

文章写的不是很严谨,欢迎来喷,另外该文后续有更新的,请到原文地址查看更新.

http://xiaorui.cc/2016/01/06/%E8%A7%A3%E5%86%B3python-elasticsearch%E7%9A%84transporterror%E5%BC%82%E5%B8%B8%E9%97%AE%E9%A2%98/

通过strace -p pid看到主进程在等待41591主进程。 我们可以看到bulk_transfer在做futex_wait_bitset操作, 而没有去干活。  另外我这边会有一个逻辑,如果内置队列满2k,暂停工作.   为毛队列一直爆满,而消费进程又在干嘛.


下面是详细的程序日志.  TransportError又是TransportError ,上次也是这破问题,当时的解决方法是直接exit退出,然后用supervisord来控制进程. 

TransportError(503, u’ClusterBlockException  ,  这个异常一般是elasticsearch cluster集群出问题引起的。 当elasticsearch集群出问题时候,所有的客户端都会出现这样的报错。 

需要注意的是,不能简单的把这个TransportError异常try execpt过滤,最好在异常后重新创立一个新的elasticsearch连接。 


上次我只是过滤TransportError异常,但等elasticsearch正常后,还是无法正常的入库。 pdb调试了下,貌似连接的状态有问题, 在官方问了issuse也没有得到靠谱的回答。不知道是不是elasticsearch-py的一个bug.

下面也是常见的elasticsearch python api的异常情况.

class elasticsearch.ConnectionError(TransportError)
Error raised when there was an exception while talking to ES. Original exception from the underlying Connection implementation is available as .info.

class elasticsearch.ConnectionTimeout(ConnectionError)
A network timeout. Doesn’t cause a node retry by default.

class elasticsearch.SSLError(ConnectionError)
Error raised when encountering SSL errors.

class elasticsearch.NotFoundError(TransportError)
Exception representing a 404 status code.

class elasticsearch.ConflictError(TransportError)
Exception representing a 409 status code.

class elasticsearch.RequestError(TransportError)
Exception representing a 400 status code.

class elasticsearch.ConnectionError(TransportError)
Error raised when there was an exception while talking to ES. Original exception from the underlying Connection implementation is available as .info.



对Python及运维开发感兴趣的朋友可以加QQ群 : 478476595 !!!

另外如果大家觉得文章对你有些作用!   帮忙点击广告. 一来能刺激我写博客的欲望,二来好维护云主机的费用.
如果想赏钱,可以用微信扫描下面的二维码. 另外再次标注博客原地址  xiaorui.cc  ……   感谢!

大数据ElasticSearch遇到ignore_above问题

    以前有一个叫朱伟大神的人跟我聊过,凡是所谓的坑,都是因为你没看他的源码或者文档导致的。 这话听起来有道理,但问题ElasticSearch的各种文...

阅读全文

[译文] Elasticsearch的任务管理api

心血来潮,又翻译了elasticsearch的一篇文章。 今才发现elasticsearch也有了任务管理api。这任务管理可以理解为mysql的show processlist; kill %task_id ...

阅读全文

使用elasticsearch的scroll和scan解决深度分页问题

使用ElasticSearch的scroll和scan解决大数据集合问题 内容概要, 主要是解决在ElasticSearch中大数据集合的查询需求,可以使用scroll scan可以较轻松的遍历el...

阅读全文