# FlexNPU故障处理
#### 故障定位步骤
#### vLLM推理服务响应超时
当vLLM推理服务持续无响应超过3分钟时，服务将进入停滞状态，导致现有推理任务中断，无法继续输出Token。此问题通常由FlexNPU硬件连接状态残留或服务进程阻塞引起。您需要使用root用户权限登录相应的Pod，并按照以下步骤进行处理：
1. 终止vLLM服务进程**。**
2. 执行以下命令，确认是否存在与推理相关的 \`vllm\` 和 \`python\` 进程。
   ```
   ps aux | grep python
   ps aux | grep vllm
   ```
   若存在，请等待3分钟，程序将自动清理，之后重新执行上述命令进行确认。如果无任何输出，则说明当前没有与推理相关的 \`vllm\` 或 \`python\` 进程在运行。
   
3. 手动清理FlexNPU链接状态文件。 vLLM服务依赖于flexnpu模块进行硬件加速，若服务异常退出，可能残留\*_connect、\*_disconnect等状态文件，导致后续启动失败或连接异常。
   1. 查看当前entity_id实例。
      ```
      ls /etc/flexnpu/shm/
      ```
      
   
   2. 进入对应的entity_id目录并清理状态文件。
      ```
      cd /etc/flexnpu/shm/${entity_id}/
      rm -f *_connect
      rm -f *_disconnect
      ```
      ${entity_id}请替换为前一步骤中查看到的entity_id。
      
   
   3. 执行一次**ls**命令确保无残留文件。
    
4. 重新运行vLLM推理服务，此时推理任务恢复正常输出。
#### 手动清理flexnpu-server Pod及节点残留
在使用FlexNPU服务时，如果创建或删除过负载，由于当前资源清理机制问题，部分资源可能存在残留。为避免资源泄漏并确保环境一致性，建议在完成相关操作后，手动检查并清理以下残留资源。
1. 删除所有客户端Pod。
2. 进入flexnpu-server Pod。
   1. 执行以下命令，查找以flexnpu-server开头的Pod。
      ```
      kubectl get pods -A
      ```
      
   
   2. 执行以下命令，进入该Pod。
      ```
      kubectl exec -it ${flexnpu-server} -n kube-system -- bash
      ```
      请将${flexnpu-server}替换为前一步查到的Pod名称。
      
    
3. 手动清理节点上残留的关键目录。
   ```
   rm -rf /etc/supervisor/conf.d/*
   rm -rf /etc/flexnpu/persistent/*
   rm -rf /etc/flexnpu/server/tmp/*
   rm -rf /etc/flexnpu/shm/*
   ```
   清理完成后，可以分别执行以下命令，验证是否清理干净。
   ```
   ls /etc/supervisor/conf.d/
   ls /etc/flexnpu/persistent/
   ls /etc/flexnpu/server/tmp/
   ls /etc/flexnpu/shm/
   ```
   
4. 重启并更新flexnpud服务。 在清理完成后，执行以下命令重启并更新flexnpud服务，使其加载新的配置文件并更新状态。
   ```
   supervisorctl -c /config.conf restart flexnpud
   supervisorctl -c /config.conf update
   ```
   
 
