当前位置: 首页 > article >正文

DASD-4B-Thinking部署教程:Docker镜像内vLLM服务健康检查脚本编写与自动重启

DASD-4B-Thinking部署教程Docker镜像内vLLM服务健康检查脚本编写与自动重启1. 项目背景与需求DASD-4B-Thinking是一个专门针对数学、代码生成和科学推理任务优化的40亿参数语言模型。它通过vLLM框架部署配合chainlit前端提供交互式体验。但在实际使用中vLLM服务可能会因为各种原因出现异常退出影响服务稳定性。本文将手把手教你编写一个实用的健康检查脚本实现vLLM服务的自动监控和重启确保你的DASD-4B-Thinking模型能够7×24小时稳定运行。为什么需要健康检查vLLM服务在长时间运行后可能出现内存泄漏或资源耗尽模型推理过程中可能遇到异常输入导致服务崩溃系统资源波动可能影响服务稳定性手动重启服务既麻烦又容易遗漏2. 环境准备与基础知识在开始编写脚本之前我们先了解一些基础知识。2.1 vLLM服务的基本检查方法vLLM服务通常通过HTTP端口提供API服务我们可以通过简单的curl命令检查服务状态# 检查vLLM服务是否正常运行 curl -X GET http://localhost:8000/health正常运行时应该返回类似这样的响应{status:healthy}2.2 日志文件的位置和查看方法根据提供的部署信息vLLM服务的日志位于/root/workspace/llm.log我们可以通过以下命令实时查看日志tail -f /root/workspace/llm.log3. 健康检查脚本编写现在我们来编写一个完整的健康检查脚本它会定期检查vLLM服务状态并在发现异常时自动重启。3.1 基础版本的健康检查脚本创建一个名为vllm_health_check.sh的文件#!/bin/bash # vLLM健康检查脚本 # 作者基于DASD-4B-Thinking部署需求编写 # 配置参数 VLLM_PORT8000 CHECK_INTERVAL60 # 检查间隔秒 LOG_FILE/root/workspace/llm.log HEALTH_CHECK_URLhttp://localhost:${VLLM_PORT}/health # 日志函数 log() { echo [$(date %Y-%m-%d %H:%M:%S)] $1 /root/workspace/health_check.log } # 检查vLLM服务状态 check_vllm_health() { # 使用curl检查服务健康状态 response$(curl -s -o /dev/null -w %{http_code} -X GET ${HEALTH_CHECK_URL} --connect-timeout 10) if [ $response 200 ]; then # 进一步检查返回内容 content$(curl -s -X GET ${HEALTH_CHECK_URL}) if echo $content | grep -q healthy; then log vLLM服务运行正常 return 0 else log vLLM服务返回异常内容: $content return 1 fi else log vLLM服务健康检查失败HTTP状态码: $response return 1 fi } # 重启vLLM服务 restart_vllm() { log 尝试重启vLLM服务... # 查找并终止现有的vLLM进程 pkill -f vllm sleep 2 # 确保进程已终止 pkill -9 -f vllm 2/dev/null # 这里需要根据你的实际启动命令进行修改 # 示例启动命令请替换为你的实际启动命令 cd /root/workspace nohup python -m vllm.entrypoints.api_server \ --model /path/to/your/model \ --port 8000 \ --tensor-parallel-size 1 \ $LOG_FILE 21 log vLLM服务重启命令已执行 } # 主循环 log vLLM健康检查脚本启动 while true; do if ! check_vllm_health; then log 检测到vLLM服务异常准备重启... restart_vllm # 重启后等待一段时间再检查 sleep 30 fi sleep $CHECK_INTERVAL done3.2 增强版的健康检查脚本基础版本可以工作但我们还可以增加更多功能来提高可靠性#!/bin/bash # 增强版vLLM健康检查脚本 # 配置参数 VLLM_PORT8000 CHECK_INTERVAL60 MAX_RESTART_ATTEMPTS3 RESTART_COOLDOWN300 # 重启冷却时间秒 LOG_FILE/root/workspace/llm.log HEALTH_LOG/root/workspace/health_check.log # 状态变量 restart_attempts0 last_restart_time0 # 日志函数 log() { echo [$(date %Y-%m-%d %H:%M:%S)] $1 $HEALTH_LOG } # 检查系统资源 check_system_resources() { local memory_usage$(free | awk /Mem:/ {printf %.2f, $3/$2 * 100}) local cpu_usage$(top -bn1 | grep Cpu(s) | awk {print $2}) log 系统资源使用 - CPU: ${cpu_usage}%, 内存: ${memory_usage}% # 如果内存使用超过90%记录警告 if (( $(echo $memory_usage 90 | bc -l) )); then log 警告内存使用率过高 ($memory_usage%) fi } # 检查vLLM进程是否存在 check_vllm_process() { if pgrep -f vllm.entrypoints.api_server /dev/null; then return 0 else log vLLM进程不存在 return 1 fi } # 检查服务健康状态 check_vllm_health() { # 首先检查进程是否存在 if ! check_vllm_process; then return 1 fi # 检查HTTP服务 local response$(curl -s -o /dev/null -w %{http_code} -X GET http://localhost:${VLLM_PORT}/health --connect-timeout 10) if [ $response 200 ]; then local content$(curl -s -X GET http://localhost:${VLLM_PORT}/health) if echo $content | grep -q healthy; then log vLLM服务运行正常 restart_attempts0 # 重置重启尝试计数 return 0 else log vLLM服务返回异常内容: $content return 1 fi else log vLLM服务健康检查失败HTTP状态码: $response return 1 fi } # 重启vLLM服务 restart_vllm() { local current_time$(date %s) # 检查冷却时间 if [ $restart_attempts -ge $MAX_RESTART_ATTEMPTS ]; then if [ $((current_time - last_restart_time)) -lt $RESTART_COOLDOWN ]; then log 已达到最大重启尝试次数进入冷却时间 return 1 else restart_attempts0 # 重置计数器 fi fi log 尝试重启vLLM服务 (尝试 $((restart_attempts1))/$MAX_RESTART_ATTEMPTS) # 终止现有进程 pkill -f vllm.entrypoints.api_server sleep 2 pkill -9 -f vllm.entrypoints.api_server 2/dev/null # 根据你的实际部署调整启动命令 # 示例启动命令 - 请替换为你的实际命令 cd /root/workspace nohup python -m vllm.entrypoints.api_server \ --model /path/to/DASD-4B-Thinking \ --port 8000 \ --tensor-parallel-size 1 \ --gpu-memory-utilization 0.8 \ $LOG_FILE 21 last_restart_time$current_time ((restart_attempts)) log vLLM服务重启完成 } # 主函数 main() { log 增强版vLLM健康检查脚本启动 while true; do # 检查系统资源 check_system_resources # 检查vLLM服务状态 if ! check_vllm_health; then log 检测到vLLM服务异常 restart_vllm # 重启后多等待一段时间 sleep 60 else sleep $CHECK_INTERVAL fi done } # 异常处理 trap log 脚本被中断; exit 0 INT TERM trap log 发生错误; exit 1 ERR # 启动主函数 main4. 脚本部署与使用方法4.1 脚本安装和配置创建脚本文件mkdir -p /root/scripts vim /root/scripts/vllm_health_check.sh将上面的增强版脚本内容粘贴进去然后保存退出。修改脚本权限chmod x /root/scripts/vllm_health_check.sh修改启动命令 找到脚本中的重启部分将启动命令替换为你实际使用的vLLM启动命令。你可以在llm.log中找到原始的启动命令。4.2 手动测试脚本首先手动测试脚本是否正常工作# 运行健康检查 /root/scripts/vllm_health_check.sh # 查看健康检查日志 tail -f /root/workspace/health_check.log4.3 配置系统服务推荐为了确保脚本在系统启动时自动运行我们可以创建一个systemd服务创建服务文件vim /etc/systemd/system/vllm-health-check.service添加服务配置[Unit] DescriptionvLLM Health Check Service Afternetwork.target [Service] Typesimple Userroot ExecStart/bin/bash /root/scripts/vllm_health_check.sh Restartalways RestartSec10 [Install] WantedBymulti-user.target启用并启动服务systemctl daemon-reload systemctl enable vllm-health-check.service systemctl start vllm-health-check.service检查服务状态systemctl status vllm-health-check.service journalctl -u vllm-health-check.service -f5. 高级功能与优化建议5.1 添加邮件通知功能当服务多次重启失败时可以添加邮件通知功能# 在脚本中添加邮件通知函数 send_alert() { local subjectvLLM服务异常警报 local bodyDASD-4B-Thinking模型服务在$(date)检测到异常已尝试重启${restart_attempts}次仍未成功。 # 使用mail命令发送邮件需要配置邮件服务 echo $body | mail -s $subject your-emailexample.com # 或者使用curl调用邮件API # curl -X POST -d subject$subjectbody$body https://your-mail-api.com/send } # 在重启函数中调用 if [ $restart_attempts -ge $MAX_RESTART_ATTEMPTS ]; then send_alert fi5.2 日志轮转配置为了避免日志文件过大可以配置logrotate创建logrotate配置vim /etc/logrotate.d/vllm-health-check添加配置内容/root/workspace/health_check.log { daily rotate 7 compress missingok notifempty copytruncate }5.3 性能监控集成你可以将健康检查脚本与Prometheus等监控系统集成# 添加指标输出函数 export_metrics() { local metrics_file/tmp/vllm_metrics.prom cat $metrics_file EOF # HELP vllm_service_healthy vLLM服务健康状态 # TYPE vllm_service_healthy gauge vllm_service_healthy $(check_vllm_health echo 1 || echo 0) # HELP vllm_restart_attempts vLLM服务重启次数 # TYPE vllm_restart_attempts counter vllm_restart_attempts $restart_attempts EOF }6. 常见问题与解决方案6.1 脚本权限问题如果遇到权限错误检查并修复# 检查文件权限 ls -la /root/scripts/vllm_health_check.sh # 修改权限 chmod 755 /root/scripts/vllm_health_check.sh chown root:root /root/scripts/vllm_health_check.sh6.2 服务启动失败排查如果systemd服务启动失败检查日志journalctl -u vllm-health-check.service -e6.3 健康检查误报处理如果健康检查出现误报可以调整检查参数增加--connect-timeout值添加重试机制调整检查频率7. 总结通过本文的教程你已经学会了如何为DASD-4B-Thinking模型的vLLM服务编写一个完整的健康检查脚本。这个脚本能够定期检查vLLM服务状态自动重启异常服务限制重启频率防止过度重启记录详细日志便于排查问题支持系统服务方式运行实践建议首次部署时先手动测试脚本功能根据你的实际环境调整启动命令和参数定期检查健康检查日志优化脚本参数考虑添加监控告警功能及时发现问题现在你的DASD-4B-Thinking模型就有了一个守护卫士能够确保服务持续稳定运行让你可以更专注于模型的应用和优化。获取更多AI镜像想探索更多AI镜像和应用场景访问 CSDN星图镜像广场提供丰富的预置镜像覆盖大模型推理、图像生成、视频生成、模型微调等多个领域支持一键部署。

相关文章:

DASD-4B-Thinking部署教程:Docker镜像内vLLM服务健康检查脚本编写与自动重启

DASD-4B-Thinking部署教程:Docker镜像内vLLM服务健康检查脚本编写与自动重启 1. 项目背景与需求 DASD-4B-Thinking是一个专门针对数学、代码生成和科学推理任务优化的40亿参数语言模型。它通过vLLM框架部署,配合chainlit前端提供交互式体验。但在实际使…...

Pixel Dream Workshop 团队协作:基于 GitHub 管理提示词库与生成资产

Pixel Dream Workshop 团队协作:基于 GitHub 管理提示词库与生成资产 1. 创意协作的痛点与解决方案 在数字创意领域,团队协作往往面临诸多挑战。创意想法难以系统化管理,优秀提示词散落在各个成员手中,生成参数缺乏统一标准&…...

C++ constexpr 在工程中的应用场景

C constexpr 在工程中的应用场景 在现代C开发中,constexpr关键字因其强大的编译时计算能力,逐渐成为提升性能与代码可维护性的利器。它允许开发者在编译期完成复杂的计算和初始化,从而减少运行时开销,同时增强代码的静态安全性。…...

Qwen3-ASR-1.7B与QT集成:开发跨平台语音识别桌面应用

Qwen3-ASR-1.7B与QT集成:开发跨平台语音识别桌面应用 1. 引言 想象一下,你正在开发一个需要语音输入功能的桌面应用。传统的语音识别方案要么需要联网调用云端API,要么识别准确率不够理想。现在,有了Qwen3-ASR-1.7B这个强大的开…...

跨平台文件同步方案:OpenClaw+Qwen3-32B智能归档系统

跨平台文件同步方案:OpenClawQwen3-32B智能归档系统 1. 为什么需要智能文件同步 作为一个长期在多台设备间切换工作的开发者,我深受文件管理混乱的困扰。Mac上的设计稿、Windows里的开发文档、Linux服务器上的日志文件——这些散落在各处的数据就像一座…...

如何在Linux系统上快速配置BepInEx:Unity游戏插件框架的完整指南

如何在Linux系统上快速配置BepInEx:Unity游戏插件框架的完整指南 【免费下载链接】BepInEx Unity / XNA game patcher and plugin framework 项目地址: https://gitcode.com/GitHub_Trending/be/BepInEx BepInEx是一款专业的Unity/XNA游戏补丁和插件框架&…...

EVA-01开发者案例:Qwen2.5-VL-7B集成至MAGI类AI平台实现多源视觉融合

EVA-01开发者案例:Qwen2.5-VL-7B集成至MAGI类AI平台实现多源视觉融合 1. 引言:当视觉AI遇见机甲美学 想象一下,你正在处理一份复杂的市场分析报告,里面混杂着数据图表、产品照片和手写笔记。传统的AI工具要么只能看文字&#xf…...

SmolVLA长序列建模效果剖析:对比LSTM在时序预测任务中的表现

SmolVLA长序列建模效果剖析:对比LSTM在时序预测任务中的表现 最近在时间序列预测这个老生常谈的领域里,总有人问我:现在各种基于Transformer的新模型层出不穷,它们真的比LSTM这种“老将”强很多吗?尤其是在处理长序列…...

终极指南:如何快速配置HsMod插件提升炉石传说游戏体验

终极指南:如何快速配置HsMod插件提升炉石传说游戏体验 【免费下载链接】HsMod Hearthstone Modify Based on BepInEx 项目地址: https://gitcode.com/GitHub_Trending/hs/HsMod HsMod是一个基于BepInEx框架开发的炉石传说游戏插件,专为希望提升游…...

OpenClaw本地知识图谱:GLM-4.7-Flash构建个人关系网络

OpenClaw本地知识图谱:GLM-4.7-Flash构建个人关系网络 1. 为什么需要个人知识图谱 去年整理项目资料时,我发现自己收藏的200多篇技术文章和50多个开源项目早已形成"信息孤岛"。当需要跨领域参考时,只能靠模糊记忆在文件夹里大海捞…...

RVC效果对比实测:原声vs克隆声,你能听出区别吗?

RVC效果对比实测:原声vs克隆声,你能听出区别吗? 1. 引言:AI语音克隆技术的新突破 想象一下,你最喜欢的歌手正在用你的声音唱歌,或者你的播客节目突然有了专业播音员的音色。这不再是科幻场景,…...

**发散创新:基于Go语言的服务网格实践与流量治理实战**在微服务架构日益复杂的今天,**服务网格(Service Mesh)**

发散创新:基于Go语言的服务网格实践与流量治理实战 在微服务架构日益复杂的今天,服务网格(Service Mesh) 已成为云原生生态中不可或缺的一环。它通过将网络通信逻辑从应用代码中剥离出来,实现了对服务间调用的精细化控…...

Go gRPC 双向流通信实例

Go gRPC双向流通信实例解析 在现代分布式系统中,高效的双向通信是核心需求之一。gRPC作为Google开源的高性能RPC框架,支持双向流通信模式,允许客户端和服务端同时发送和接收多条消息。本文将以Go语言为例,介绍gRPC双向流通信的实…...

3个步骤解决老旧系统Python支持难题:Windows 7及以上系统兼容性解决方案

3个步骤解决老旧系统Python支持难题:Windows 7及以上系统兼容性解决方案 【免费下载链接】PythonVista Python 3.9 installers that support Windows 7 SP1 and Windows Server 2008 R2 项目地址: https://gitcode.com/gh_mirrors/py/PythonVista 在企业办公…...

告别网络盲区:手把手教你用Wireshark抓包分析IEEE 1905.1拓扑发现协议

实战解析:用Wireshark透视IEEE 1905.1拓扑发现协议的运行机制 当你面对一个由Wi-Fi、电力线和以太网组成的复杂混合网络时,是否曾好奇这些设备是如何自动发现彼此并构建出完整拓扑图的?这正是IEEE 1905.1拓扑发现协议的魔力所在。不同于枯燥的…...

Qwen3-Reranker-0.6B保姆级教程:requirements.txt依赖版本兼容性避坑指南

Qwen3-Reranker-0.6B保姆级教程:requirements.txt依赖版本兼容性避坑指南 1. 引言:为什么依赖版本如此重要 当你第一次接触Qwen3-Reranker-0.6B这个强大的重排序模型时,可能会觉得安装过程很简单——不就是运行一个pip install命令吗&#…...

YOLOv12模型训练技巧:解决类别不平衡与过拟合问题

YOLOv12模型训练技巧:解决类别不平衡与过拟合问题 训练一个表现优异的YOLOv12模型,就像培养一位顶尖的运动员。光有强大的天赋(模型架构)还不够,科学的训练方法(训练技巧)才是决定最终成绩的关…...

3步轻松让老旧Mac电脑升级最新macOS焕发新生

3步轻松让老旧Mac电脑升级最新macOS焕发新生 【免费下载链接】OpenCore-Legacy-Patcher 体验与之前一样的macOS 项目地址: https://gitcode.com/GitHub_Trending/op/OpenCore-Legacy-Patcher 老旧Mac电脑升级最新macOS不再是难题!OpenCore Legacy Patcher是一…...

Wan2.2-I2V-A14B实战:基于LSTM的时序文本生成动态故事视频

Wan2.2-I2V-A14B实战:基于LSTM的时序文本生成动态故事视频 1. 场景与需求分析 在影视制作和互动叙事领域,如何将文字剧本快速转化为视觉预览一直是个耗时费力的过程。传统方法需要美术团队手工绘制分镜或使用基础动画工具,不仅成本高昂&…...

Z-Image Turbo企业级API:RESTful设计最佳实践

Z-Image Turbo企业级API:RESTful设计最佳实践 为企业级应用打造稳定可靠的图像生成API服务 1. 引言:为什么企业需要专业的API设计 当我们谈论企业级AI应用时,单次演示的成功远远不够。真正的挑战在于如何构建一个能够支撑高并发、保证稳定性…...

Qwen2.5-7B-Instruct入门指南:7B模型对输入token长度的鲁棒性压力测试

Qwen2.5-7B-Instruct入门指南:7B模型对输入token长度的鲁棒性压力测试 1. 项目概述 Qwen2.5-7B-Instruct是阿里通义千问系列的旗舰级大模型,相比1.5B和3B轻量版本,7B参数规模带来了质的飞跃。这个模型在逻辑推理、长文本创作、复杂代码编写…...

从零封装Vue版JSMpeg播放器:支持截图/录制/旋转的直播流组件开发指南

从零封装Vue版JSMpeg播放器:支持截图/录制/旋转的直播流组件开发指南 1. 技术选型与架构设计 在Web端实现低延迟视频直播需要解决三个核心问题:编解码效率、传输协议选择和渲染性能。基于JSMpeg的方案优势在于: 超低延迟(可达50ms…...

Qwen-Image-2512-SDNQ Web服务API集成:Node.js/Java调用生成图片完整示例

Qwen-Image-2512-SDNQ Web服务API集成:Node.js/Java调用生成图片完整示例 1. 服务概述与核心价值 Qwen-Image-2512-SDNQ-uint4-svd-r32 Web服务是一个基于Flask框架构建的图片生成应用,它将先进的AI图片生成模型封装成易于使用的Web接口。这个服务最大…...

DeerFlow自动化测试:基于Postman的API测试集成

DeerFlow自动化测试:基于Postman的API测试集成 1. 为什么需要API自动化测试 在微服务架构中,系统通常由多个独立的服务组成,这些服务通过API进行通信。手动测试这些API不仅耗时耗力,而且容易出错。随着系统规模扩大,…...

FLUX.1-dev零基础入门:5分钟学会用ComfyUI生成高质量AI图片

FLUX.1-dev零基础入门:5分钟学会用ComfyUI生成高质量AI图片 1. 为什么选择FLUX.1-dev FLUX.1-dev是由Black Forest Labs开发的开源AI图像生成模型,以其出色的图像质量和类似照片的真实感而闻名。与其他模型相比,它能够更高效地生成艺术感强…...

Wan2.1-UMT5一键部署教程:基于Python的AI视频生成WebUI快速搭建

Wan2.1-UMT5一键部署教程:基于Python的AI视频生成WebUI快速搭建 你是不是也对那些能根据文字描述生成视频的AI工具感到好奇?想自己动手搭建一个来玩玩,但又担心过程太复杂,被各种环境配置和依赖问题劝退? 别担心&…...

Wan2.1 VAE模型蒸馏与轻量化部署探索

Wan2.1 VAE模型蒸馏与轻量化部署探索 最近在折腾一些生成模型的实际落地,发现一个挺普遍的问题:模型效果是真好,但体积也是真的大,推理起来对硬件的要求不低。特别是想把模型搬到一些资源有限的边缘设备,或者希望降低…...

[技术解析]BetterJoy:Switch手柄电脑适配的原理与实战指南

[技术解析]BetterJoy:Switch手柄电脑适配的原理与实战指南 【免费下载链接】BetterJoy Allows the Nintendo Switch Pro Controller, Joycons and SNES controller to be used with CEMU, Citra, Dolphin, Yuzu and as generic XInput 项目地址: https://gitcode.…...

技术判断力之AI三问

回答老板关于是否投资AI创新项目的三个问题当下AI热度居高不下,企业该如何抉择?是大举投入布局,还是保持观望?我们借以下三个问题来展开思考。一、AI当下处在什么阶段?属于谁的机会?AI技术扩散曲线&#xf…...

技术速递|底层机制:GitHub Agentic Workflows 的安全架构

作者:Landon Cox & Jiaxiao Zhou排版:Alan WangGitHub Agentic Workflows 构建于隔离、受限输出以及全面日志记录之上。了解我们的威胁模型和安全架构如何帮助团队在 GitHub Actions 中安全运行智能体。无论你是开源维护者还是企业团队的一员&#x…...