掘金 后端 ( ) • 2024-04-20 18:09

以下来自本人拉的一个关于 Java 技术的讨论群。关注公众号:hashcon,私信进群拉你

GraalVM Native Image 的进程能否被 jps 看到?

感谢 dreamlike_ocean ( https://space.bilibili.com/8227104 )指正

如果编译参数里面开启了 jstat,jmx 等特性(--enable-monitoring=jmxserver,jmxclient,jvmstat),就能看到,没有开启就看不到。

当前对于 GraalVM 与 JVM 的使用

  1. 针对 Lambda 类型任务(例如不频繁的但是处理数据比较多的定时任务,如每周报表,以及临时的数据导出任务),使用 GraalVM Native Image
    1. 这种任务不适合放在常驻的微服务,浪费资源:
      1. 微服务要按照这个定时任务的标准设计内存和 CPU,很长时间是不用这么多的。
      2. 要节约,并且放在常驻的微服务,需要定时任务启动前,以更高的内存和 CPU 重启微服务,定时任务结束后回复原来的参数重启微服务。
    2. 适合放在 k8s cronjob 或者 AWS Lambda 这种服务,但是这些服务都对启动时间有很高有求,需要在一定时间内启动好并告诉容器就绪了。
    3. 这种的适合 GraalVM Native Image,一是对启动时间有要求,二是一般依赖的库比常驻微服务简单很多,改造起来简单很多。
  2. 针对常驻的微服务,还是使用 JVM
    1. 针对涉及很多存储 io 连接的微服务,先不要使用 CRaC 机制,先只使用 CDS 加速类加载,然后可以考虑用 Graal JIT 替代 C2 编译器
    2. 针对没有很多存储 io 连接的微服务,使用 CRaC,例如 web 引擎微服务,网关微服务,广告微服务(大部分访问在本地缓存),这些正好是对于流量更敏感的微服务,需要在流量到来时,快速扩容并启动。

个人简介:个人业余研究了 AI LLM 微调与 RAG,目前成果是微调了三个模型:

  1. 一个模型是基于 whisper 模型的微调,使用我原来做的精翻的视频按照语句段落切分的片段,并尝试按照方言类别,以及技术类别分别尝试微调的成果。用于视频字幕识别。
  2. 一个模型是基于 Mistral Large 的模型的微调,识别提取视频课件的片段,辅以实际的课件文字进行识别微调。用于识别课件的片段。
  3. 最后一个模型是基于 Claude 3 的模型微调,使用我之前制作的翻译字幕,与 AWS、Go 社区、CNCF 生态里面的官方英文文档以及中文文档作为语料,按照内容段交叉拆分,进行微调,用于字幕翻译。

目前,准确率已经非常高了。大家如果有想要我制作的视频,欢迎关注留言。

本人也是开源代码爱好者,贡献过很多项目的源码(Mycat 和 Java JFRUnit 的核心贡献者,贡献过 OpenJDK,Spring,Spring Cloud,Apache Bookkeeper,Apache RocketMQ,Ribbon,Lettuce、 SocketIO、Langchain4j 等项目 ),同时也是深度技术迷,编写过很多硬核的原理分析系列(JVM)。本人也有一个 Java 技术交流群,感兴趣的欢迎关注。

另外,一如即往的是,全网的所有收益,都会捐赠给希望工程,坚持靠爱与兴趣发电。