0
点赞
收藏
分享

微信扫一扫

基于K8S环境采用arthas 调试java 应用异常退出

干自闭 03-17 11:15 阅读 3


1.应用背景 



1.xx公司线上环境gateway-api网关服务, 由于历史原因和业务网关功能 熔断限流没有做好 (导致业务在一段时间出现502问题,导致业务出现影响)

2.环境基础信息+线上现状

1.应用层面
  开发语言: JAVA
  应用框架: SpringMvc

2.系统层面
  k8s: 1.16.10 版本
  

2.线上环境调试难度较 主要以下几点
   1.运行基础镜像采用openJdk 缺少 jstack 和 jamp 日常诊断java 应用命令.
   2.公司安全合规容器内只能使用普通用户,为了降低容器安全风险 也禁止使用linux调试系统命令.(也无法进行安装)
  
故 (业界主流 阿里云开源的 arthas 专业调试java应用问题神器)

3.Arthas 介绍

更多信息可见: https://arthas.aliyun.com/doc/(官网)

Arthas 是一款线上监控诊断产品,通过全局视角实时查看应用 load、内存、gc、线程的状态信息,
并能在不修改应用代码的情况下,对业务问题进行诊断,包括查看方法调用的出入参、异常,监测方法执行耗时,
类加载信息等,大大提升线上问题排查效率.

 

4.k8s 环境准备 Arthas  

4.1 应用程序部署YAML 


#1.应用部署yaml 

apiVersion: apps/v1
kind: Deployment
metadata:
  labels:
    app: java-demo-app
  name: java-demo-app
  namespace: java-demo
spec:
  progressDeadlineSeconds: 600
  replicas: 1
  revisionHistoryLimit: 10
  selector:
    matchLabels:
      app: java-demo-app
  strategy:
    rollingUpdate:
      maxSurge: 25%
      maxUnavailable: 25%
    type: RollingUpdate
  template:
    metadata:
      labels:
        app: java-demo-app
    spec:
      #hostNetwork: true 
      containers:
      - image: breaklinux/demo-java-app:latest
        imagePullPolicy: Always
        name: demo-java-app
        ports:
        - containerPort: 8080
          name: tomcat-port
          protocol: TCP
        - containerPort: 3658
          name: arthas-t-port
          protocol: TCP
        - containerPort: 8563
          name: arthas-port
          protocol: TCP
        resources: {}
        terminationMessagePath: /dev/termination-log
        terminationMessagePolicy: File
      dnsPolicy: ClusterFirst
      restartPolicy: Always
      schedulerName: default-scheduler
      securityContext: {}
      terminationGracePeriodSeconds: 60
      
##服务svc 开放端口      
apiVersion: v1
kind: Service
metadata:
  name: java-demo-app-svc
  namespace: java-demo
spec:
  type: NodePort
  selector:
    app: java-demo-app
  ports:
  - name: demo-app  #应用端口
    port: 8080
    protocol: TCP
    targetPort: 8080
  - name: arthas  #arthas web控制台端口 
    port: 3658
    protocol: TCP
    targetPort: 3658 
  - name: jvm-port #arthas jvm 调试端口
    port: 8563
    protocol: TCP
    targetPort: 8563


举报

相关推荐

0 条评论