程序运行卡住排查

背景

在写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的问题

相关推荐
·薯条大王2 小时前
经济实惠玩云服务器|一台云服务器多人共用,子账号配置教程
java·linux·运维·服务器·汇编·c++·python
ZJH__GO5 小时前
网络编程v4pro--实现聊天室文件传输功能
java·服务器·网络·计算机网络
程序员黑豆5 小时前
Windows 系统 Java 环境变量配置全攻略:解决“不是内部或外部命令”
java·前端·ai编程
命运之光5 小时前
【C语言完整代码】就诊信息管理系统
java·c语言·开发语言
凤山老林5 小时前
Spring Boot @Async 线上实战:从默认配置到生产级线程池治理
java·spring boot·后端
marvelyu6 小时前
每天10分钟学会OceanBase系列(Day 20):跨机房容灾实战——构建多数据中心高可用架构
java·大数据·数据库
AI人工智能+电脑小能手7 小时前
大白话说Java设计模式-04-工厂方法模式(业务实战篇)
java·设计模式·工厂方法模式·架构设计·代码解耦
BUG指挥官7 小时前
Sa-Token和Spring Security对比
java·后端·spring
小当家.1058 小时前
深入理解 ReAct Agent:从原理到 Java 实战
java·react.js·agent·react·架构设计·agent设计
geminigoth8 小时前
Spring AI Alibaba 入门开发一(备份)
java·人工智能·spring