前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >MarsTalk | Trouble Trouble Shooting

MarsTalk | Trouble Trouble Shooting

作者头像
HelloMin
发布2022-08-11 15:03:48
4490
发布2022-08-11 15:03:48
举报
文章被收录于专栏:Pair ProgrammingPair Programming

写在前面:

好久不见,我是Mars先生小量子!今天MINMIN有空手道训练,来不及写本周的推送了,只能由我救急了~正好最近处理了好几个客户报的bug,搞得我焦头烂额,乘此机会分享一下trouble shooting的经历。

话说之前在爱奇艺上班,也经常处理客户Trouble Shooting的事情,但是之前所谓的客户都是公司内部的同事,需要排查的程序也都部署在公司内部的服务器上,而我们有服务器的root权限,因此Trouble Shooting起来非常方便,首先复现问题非常容易,因为客户出bug的环境就是我们自己的环境,其次各种linux、jvm的调试工具都可以使用。

来到PingCAP之后,现在的客户都是外面公司的开发人员,程序都部署在对方公司的机房,条件好的可以给我们开一个远程界面,可以远程操作,条件不好的连一个Error Stack也不能拷贝出来,只能拍个模模糊糊的照片发给我们,哭~~

本文主要分享一下我在PingCAP的一些Trouble Shooting案例。

01

文件权限问题

有天某个客户跟我说

用tispark无法读取tidb的表,但是能正常读取hive的表

于是开始了我一下午的Trouble Shooting之旅,先要到了客户远程的控制权限

1. 先确定版本 => 没问题

2. 看配置是否正确 => 没问题

3. 看日志 => 没有异常

4. ...

发现都没有问题,但是就是无法读取数据,最后无意中发现tispark的jar包linux权限设置不对,导致提交spark任务的user没有权限读取。

原来客户是手动拷贝tispark的jar包到安装目录,但是拷贝用的linux user不对。

02

分布式集群版本不一致

又有一天某个客户跟我说

升级集群以后,发现下面的错误 local class incompatible

根据以往的经验,这个错一般是由于在分布式集群上使用2个不同版本的jar包,在序列化和反序列化的时候会检测到前后的类不一样,而抛的错。再加上用户说是集群升级以后报的错,基本可以确定用户在升级的时候没有替换所有的jar包,或者某些进程没有重启。

让客户自己排查一下,果然跟我说

有个客户端(Azkaban)没有重启

03

版本需要升级

又有一天某个客户跟我说

select某张特定的表,抛下面的异常,其他表都能正常访问

看这个Error Stack怎么有点眼熟,貌似是之前修过的一个bug,询问了一下客户使用的版本,果然是比较老的版本,让客户升级到最新版,问题就解决了。

04

第三方库内存泄漏

又有一天某个客户跟我说

用TiSpark从TiDB导数据到Hive的时候,报了如下的错 Caused by: shade.io.netty.handler.codec.DecoderException: shade.io.netty.util.internal.OutOfDirectMemoryError

经调查发现是tispark和tikv通讯的时候,使用了GRPC,而GRPC底层是使用netty进行通讯的,这个错误表明上看是由于netty在通讯的时候需要申请native memory,错误是由于native memory不够导致的。

让客户把内存从1G调大到8G后,原先无法跑过的任务可以顺利跑过。

过了几天客户又跟我说

虽然一次导30天的数据没问题,但是一次跑600天的数据,还是会报Netty OOM的错。

我初步怀疑问题的本质原因是netty有内存泄漏,先尝试在本地复现,以失败告终,只能到客户现场把heap dump出来,回来分析。

最后,我发现19个PoolChunk对象,每个16M,总共占了304M左右内存。

PoolChunk对象被PoolThreadCache引用,因此怀疑是Netty的PoolThreadCache机制导致的内存无法释放。

为了验证这个猜想,我们让客户加上了这个参数

代码语言:javascript
复制
-Dshade.io.netty.allocator.type=unpooled

也就是说让Netty禁止使用Memory Pool,发现客户的程序可以正常运行。


大家好,我是训练完之后回家帮Mars调整微信文章格式的HelloMin。看完他的文章,我突然有种老公其实是客服的幻觉?说好的数据库高级工程师呢?微信每次都不回我,原来都在和客户聊天???

钱不好挣啊~

Schönes Wochenende!

我的2019周更计划已完成:39/52

[************......]

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2019-10-12,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Pair Programming 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
数据库
云数据库为企业提供了完善的关系型数据库、非关系型数据库、分析型数据库和数据库生态工具。您可以通过产品选择和组合搭建,轻松实现高可靠、高可用性、高性能等数据库需求。云数据库服务也可大幅减少您的运维工作量,更专注于业务发展,让企业一站式享受数据上云及分布式架构的技术红利!
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档