0

0

MarsTalk | Trouble Trouble Shooting

絕刀狂花

絕刀狂花

发布时间:2025-07-18 11:24:15

|

256人浏览过

|

来源于php中文网

原创

大家好,我是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。询问了一下客户使用的版本,果然是比较老的版本。让客户升级到最新版,问题就解决了。

LongCat AI
LongCat AI

美团推出的AI对话问答工具

下载

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

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

相关专题

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

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

326

2023.08.11

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

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

233

2023.10.07

scripterror怎么解决
scripterror怎么解决

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

187

2023.10.18

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

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

288

2023.10.25

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

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

973

2023.11.02

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

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

352

2023.06.29

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

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

2075

2023.08.14

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

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

347

2023.08.31

Java JVM 原理与性能调优实战
Java JVM 原理与性能调优实战

本专题系统讲解 Java 虚拟机(JVM)的核心工作原理与性能调优方法,包括 JVM 内存结构、对象创建与回收流程、垃圾回收器(Serial、CMS、G1、ZGC)对比分析、常见内存泄漏与性能瓶颈排查,以及 JVM 参数调优与监控工具(jstat、jmap、jvisualvm)的实战使用。通过真实案例,帮助学习者掌握 Java 应用在生产环境中的性能分析与优化能力。

19

2026.01.20

热门下载

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

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
PostgreSQL 教程
PostgreSQL 教程

共48课时 | 7.5万人学习

Git 教程
Git 教程

共21课时 | 2.8万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号