内容纲要
概要描述
本文主要描述 TDS 服务获取组件 jstack 步骤参考。本文以TDS330获取Foundation Connector为例。
详细说明
目的
获取 TDS 组件(以 Foundation Connector 为例)的jstack,该日志可以用于分析程序卡住等问题的根本原因。
查看相关pod
在服务器后台执行
kubectl get po -owide | grep connector
其中connector
替换为需要获取jstack的组件名字,可以模糊查询。
上图的pod名foundation-connector-foundation1-79c4f555d7-s7mmv
即为我们需要查看的pod名字。
进入pod内部
根据上面获取的pod名进入pod内部。
kubectl exec -it foundation-connector-foundation1-79c4f555d7-s7mmv bash
其中foundation-connector-foundation1-79c4f555d7-s7mmv
替换为实际的pod名字。
查看JPS进程
在pod内,执行以下命令获取JPS进程号。
jps
如上图所示,这个组件的JPS进程号是24。
打jstack追加到文件
复现问题,等程序出现卡住情况时,
在pod内部执行以下命令打jstack并写入文件。
jstack 24 >> /tmp/jstack.log
然后等待1分钟,再次执行
jstack 24 >> /tmp/jstack.log
上面的24是上一步获取的JPS进程号,以实际情况为准。
再等待1分钟再次执行,总共打约5次,这样就收集到了几分钟内连续的5个jstack日志。
退出pod并获取文件
首先执行exit
退出pod,回到宿主机。
exit
然后执行以下命令获取pod内的jstack日志文件。
kubectl cp foundation-connector-foundation1-79c4f555d7-s7mmv:/tmp/jstack.log jstack.log
其中foundation-connector-foundation1-79c4f555d7-s7mmv
需要改成一开始获取的pod名。
执行完后,jstack日志文件就被放到了宿主机当前目录下了。