博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
impala中的死锁
阅读量:6676 次
发布时间:2019-06-25

本文共 917 字,大约阅读时间需要 3 分钟。

hot3.png

       本人目前做impala的二次开发,主要做java开发,impala 的使用版本是1.2.1.

       今天是年前的最后一个工作日,手头还一个bug需要修改。决定最好一天干掉这个bug.

       我们修改了impala的源码,希望它支持更多的数据库查询,修改工作完毕后,在测试中发现。 使用jdbc对一个元数据进行创建100次,然后删除100次的过程中,junit卡住不动,查后元数据看还有一部分未删除。查看日志都很正常。同时别的机器启动一个JDBC连接,也卡住无法获取连接:初步分析是锁的问题,才开始以为是数据库锁的问题,但是shell可以操作,那么只有程序中说锁的问题了。

       我主要负责java方面的开发。java使用了同步块,不存在死锁的问题。可能问题出现在c++部分。我找了开发负责人就我老大描述了下问题和分析结论。

        老大通过GDB分析死锁的问题。

        impala里面有3个进程:catalogd,impalad,statestored,因为是元数据操作,分析可能是catalogd进程的问题,因为这个进程是1.2新加的。感觉一直不太稳定。分析结果不是它的问题。然后就分析statestored。

       1:info thread:  查看所有的线程信息 ,找到wait标示的线程。

       2: t    线程号,:进入该线程

       3:bt: 打印线程栈的信息。知道是源码的哪块获取了锁。

       4:f  方法调用号: 进入获取锁的方法中。

       5:p  *this            打印锁的信息。知道有几个线程在等待锁,锁目前是哪个线程持有。

然后再分析持有锁的线程。结果发现线程1持有A锁,想获取B锁, 线程2持有B锁想获取A锁!!!

      结果真的是锁的问题,

调试bug的时候,有时候猜想也是很大的帮助。竟可能的收集信息,排除别的可能。

该bug已经在impala 1.2.3版本中进行了修改。  

下午公司同事讲statestore的架构。有机会再分享这块的东西。

还有一个问题。在测试并发的时候最还使用并发能力好的机器,因为这个问题在我的机器上不能重现,但是在测试那里却能90%重现,他使用的是刀片机。

 

转载于:https://my.oschina.net/1987times/blog/196144

你可能感兴趣的文章
中国人工智能学会通讯——个性化推荐和资源分配在金融和经济中的应用 1.4 智能金融·产品增强...
查看>>
云计算在安防监控领域中有哪些作用
查看>>
Python赶超R语言,成为数据科学、机器学习平台中最热门的语言?
查看>>
内部云部署不只虚拟化那么简单
查看>>
数据中心网络的那些二层技术谈
查看>>
Synergy配置与使用
查看>>
微服务的4大设计原则和19个解决方案
查看>>
一个跨平台的 C++ 内存泄漏检测器
查看>>
格力给洛阳砸了150亿,我们瞄到了更深刻的「原因」
查看>>
数据库事务隔离级别
查看>>
如何架设Linux打印服务器
查看>>
嫁接金融业 智能洞察是核心竞争力
查看>>
卸载(Offloading)vs. 加载(Onloading):谁是CPU利用率之王?
查看>>
云适配陈本峰:我为什么发起“中国企业级H5产业联盟”
查看>>
在大数据冲击下的工业质量管理对策
查看>>
《中国人工智能学会通讯》——1.33 基础模型
查看>>
MSSQL 2000 错误823恢复
查看>>
一位美国教授与840个公交扒手奇遇记
查看>>
英特尔杨旭:我们是一家数据公司
查看>>
看浪潮AI服务器NF5288M5如何做到全球密度最高
查看>>