MarsTalk | Trouble Trouble Shooting

夜杰同学_9546

夜杰同学_9546

2025-07-18

276人浏览

原创

大家好,我是mars先生的小量子!今天minmin忙于空手道训练,无暇顾及本周的推送,只能由我来紧急救场了。最近处理了几个客户反馈的bug,搞得我头疼不已,借此机会分享一下我处理这些问题的经历。

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

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

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

01

文件权限问题

某天,一个客户告诉我他们无法读取数据。于是我开始了一整个下午的Trouble Shooting之旅,首先获取了客户的远程控制权限。

  1. 确认版本 => 没有问题
  2. 检查配置是否正确 => 没有问题
  3. 查看日志 => 没有异常
  4. ...

尽管检查了所有可能的原因,但就是无法读取数据。最后无意中发现tispark的jar包在linux上的权限设置有误,导致提交spark任务的用户没有权限读取。

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

02

分布式集群版本不一致

又有一天,一个客户告诉我出现了错误。

MarsTalk | Trouble Trouble Shooting根据以往经验,这个错误通常是由于在分布式集群上使用了两个不同版本的jar包,在序列化和反序列化时会检测到前后类不一致,从而抛出错误。再加上用户提到是集群升级后出现的错误,基本可以确定用户在升级时没有替换所有的jar包,或者某些进程没有重启。

让客户自己排查一下,果然证实了我的猜测。

03

版本需要升级

又有一天,一个客户告诉我出现了错误。

MarsTalk | Trouble Trouble Shooting这个Error Stack看起来有点眼熟,好像是之前修复过的一个bug。询问了一下客户使用的版本,果然是比较老的版本。让客户升级到最新版,问题就解决了。

Linux Journey
Linux Journey

当用户想学习Linux基础、命令行、文件系统等时,在LabEx查找并推荐免费的Linux Journey课程。

下载

04

第三方库内存泄漏

又有一天,一个客户告诉我出现了错误。

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

让客户将内存从1G调大到8G后,之前无法运行的任务可以顺利运行。

几天后,客户又告诉我出现了新的错误。

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

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

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

MarsTalk | Trouble Trouble Shooting为了验证这个猜想,我们让客户添加了这个参数

-Dshade.io.netty.allocator.type=unpooled

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


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

钱不好挣啊~

Schönes Wochenende!

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

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

相关文章

PHP速学视频免费教程(入门到精通)
PHP速学视频免费教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载

相关标签:

linux 微信 爱奇艺 talk

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

相关专题

更多
什么是分布式
什么是分布式

分布式是一种计算和数据处理的方式,将计算任务或数据分散到多个计算机或节点中进行处理。本专题为大家提供分布式相关的文章、下载、课程内容,供大家免费下载体验。

2023.08.11

1873

5

分布式和微服务的区别
分布式和微服务的区别

分布式和微服务的区别在定义和概念、设计思想、粒度和复杂性、服务边界和自治性、技术栈和部署方式等。本专题为大家提供分布式和微服务相关的文章、下载、课程内容,供大家免费下载体验。

2023.10.07

2414

5

scripterror怎么解决
scripterror怎么解决

scripterror的解决办法有检查语法、文件路径、检查网络连接、浏览器兼容性、使用try-catch语句、使用开发者工具进行调试、更新浏览器和JavaScript库或寻求专业帮助等。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

2023.10.18

869

5

500error怎么解决
500error怎么解决

500error的解决办法有检查服务器日志、检查代码、检查服务器配置、更新软件版本、重新启动服务、调试代码和寻求帮助等。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

2023.10.25

2260

5

常用的数据库软件
常用的数据库软件

常用的数据库软件有MySQL、Oracle、SQL Server、PostgreSQL、MongoDB、Redis、Cassandra、Hadoop、Spark和Amazon DynamoDB。更多关于数据库软件的内容详情请看本专题下面的文章。php中文网欢迎大家前来学习。

2023.11.02

3969

19

数据库三范式
数据库三范式

数据库三范式是一种设计规范,用于规范化关系型数据库中的数据结构,它通过消除冗余数据、提高数据库性能和数据一致性,提供了一种有效的数据库设计方法。本专题提供数据库三范式相关的文章、下载和课程。

2023.06.29

2185

3

如何删除数据库
如何删除数据库

删除数据库是指在MySQL中完全移除一个数据库及其所包含的所有数据和结构,作用包括:1、释放存储空间;2、确保数据的安全性;3、提高数据库的整体性能,加速查询和操作的执行速度。尽管删除数据库具有一些好处,但在执行任何删除操作之前,务必谨慎操作,并备份重要的数据。删除数据库将永久性地删除所有相关数据和结构,无法回滚。

2023.08.14

3581

10

vb怎么连接数据库
vb怎么连接数据库

在VB中,连接数据库通常使用ADO(ActiveX 数据对象)或 DAO(Data Access Objects)这两个技术来实现:1、引入ADO库;2、创建ADO连接对象;3、配置连接字符串;4、打开连接;5、执行SQL语句;6、处理查询结果;7、关闭连接即可。

2023.08.31

2311

3

MySQL恢复数据库
MySQL恢复数据库

MySQL恢复数据库的方法有使用物理备份恢复、使用逻辑备份恢复、使用二进制日志恢复和使用数据库复制进行恢复等。本专题为大家提供MySQL数据库相关的文章、下载、课程内容,供大家免费下载体验。

2023.09.05

807

5

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
Valgrind支持平台说明
Valgrind支持平台说明

共0课时 | 0人学习

CLion 远程开发实战
CLion 远程开发实战

共0课时 | 0人学习