程序运行卡住排查

背景

在写spring ai的时候添加了一些依赖后程序在这卡住了,没有任何报错

bash 复制代码
2026-03-27 10:00:12.502 [main] DEBUG ai.djl.huggingface.tokenizers.jni.LibUtils - Using cache dir: /Users/xuejinhu/.djl.ai/tokenizers/0.21.0-0.32.0-cpu-osx-aarch64
2026-03-27 10:00:12.502 [main] DEBUG ai.djl.huggingface.tokenizers.jni.LibUtils - Loading huggingface library from: /Users/xuejinhu/.djl.ai/tokenizers/0.21.0-0.32.0-cpu-osx-aarch64
2026-03-27 10:00:12.503 [main] DEBUG ai.djl.huggingface.tokenizers.jni.LibUtils - Loading native library: /Users/xuejinhu/.djl.ai/tokenizers/0.21.0-0.32.0-cpu-osx-aarch64/libtokenizers.dylib
2026-03-27 10:00:13.577 [main] INFO  o.s.ai.transformers.ResourceCacheService - The class path resource [onnx-output-folder/model.onnx] resource with URI schema [file] is excluded from caching
2026-03-27 10:00:14.015 [main] INFO  o.s.ai.transformers.TransformersEmbeddingModel - Model input names: input_ids, attention_mask
2026-03-27 10:00:14.015 [main] INFO  o.s.ai.transformers.TransformersEmbeddingModel - Model output names: token_embeddings, sentence_embedding

排查

  • 第一步:是问AI得到 jcmd 73805 Thread.print 看了线程栈,main 线程停在
    io.qdrant.client.grpc.QdrantGrpcClient$Builder.checkVersionsCompatibility()

  • 第二步:从运行改为debug,搜索代码找到QdrantGrpcClient,发现这里报错了,是qdrant版本不对

    java 复制代码
    private void checkVersionsCompatibility(String clientVersion) {
       try {
         String serverVersion =
             QdrantGrpc.newBlockingStub(this.channel)
                 .healthCheck(QdrantOuterClass.HealthCheckRequest.getDefaultInstance())
                 .getVersion();
         if (!VersionsCompatibilityChecker.isCompatible(clientVersion, serverVersion)) {
           String logMessage =
               "Qdrant client version "
                   + clientVersion
                   + " is incompatible with server version "
                   + serverVersion
                   + ". Major versions should match and minor version difference must not exceed 1. "
                   + "Set checkCompatibility=false to skip version check.";
           logger.warn(logMessage);
         }
       } catch (Exception e) {
         logger.warn(
             "Failed to obtain server version. Unable to check client-server compatibility. Set checkCompatibility=false to skip version check.");
       }
     }
  • 第三步:修改版本成功运行

复盘

1.程序卡住用debug模式能看到WARN,在运行模式下可能看不到报错日志

2.利用jcmd命令找到线程栈,明确卡在哪里,一开始问AI一直以为是TransformersEmbeddingModel的问题,看了才发现是VectorStore的问题

相关推荐
keyipatience18 分钟前
线程栈与TLS和线程互斥
java·linux·服务器·开发语言·ubuntu
weixin_4080996743 分钟前
2026 图片去水印 API 接口完全指南:一键去除图片水印(附 Python/Java/PHP/C# 示例)
java·python·php·图片处理·api调用·图片去水印·石榴智能
钱六两1 小时前
#3、SpringAI 接入deepSeek大模型(喂饭版)
java·spring boot·ai编程
null_172 小时前
IntelliJ IDEA 极致流畅配置方案:Ultra 9 285K + 64GB 内存实测
java·ide·intellij-idea
Herbert_hwt2 小时前
建立Java程序开发
java·开发语言
好好沉淀3 小时前
@ExcelIgnoreUnannotated 和 @AutoMapper 详解
java
愚公移码3 小时前
蓝凌EKP18产品:流程虚拟机(PVM)
java·开发语言·前端
驰骋工作流3 小时前
流程引擎BPM设计之:流程消息
java·工作流引擎·bpm·jflow·ccflow
dogstarhuang3 小时前
从 0 到 1 搭建可收费的 API 开放平台(实战)
java·架构·api
码上解惑4 小时前
从模型接入到应用运行:智能体开发平台的整体架构设计
人工智能·agent·智能体·spring ai