gpt4 book ai didi

java - 在 Docker 容器中运行时,高 I/O Java 进程始终在 JavaThread 中获取信号 11 SIGSEGV

转载 作者:行者123 更新时间:2023-11-30 06:02:39 24 4
gpt4 key购买 nike

有没有人能够使用不同的硬件和不同的 JRE 版本在 JRE 上一致地复制 SIGSEGV?注意(可能是重要注意事项):我在部署在 Kubernetes 上的 Docker 容器中运行该进程。

示例错误:

# A fatal error has been detected by the Java Runtime Environment:
#
# SIGSEGV (0xb) at pc=0x00007fea64dd9d01, pid=21, tid=0x00007fe8dfbfb700
#
# JRE version: Java(TM) SE Runtime Environment (8.0_191-b12) (build 1.8.0_191-b12)
# Java VM: Java HotSpot(TM) 64-Bit Server VM (25.191-b12 mixed mode linux-amd64 compressed oops)
# Problematic frame:
# J 8706 C2 com.fasterxml.jackson.core.json.ReaderBasedJsonParser.nextFieldName()Ljava/lang/String; (493 bytes) @ 0x00007fea64dd9d01 [0x00007fea64dd9b60+0x1a1]

我目前正在管理一个高 I/O 进程,该进程有许多线程执行 I/O 和序列化:下载 CSV 和 JSON、读取 CSV、将 JSON 写入 CSV,以及将 CSV 加载到 MySQL。我在应用程序的运行周期中这样做了数千次。我只使用常用库(Jackson、jOOQ)和“普通”代码:具体来说,我没有编写使用 JNI 的自定义代码。

毫无疑问,JVM 将在每个运行周期中发送 SIGSEGV。 SIGSERV 似乎出现在代码库的各个部分,但从来没有出现在 GC 线程或任何其他众所周知的线程上。 “有问题的框架”始终是编译后的代码。

测试规范:

  • AWS 中的多个不同硬件实例。
  • 使用 Java 8 191 和 181 进行测试。Ubuntu 16.04。
  • 此进程在容器 (Docker) 中运行并部署在 Kubernetes 上。
  • Docker 版本:17.03.2-ce

这是完整的日志: https://gist.github.com/navkast/9c95f56ce818d76276684fa5bb9a6864

最佳答案

来自完整日志:

siginfo: si_signo: 11 (SIGSEGV), si_code: 0 (SI_USER)

这意味着发出了 kill()。这不是 JVM 问题。有什么东西故意杀死了这个过程。可能是因为内存不足。

关于java - 在 Docker 容器中运行时,高 I/O Java 进程始终在 JavaThread 中获取信号 11 SIGSEGV,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54031165/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com