BLCL的博客小馆

归档 · 全部

首页

关于

归档

MCP protocolModel Context ProtocolStreamable HTTPLegacy SSEcurl JSON-RPCMCP session idMCP inspectorHTTP transport layerdeveloper troubleshootingAPI testingbackend integration

MCP 协议传输层解析与 `curl` 调试

总结一篇关于 Model Context Protocol (MCP) 传输层机制、协议演进及 curl 联调排错。 一、 关于MCP传输层Streamable HTTP 在 MCP 协议中,客户端与服务器的通信高度依赖底层传输协议。去年2025版本的协议标准从旧版的 Legacy SSE 演进为现代的 Streamable HTTP。 1. Legacy SSE (HTTP + SSE 双端点模式) 架构特征:采用双端点设计。客户端首先通过 GET /sse 建立长连接,用于单向接收服务器推送的事件;服务器在初始连接事件中动态返回一个专用的消息接收地址(通常形如 /messages?sessionId=uuid)。 状态管理:会话标识(Session ID)紧密绑定在 URL 查询参数(Query Para..

更多
MySQL性能调优Threads_running监控云服务器防回收MySQL提升CPU使用率MySQL压测脚本BENCHMARK函数Linux系统负载优化FinOps资源回收MySQL负载监控Python数据库压测

记录防止Mysql日常CPU负载过低导致机器被回收

内部 IT 部门都部署了资源空闲回收机制。当检测到实例的 CPU 利用率长期低于预警线(如 5%~10%)时,该实例就会被标记为低效资源,面临强行降配甚至直接回收的风险。 为了防止资源被回收,针对“MySQL 数据库 CPU 负载过低”的排查与反对策,从负载指标评估到自动化脚本实现,我梳理出一条安全、可控的“拉负载”解决路径。 使用CPU 压测工具: stress 遇到 CPU 负载过低时,最直接的反应是在操作系统层面挂载压测工具: stress / stress-ng:直接榨干物理 CPU 核心。 yes > /dev/null &:通过死循环迅速打满逻辑内核。 但在数据库场景下,这种“粗暴”的做法存在明显缺陷。在 Linux 层面直接挂载 CPU 压测,会导致 CPU 资源被外部进程抢占..

更多
SambaSMB协议DENY_ALLWindows网络映射vfs_fruitveto_filessmbstatus网络驱动器报错文件锁冲突Samba配置优化Linux运维文件归档服务器0x80070020STATUS_SHARING_VIOLATION

排查Windows 挂载 Samba 报“文件被另一进程使用”与 DENY_ALL 死锁根源解析

给团队搭建了一个Samba服务器,结果遇到问题了。 Windows/macOS 混合客户端环境下:Windows 映射网络驱动器时提示 “进程无法访问文件,因为另一个程序正在使用此文件”;进入服务器查看 smbstatus,发现共享根目录下存在 DENY_ALL 独占锁。 更迷惑的是,静置一段时间后,即使服务器上的 DENY_ALL 状态并未消失,Windows 却又能够正常访问了。本文将从 SMB 协议底层机制、VFS 模块冲突及配置优化三个维度,完整还原该问题的排查逻辑与终极解决方案。 一、 故障现象与环境抓取 1. 客户端表现 Windows 客户端: 首次映射驱动器或双击打开共享路径时,弹窗报错 0x80070020 或提示“被另外一个进程使用”。 恢复特征: 维持连接不动,等待 1~3 分钟后再次..

更多
MySQL 大表查询内存溢出Python 生成器 yield 内存泄漏ThreadPoolExecutor 任务队列积压SSCursor 流式游标使用数据库结果集客户端缓存Python 信号量限流控制并发线程池无界队列内存爆炸生产者消费者背压实现MySQL 百万级数据批量处理优化Python 多线程数据迁移内存优化ThreadPoolExecutor shutdown 死锁问题数据库连接池与游标类型选择

Python脚本使用yield与线程池处理MySQL300万行数据查询内存飙升优化

前段时间处理一个数据批量更新任务,需要从 MySQL 表中读取大约 300 万条记录,经过一系列逻辑处理(调用外部 API 更新标签)后写回。为了控制资源,我使用了 ThreadPoolExecutor 配合生成器逐条产出数据,期望做到“边读边处理”,避免一次性加载全部结果集。 然而上线后观察监控,发现 Python 进程的内存占用随着迭代不断攀升,最终几乎吃满机器内存,导致 OOM 风险。最初直觉是 yield 没有真正实现流式,或者数据库驱动缓存了全部结果,但深入排查后发现事情没那么简单。 初始代码结构 简化后的核心代码如下: from mysql.connector.pooling import MySQLConnectionPool dbpool = MySQLConnectionPool() def..

更多
Elasticsearch 评分机制Elasticsearch 排序term terms 评分差异bool 查询filter shouldsort _scorefunction_score 时间衰减BM25 评分Elasticsearch 性能优化相关性排序混合排序搜索结果排序Elasticsearch 踩坑二级排序minimum_should_matchtrack_scoresrewrite scoring_boolean精确匹配 评分全文检索 排序ES 查询 DSL 实战

Elasticsearch排序与评分机制记录:关于term和terms权重与filter和should

最近在优化一个全文检索业务时,遇到了一个典型的排序场景:用户要求搜索结果首先按相关性排序,相关性相同时按创建时间倒序。听起来很简单对吧?但当我真正上手写 DSL 时,才发现 must、filter、should 以及 sort 之间的微妙关系远比想象中复杂。 研究发现了 term 查询在 must 与 filter 中的评分差异、terms 为何默认得分恒定、以及如何利用 bool + should + sort 实现“硬过滤 + 软评分”的混合排序。 问题背景 业务场景是文章搜索,核心需求如下: 硬性筛选:只返回状态为 published、且创建时间在某个时间点之后的文章。 相关性排序:根据用户输入的关键词(如标签、作者)计算匹配度,分数越高越靠前。 时间兜底:当两篇文章的相关性分数完全一致时,最新的文章排..

更多
sentence-transformers Docker 镜像优化Docker 镜像体积过大 解决方案Python Docker 瘦身 实战sentence-transformers 部署 容器化PyTorch CPU 版 Docker 安装Docker 多阶段构建 PythonEmbedding 模型 容器 部署 优化Dockerfile 最佳实践 2026sentence-transformers 镜像 8GB 缩减RAG 项目 Docker 部署 优化

Sentence-Transformers Docker 镜像从 8GB 到 2GB 的优化实录

问题背景 最近在做一个 RAG 相关的项目,需要把基于 sentence-transformers 的 embedding 服务打包成 Docker 镜像部署。项目本身不算复杂,依赖也就那么几个,结果 docker build 跑完之后一看——8GB。 镜像推送到私有仓库要等半天,开发机拉取一次占掉小半个硬盘。更麻烦的是,每次改一行代码重新构建,整个流程又来一遍。 问题定位 先看 Dockerfile,写得很“标准”: FROM python:3.11 COPY requirements.txt . RUN pip install -r requirements.txt COPY . . CMD ["python", "app.py"] requirements.txt..

更多
MySQL升级MySQL 8.0.28MySQL 8.4.7ERROR 1524mysql_native_passwordcaching_sha2_passwordMySQL LTS数据库升级MySQL兼容性utf8mb4AUTO_INCREMENT外键约束sql_modeMySQL升级检查器DBA运维MySQL版本迁移

MySQL 8.0.28 到 8.4.7 升级问题排查记录

最近把一个项目的 MySQL 从 8.0.28 升级到了 8.4.7。表面上看是跨了一个小版本号,但 8.4 是 MySQL 首个正式的 LTS(长期支持)版本,和 8.0 之间存在着不少 breaking changes。8.0 的常规支持已经在 2026 年 4 月结束,继续停留在 8.0 意味着后续安全更新和 bug 修复会越来越少。升级势在必行,但过程并不像想象中那么平滑。 这篇文章把整个升级过程中遇到的问题和排查思路记录下来,给同样在做这个升级的同行一个参考。 升级前的准备 正式动手之前,官方文档明确建议先用 MySQL Shell 的升级检查器跑一遍兼容性评估: util.checkForServerUpgrade('root@localhost:3306', {targetVe..

更多
MathJaxMathMLmunderstretchyaccentKatexMathJax MathML 下划线过短MathML munder 下划线不拉伸U+2015 stretchy 属性― 下划线太短MathJax 导出 MathML 显示异常MathML accent true 拉伸失效underline MathML 渲染问题MathJax 填空线下划线长度不对MathML 运算符字典 stretchyMathJax 原生 MathML 兼容性

MathJax导出MathML下划线过短问题排查与修复方案

最近在处理公式跨系统迁移需求时,遇到一个 MathJax 导出 MathML 的典型兼容性问题:LaTeX 中下划线公式在 MathJax 渲染SVG显示正常,但导出 MathML 交给浏览器原生或第三方引擎渲染后,下划线长度严重缩短,完全达不到预期宽度。这里完整记录排查过程最终选择的方案。 问题复现 原始 LaTeX 公式为一段带长度的填空下划线,写法如下: \underline{\hspace{2em}} cm 通过 MathJax v3 序列化导出后,得到的 MathML 代码为: <math xmlns="http://www.w3.org/1998/Math/MathML" display="block"> <munder> ..

更多
pandocwpsoffice wordjavaOOXMLMathJaxMathMLdocxDejaVuMathTeXGyreCambria Mathlatex

基于 Java 内存流的 Pandoc 转 Word 公式乱码精准修复方案

最近在使用 Pandoc 将包含复杂数学公式(如 MathJax 或 MathML)的 HTML 转换为 .docx 格式时,生成的文档在 Microsoft Word 中通常能够正常显示,但在 WPS Office 中打开时,公式出现字体正体斜体错误。 问题排查到是pandoc和office都是默认使用Cambria Math作为公式字体,能准确处理数学中的斜体和正体。但是wps中默认不包含这个字体,所以没法正常渲染。wps默认使用DejaVuMathTeXGyre作为公式字体,却没有被包含在pandoc和word中。所以pandoc转化的docx文件要额外处理字体问题。 第一点, Cambria Math字体不在wps,也默认不在系统里,pandoc的docx模板需要自带包含字体,这个问题不大。 第二点,生..

更多
DockerContainerd磁盘空间docker-root运维迁移

关于Docker 29之后的镜像存储配置的变更

上周五晚上我正在撸代码,突然收到疯狂报警,服务器 / 分区使用率 92%!”。 登录服务器一看,根目录确实快满了,但 /data(挂载在 vdb 上)还有大把空闲。但是我早就把 Docker 的 data-root 迁到 vdb 上了,怎么系统盘还是被撑爆了? df -h 看了一眼,overlay 挂载点确实显示在 vdb 上,空间还很充裕。但 du -sh / 一查,根目录下 /var/lib/containerd 赫然占了 24GB! overlay挂载目录和实际存储目录不在同一个地方,这什么情况,之前的服务器都没有出现过这个情况。 一、问题检查 # 明明设了 data-root 到 /data/docker $ docker info | grep "Docker Root Dir"..

更多
12