java - 有没有办法连接探查器 OSE JAVA 应用程序 Pod?

标签 java profiling openshift jprofiler

  • 我的 Spring Boot 应用程序存在内存泄漏 它能够在 5 秒的时间内处理 70 个并发请求,并且在我的本地计算机上运行顺利

当我在 OSE 上部署相同的应用程序时,它产生了内存不足问题

我试图将 java 分析工具连接到远程 OPENSHIFT java pod?

是否有任何程序可以收集堆转储或将配置文件工具(jvisualvm)连接到 ose pod?

最佳答案

在内存不足的情况下,可以通过手动方式收集 ThreadDump 和 HeapDump

  1. oc 获取 Pod -> 列出 Pod
  2. oc rsh pod -> 远程 shell 到 pod
  3. “jmap -dump:format=b,file=heap_dump1.hprof 1” -> 运行 JMAP 命令来收集堆转储
  4. “jcmd 1 Thread.print > threaddump.txt” -> 运行 jcmd 来收集线程转储
  5. oc volume dc/yourApp --add --claim-size 512M --mount-path --name downloads -> 创建持久卷

手动连接 Pod 后,在 ose 终端 3 和 4 上显式执行命令 直到应用程序达到 OOM 并且由于持久卷上的转储日志将不会被清除

  • 将 heapDump 文件和 threadDump 文件从 OSE pod 复制到本地文件系统 通过“tar”压缩后
  • OC rsync

    关于java - 有没有办法连接探查器 OSE JAVA 应用程序 Pod?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50492643/

    相关文章:

    Java:使用 If-Else 语句为网格列着色

    python - 如何分析 Python 脚本?

    mysql - 远程连接到 openshift 数据库

    kubernetes - 如何在Openshift模板中命令对象的创建

    openshift - 添加Openshift内部结构节点的目的

    java - System.getenv 仍然会在 MacOS Mojave 上获取已删除的 env 变量值 - Java

    Java for循环创建n个对象

    java - 如何增加线程超时以允许长时间运行的线程在 z/os 的 websphere 上完成而不会异常结束

    c++ - 为什么函数调用比根据 gprof 执行的代码花费的时间长得多?

    c++ - 使用 GCC : Get Call Count of Functions in a Shared Library 进行分析