乐于分享
好东西不私藏

为什么说 AIOps 不是买个工具,而是一套运维体系升级?

为什么说 AIOps 不是买个工具,而是一套运维体系升级?

凌晨 2 点 17 分,手机又又又开始连续震动。

不是一条告警,是一串。

CPU 高、接口超时、Pod 重启、Redis 连接数上涨、网关 5xx、某个订单接口成功率下降、还有几条看起来不太相关的日志关键字告警。

值班群里已经有人开始问:

“谁在看?”

“是不是刚才发布影响的?”

“业务方说下单慢,有人确认一下吗?”

“先回滚还是先扩容?”

说实话,这种场景很多运维、SRE、平台工程师都不陌生。最难受的不是系统真的挂了,而是你不知道它为什么挂。你手里有监控大屏,有日志平台,有链路追踪,有告警群,有发布记录,有 CMDB,也有一堆脚本。但故障发生时,它们经常像几个互相不说话的人,各讲各的。

指标说 CPU 高,日志说连接超时,链路说某个下游慢,发布平台说十分钟前确实发过版,业务方说用户已经投诉了。领导在群里催进度,研发说“我这边代码没问题”,DBA 说“数据库看起来还行”,网络同学说“没有发现明显丢包”。

最后还是值班同学靠经验,把最近的变更、异常曲线、接口调用链、错误日志一条条拼起来。运气好,半小时定位。运气不好,两个小时过去,大家还在群里贴截图。

这也是我后来慢慢理解 AIOps 的起点。

很多人一听 AIOps,就想到“买个智能告警平台”“接个大模型问日志”“搞个自动根因定位”。但一线做过运维的人都知道,工具当然重要,可工具不是魔法。AIOps 真正要解决的,不是把监控页面换个皮,也不是让 AI 替你背锅,而是让运维从“人肉拼图”变成“体系化判断”。

它不是一个工具采购项目,更像一次运维体系升级。

一、以前我们为什么总是在救火?

传统运维不是没有工具。恰恰相反,很多团队工具很多。

监控有 Prometheus、Zabbix、夜莺、Grafana。 日志有 ELK、Loki、ClickHouse。 链路有 SkyWalking、Jaeger、Pinpoint。 发布有 Jenkins、GitLab CI、Argo CD。 配置有 CMDB、Apollo、Nacos。 通知有邮件、短信、电话、企微、钉钉。

看起来很全。

但真正出故障的时候,问题通常不是“没有数据”,而是“数据太散、太吵、太难判断”。

以前我们经常遇到几个典型问题。

1. 告警很多,但真正有用的不多

一个服务抖动,可能带出几十条告警。

应用实例告警、容器告警、节点告警、接口告警、中间件告警、业务指标告警全都来了。值班的人第一反应不是“我知道问题在哪”,而是“先别炸我手机了”。

更麻烦的是,很多告警只是结果,不是原因。

比如接口超时,可能是自身线程池打满,也可能是下游接口慢,也可能是数据库连接池耗尽,也可能是某个新版本引入了慢 SQL。告警只告诉你“它不正常”,但不会告诉你“为什么不正常”。

所以告警越多,人越麻。

2. 排查依赖个人经验,难复用

有经验的老运维看到一组指标,大概能猜出方向。

比如 CPU 高但 QPS 没涨,要看 GC、死循环、日志刷盘。 接口超时但错误率不高,要看连接池、线程池、下游 RT。 发布后 10 分钟出现错误,要先看灰度批次、配置差异、依赖版本。

这些经验很有价值,但问题是它们大多在人的脑子里。

新人值班时,只能翻文档、问前辈、搜历史群聊。遇到复杂故障,还是要把老同学从床上叫起来。久而久之,团队会形成一种隐性风险:系统稳定性靠几个熟人撑着。

这不是体系,是人肉兜底。

3. 数据之间没有关联

监控、日志、链路、发布、工单、资产信息,单独看都有价值,但很多团队没有把它们串起来。

一个服务报错,你需要自己去查:

  • 这个服务部署在哪些节点?
  • 最近有没有发布?
  • 当前版本是什么?
  • 依赖了哪些下游?
  • 错误日志从哪个实例开始出现?
  • 调用链上是哪个环节耗时变长?
  • 有没有类似历史故障?
  • 最后一次处理方案是什么?

这些信息不难,但分散。你得在多个系统之间切来切去。

故障排查最耗时间的,往往不是技术判断,而是信息拼接。

4. 巡检和复盘靠人工,质量不稳定

很多团队都有巡检。早上看看大盘,检查集群状态,扫一下错误日志,看看磁盘、水位、慢查询、消息堆积。

但说实话,只要靠人工,就一定会有漏看。

尤其是系统多、服务多、集群多的时候,巡检最后很容易变成“打开页面看一眼,没红就关”。故障复盘也是一样。写得好的复盘,能沉淀经验;写得差的复盘,只剩一句“加强监控,避免再次发生”。

这种复盘没有办法真正反哺系统。

5. 变更和故障之间缺少自动关联

生产故障里,变更永远是高频原因。

代码发布、配置调整、扩缩容、数据库变更、网络策略变更、证书更新、依赖升级,都可能引发问题。

但很多时候,告警平台不知道发布平台发生了什么,发布平台也不知道业务指标正在异常。结果就是故障来了以后,大家在群里问:

“刚才谁动过?”

这句话听着简单,其实暴露了一个很大的问题:变更信息没有进入故障判断链路。

二、AIOps 的常见误区:很多团队一开始就跑偏了

我见过不少团队做 AIOps,最后效果一般。不是因为方向不对,而是切入方式有问题。

误区一:以为买了平台就叫 AIOps

最常见的情况是,团队采购一个平台,接入一堆指标和日志,然后宣布“我们开始建设 AIOps”。

平台上线那天很热闹,演示也挺漂亮: 告警可以聚合,日志可以搜索,异常可以识别,页面还能生成一些分析结论。

但过几个月再看,很多功能没人用。值班还是看原来的 Grafana,排障还是翻日志,故障群里还是截图满天飞。

为什么?

因为只是把工具摆上去了,没有改变运维流程。

AIOps 平台如果没有进入告警处理流程、发布流程、应急流程、复盘流程,它就只是另一个系统。大家故障时不会主动打开它,因为人的习惯是找最熟悉、最能救命的东西。

工具只有嵌进流程,才会变成能力。

误区二:上来就想自动根因定位

很多老板和管理层最爱听“自动根因定位”。

这个词很好听,但一线同学要冷静一点。

根因定位不是看一条日志就能判断,也不是模型随便给一个结论就能信。它依赖几个前提:

  • 指标采集完整;
  • 服务拓扑准确;
  • 调用链覆盖关键路径;
  • 变更记录可靠;
  • 告警规则质量足够;
  • 历史故障有沉淀;
  • 业务指标和技术指标能关联。

这些基础没有做好,所谓根因定位很容易变成“猜因定位”。

模型说可能是数据库慢,但实际上是发布后线程池配置错了。模型说可能是网络抖动,但实际上是某个下游限流。值班同学如果盲信,反而会被带偏。

AIOps 可以辅助判断,但不能一开始就替代判断。

误区三:只关注算法,不关注数据治理

很多团队一聊 AIOps,就开始讨论模型、算法、向量库、大模型、异常检测、时序预测。

这些当然重要。但一线落地时,最先卡住的往往不是算法,而是数据。

服务命名不统一。 标签不规范。 CMDB 不准。 日志字段乱写。 告警等级随便定。 发布记录缺失。 同一个应用在不同平台叫三个名字。

这种情况下,再好的算法也很难做出稳定结果。

我一直觉得,AIOps 的下限由数据质量决定,上限才由算法能力决定。

数据烂,AI 只能更快地输出一堆看似合理的废话。

误区四:忽视人员协同

AIOps 不是运维一个部门就能闭门做成的。

告警规则需要应用负责人参与。 日志规范需要研发配合。 业务指标需要产品或业务团队定义。 变更信息需要发布平台和研发流程打通。 根因验证需要 SRE、研发、DBA、中间件、网络团队一起闭环。

如果组织协同不到位,最后 AIOps 平台会变成运维自己的“大玩具”。数据接不全,知识沉淀没人维护,故障建议没人认可,自动化动作没人敢放权。

所以很多时候,AIOps 不是技术问题,而是工程化和协同问题。

三、AIOps 到底能解决什么?不能解决什么?

先说能解决的。

AIOps 最适合解决那些“重复、海量、关联复杂、需要快速判断”的运维问题。

比如:

  • 告警太多,帮你聚合和降噪;
  • 指标曲线异常,帮你提前发现趋势;
  • 日志太长,帮你摘要和提取关键错误;
  • 调用链太复杂,帮你关联上下游影响;
  • 故障排查步骤重复,帮你生成排障建议;
  • 故障复盘耗时,帮你自动整理时间线;
  • 巡检靠人工,帮你生成日报和风险提示;
  • 历史故障难查,帮你从知识库里找相似案例;
  • 变更影响难判断,帮你把发布和异常关联起来。

这些场景都很实用。

但它不能解决所有问题。

AIOps 不能替代架构治理。一个系统设计本身就脆,AI 不能让它突然高可用。 AIOps 不能替代容量规划。资源长期打满,不扩容、不优化,AI 只能提醒你要爆了。 AIOps 不能替代发布纪律。没有灰度、没有回滚、没有变更审批,AI 也救不了野路子发布。 AIOps 不能替代团队责任。故障复盘没人认领,改进项没人跟踪,再智能的报告也只是文档。

所以我的观点很简单: AIOps 的价值不是让运维“少干活”,而是让运维少干低价值、重复性、纯体力的信息拼接工作,把精力放到稳定性治理上。

四、从监控到智能决策,运维能力是怎么演进的?

很多团队不是突然跳到 AIOps 的。它通常有一个演进过程。

第一阶段:有监控,知道系统挂了

最早我们做监控,目标很朴素:系统挂了要知道。

机器 CPU、内存、磁盘、端口、进程、URL 探活,能报出来就不错。这个阶段解决的是“看不见”的问题。

但它的问题也明显:告警很粗。系统报红以后,还是要靠人查。

第二阶段:有指标,知道哪里不正常

后来监控开始细化到应用层。

QPS、RT、错误率、连接池、线程池、JVM、GC、缓存命中率、消息堆积、数据库慢查询,都能看到。

这个阶段比基础监控强很多。至少你能知道“哪块不正常”。

但指标多了以后,人又遇到新问题:看不过来。尤其是微服务架构下,一个请求经过十几个服务,任何一个指标异常都可能引起连锁反应。

第三阶段:有关联,知道影响链路

再往后,链路追踪和拓扑开始进入生产体系。

一个接口慢,可以看到它调用了哪些服务,在哪个 Span 上耗时最长。一个服务异常,可以看到上游影响哪些入口,下游依赖哪些组件。

这一步很关键。它让排查从“到处猜”变成“沿着链路看”。

但它依然依赖人去分析。链路很长、日志很多、指标很多的时候,人还是会疲惫。

第四阶段:有智能分析,给出候选原因

AIOps 开始介入以后,系统可以做一些自动判断。

比如某个接口 RT 上涨,它可以同时拉取:

  • 同时间窗口的错误日志;
  • 相关服务的发布记录;
  • 上下游调用耗时;
  • 资源水位变化;
  • 数据库慢查询;
  • 缓存命中率;
  • 历史相似故障。

然后给出几个候选方向:

  • 10 分钟前服务 A 发布新版本,异常从该版本实例开始出现;
  • 调用链显示服务 A 到服务 B 的耗时占比提升明显;
  • 服务 A 错误日志中出现大量连接池超时;
  • 历史故障中有相似模式,处理方式是回滚配置并扩大连接池。

注意,是候选方向,不是最终结论。

真正的生产系统里,AIOps 最靠谱的方式不是“一锤定音”,而是把证据整理好,让人更快判断。

第五阶段:辅助决策和半自动处置

再成熟一点的团队,会把一些低风险动作自动化。

比如:

  • 自动拉取故障现场;
  • 自动生成应急群摘要;
  • 自动创建事件单;
  • 自动通知服务 owner;
  • 自动建议回滚或扩容;
  • 自动执行只读诊断脚本;
  • 对明确场景执行半自动修复。

这里一定要强调:生产自动修复要谨慎。

我不建议一开始就全自动执行“重启、扩容、回滚、切流”这类动作。尤其是金融、电商、制造、政企这类系统,自动动作本身也可能制造事故。

比较稳妥的做法是:先自动分析,再人工确认;先只读诊断,再低风险处置;先非核心系统试点,再扩大范围。

下面这张图可以概括这个演进过程:

五、AIOps 不是一个工具,而是工具、流程、数据、人员一起升级

如果只能用一句话解释 AIOps 的落地逻辑,我会说:

工具负责承载能力,数据负责提供证据,流程负责驱动闭环,人员负责判断和改进。

这四个缺一不可。

1. 工具:不是越多越好,而是要能串起来

很多公司已经有一堆工具,不一定非要推倒重来。

AIOps 平台更像一个“运维智能中枢”,把已有系统的数据串起来,而不是替代所有系统。

常见要接的系统包括:

  • 监控系统:指标、告警、阈值、时间序列;
  • 日志系统:错误日志、异常堆栈、关键字段;
  • 链路追踪:调用拓扑、Span 耗时、上下游关系;
  • CMDB:应用、实例、负责人、环境、依赖关系;
  • 发布系统:版本、时间、发布人、发布批次、回滚记录;
  • 工单系统:故障单、变更单、问题单;
  • 知识库:历史故障、SOP、排障手册、复盘报告;
  • 自动化平台:脚本、任务编排、巡检、处置动作。

这些系统不需要都长在一个平台里,但需要通过统一的事件模型和对象模型关联起来。

否则还是信息孤岛。

2. 数据:标签、时间、拓扑,比模型还重要

做 AIOps,数据治理绕不开。

最基础的是统一对象。

同一个服务,在监控里叫 order-service,在日志里叫 order_srv,在发布平台叫 oms-order,在 CMDB 里叫订单服务。你让系统怎么关联?

所以要先统一几个关键维度:

  • 应用名;
  • 服务名;
  • 实例 ID;
  • 环境;
  • 集群;
  • 机房或可用区;
  • 负责人;
  • 版本号;
  • Trace ID;
  • 变更 ID;
  • 告警事件 ID。

这些字段看起来很普通,但它们是关联分析的地基。

再往上,是统一时间。

故障分析非常依赖时间线。告警几点出现,发布几点开始,错误日志几点暴涨,接口 RT 几点抖动,用户投诉几点进来。只要时间不准,后面的判断就会歪。

我遇到过一个很典型的坑:某个日志系统的时间戳用的是容器本地时间,节点时钟漂移了几分钟。结果故障时间线看起来像“先有错误日志,后有发布”,团队差点误判。后来统一了 NTP 和日志采集时间字段,这类问题才减少。

3. 流程:没有闭环,就没有真正的 AIOps

AIOps 不能只停留在“看板展示”。

它要进入日常流程。

告警来了,平台应该自动聚合、定级、分派、关联上下文。 值班处理时,平台应该提供排障路径、相关证据、历史案例。 故障结束后,平台应该生成时间线、影响范围、处理动作、复盘草稿。 复盘完成后,改进项应该进入工单系统跟踪。 改进项完成后,规则、知识库、自动化脚本应该更新。

这才叫闭环。

否则每次故障都是一次性劳动,没有沉淀。

4. 人员:AI 做辅助,人做责任判断

AIOps 再强,也不能取消人的责任。

生产系统里,很多判断不是纯技术问题,还涉及业务优先级、风险控制、影响面评估和组织协同。

比如要不要回滚? 要不要切流? 要不要限流? 要不要降级? 要不要临时关闭某个功能?

这些不是模型单独能决定的。模型可以告诉你证据和建议,但最终决策应该由值班负责人、服务 owner、业务负责人一起确认。

我比较认可的方式是“人机协同”:

  • AI 负责发现异常、整理证据、给出建议;
  • 运维负责判断风险、推动处置、沉淀机制;
  • 研发负责确认代码和业务逻辑;
  • 平台负责持续优化数据、规则和自动化能力。

下面这张图可以帮助理解 AIOps 体系中的关系:

六、一个更贴近生产的 AIOps 落地拆解

下面不讲大词,按真实落地方式拆。

假设我们有一个订单系统,经常在大促、发布、数据库抖动时出现接口超时。现在团队想做 AIOps,不是为了演示,而是为了缩短故障发现和定位时间。

第一步:先选一个小场景,不要一口吃成胖子

很多团队一上来就说要做“全域智能运维”。这基本不现实。

正确做法是选一个高频、痛点明显、数据相对完整的场景。

比如:

  • 核心接口超时定位;
  • 发布后异常检测;
  • 告警降噪;
  • 日志错误摘要;
  • 数据库慢查询关联;
  • Kubernetes Pod 异常诊断;
  • 消息队列堆积分析;
  • 每日巡检自动报告。

我建议第一期优先选“发布后异常检测 + 告警聚合 + 排障摘要”。

原因很简单:生产故障里,变更相关问题多;这个场景边界清楚;价值容易衡量;也不需要一开始就全自动修复。

试点目标可以定得很具体:

  • 发布后 30 分钟内,自动观察核心指标;
  • 如果错误率、RT、日志错误量异常,自动标记风险;
  • 自动关联发布批次、实例、版本、负责人;
  • 自动生成排查摘要;
  • 值班人员确认后决定回滚、继续观察或转研发。

不要把目标写成“提升智能化水平”。那种目标没人知道怎么算成功。

第二步:把关键数据接进来

这个场景至少需要几类数据。

第一类是应用指标。

核心包括:

  • QPS;
  • P95/P99 RT;
  • 错误率;
  • HTTP 5xx;
  • 业务成功率;
  • JVM 内存和 GC;
  • 线程池活跃数;
  • 连接池使用率;
  • Pod 重启次数;
  • CPU 和内存使用率。

第二类是日志。

日志不是全量丢给模型就完事。要先做结构化。

至少要提取:

  • 时间;
  • 应用名;
  • 实例;
  • 环境;
  • Trace ID;
  • 错误级别;
  • 异常类型;
  • 错误码;
  • 关键异常堆栈;
  • 请求路径;
  • 用户或租户维度,注意脱敏。

第三类是链路。

链路要能看到:

  • 入口接口;
  • 上游调用方;
  • 下游依赖;
  • 每个 Span 的耗时;
  • 错误 Span;
  • 慢调用节点;
  • Trace ID 和日志能否打通。

第四类是发布变更。

至少包括:

  • 应用名;
  • 版本号;
  • 发布开始时间;
  • 发布结束时间;
  • 发布批次;
  • 发布人;
  • 变更单;
  • Git commit;
  • 配置变更;
  • 是否灰度;
  • 是否回滚。

第五类是 CMDB。

别小看 CMDB。它决定了系统能不能找到责任人,能不能知道服务依赖关系。

至少要有:

  • 应用负责人;
  • 业务域;
  • 所属团队;
  • 服务等级;
  • 部署集群;
  • 依赖组件;
  • 上下游关系;
  • 值班组。

这些数据不一定一开始都完美,但核心字段必须先统一。

第三步:定义事件模型,不要让告警各说各话

告警系统最常见的问题是事件不标准。

有的告警叫“接口耗时过高”,有的叫“API latency high”,有的叫“P99 超阈值”。内容都差不多,但平台不知道它们是不是同一类。

所以要设计一个统一事件模型。

可以包含:

  • event_id:事件 ID;
  • event_type:事件类型,比如 latency、error_rate、resource、dependency;
  • severity:严重级别;
  • service:服务名;
  • instance:实例;
  • env:环境;
  • region:区域;
  • metric_name:指标名;
  • current_value:当前值;
  • baseline:基线;
  • start_time:开始时间;
  • related_change:关联变更;
  • related_trace:关联链路;
  • related_logs:关联日志;
  • owner:负责人;
  • status:处理中、已恢复、已关闭。

统一事件模型的价值,是后面可以做聚合、去重、关联和复盘。

否则告警只是告警,无法成为“事件”。

第四步:先做告警聚合和降噪

告警降噪是 AIOps 最容易出价值的场景之一。

比如同一个服务的 20 个 Pod 同时 RT 升高,不应该打 20 通电话。 同一个故障引起上下游多个系统报警,也不应该让每个系统单独拉群。 某个节点挂了,节点上的实例全部告警,应该聚合到节点故障。

聚合逻辑可以从简单规则开始,不一定一开始就上复杂模型。

常见聚合维度:

  • 同服务;
  • 同实例;
  • 同时间窗口;
  • 同拓扑链路;
  • 同发布批次;
  • 同错误码;
  • 同异常类型;
  • 同基础设施节点;
  • 同业务入口。

比如 5 分钟内,order-service 出现接口 RT 上升、错误率上升、日志出现大量 timeout,且都发生在 v2.3.7 版本发布后,就可以聚合为一个“发布后订单服务异常事件”。

降噪不是把告警关掉,而是把噪声变成上下文。

有些团队一做降噪就粗暴屏蔽告警,这很危险。正确方式是保留原始告警,但对值班人员展示聚合后的事件,并提供明细展开。

第五步:做异常检测,不要只靠固定阈值

传统阈值有时候很笨。

比如某个接口白天 QPS 高、晚上 QPS 低。白天 RT 200ms 正常,凌晨 200ms 可能就不正常。某些业务有明显周期性,周一和周末差异很大。

固定阈值容易误报,也容易漏报。

AIOps 可以做基线判断,比如:

  • 同比昨天同时间;
  • 环比前 10 分钟;
  • 同比上周同时间;
  • 根据历史周期生成动态阈值;
  • 对突增、突降、波动、持续偏离做检测。

但这里要注意,异常检测不是越敏感越好。

太敏感会把值班同学折磨疯。太迟钝又失去意义。我的经验是,先按业务等级分层。

核心链路宁可敏感一点。 非核心服务可以宽松一点。 已知发布窗口可以单独设置观察策略。 大促期间要使用单独的基线。

判断标准不要只看单点指标,最好组合判断。

比如“接口异常”可以由三类信号共同触发:

  • RT 连续 3 个周期高于基线 50%;
  • 错误率超过过去 7 天同时间 P95;
  • 日志中 timeout 或 exception 数量明显增加。

多信号组合,比单一阈值靠谱。

第六步:关联发布和变更

这是我认为最值得优先做的能力。

很多故障都和变更有关。不是说所有故障都是发布导致的,但“先看最近变更”一定是高性价比排查路径。

平台可以在异常发生时自动查:

  • 过去 30 分钟有没有发布;
  • 发布的是哪个应用;
  • 哪些实例已升级;
  • 哪些实例还在旧版本;
  • 异常是否只出现在新版本实例;
  • 异常是否从某个发布批次开始;
  • 配置是否有变化;
  • 依赖版本是否变化。

如果发现异常只集中在新版本实例,候选根因就很明确了。

举个例子。

订单服务灰度发布 v2.3.7,先发 10% 实例。发布 8 分钟后,订单创建接口 P99 从 300ms 涨到 2s,错误率从 0.1% 到 3%。AIOps 平台自动对比发现:

  • 新版本实例错误日志出现大量 ConnectionPoolTimeoutException
  • 旧版本实例没有明显异常;
  • 调用链显示订单服务访问库存服务耗时上涨;
  • 发布记录显示本次变更调整了库存客户端连接池参数;
  • 历史故障中有类似案例,原因是连接池配置过小。

这时候平台不需要“神奇地宣布根因”,它只要把这些证据整理出来,值班同学就能很快判断:优先回滚或修复连接池配置。

这就是实际价值。

第七步:日志摘要要做,但不能迷信大模型

日志是故障排查里最让人又爱又恨的东西。

有时候一眼看到关键异常就能定位。 有时候几千万行日志里全是噪声。 还有时候日志写得很随意,错误堆栈长得像小说。

大模型做日志摘要是有帮助的,特别是在以下场景:

  • 提取高频错误;
  • 合并相似堆栈;
  • 找出首次出现时间;
  • 识别错误码变化;
  • 汇总异常样例;
  • 生成排查说明;
  • 解释陌生异常含义。

但必须加边界。

第一,日志要脱敏。用户信息、手机号、身份证、Token、订单敏感字段不能直接丢进去。

第二,不能把全量日志直接喂给模型。成本高、效果差,还可能超上下文。要先聚类、抽样、过滤。

第三,模型输出要带证据。不能只说“可能是数据库问题”,要说明依据是哪类日志、出现频率、时间窗口、关联服务。

第四,日志质量要治理。应用日志如果没有 Trace ID,没有错误码,没有上下文,再好的摘要也只能总结“发生了很多异常”。

我比较推荐的日志处理流程是:

这套流程比“直接问模型这段日志什么意思”靠谱很多。

第八步:根因定位要做成“证据链”,不是一句结论

我不太喜欢平台直接显示“根因:数据库”。

太粗了,也容易误导。

一个好的候选根因输出,应该像排障证据链:

  • 异常现象:订单创建接口 P99 在 02:17 后持续升高;
  • 影响范围:华东一区 30% 流量受影响;
  • 首次异常实例:order-service-7d9f;
  • 关联变更:02:08 发布 v2.3.7,灰度批次 2;
  • 指标证据:新版本实例线程池活跃数打满;
  • 日志证据:出现大量连接池超时异常;
  • 链路证据:访问 inventory-service 耗时占比从 15% 升至 70%;
  • 历史相似案例:2024-11-08 连接池配置过小导致相同异常;
  • 建议动作:暂停发布,回滚灰度批次,检查连接池参数和下游限流。

这才是对值班同学有用的东西。

AIOps 不一定要百分百给出根因,但要把“排查优先级”排出来。生产里节省 15 分钟,有时候就是少掉一大波投诉。

第九步:自动化处置从只读诊断开始

很多团队一提自动化,就想到自动重启、自动扩容、自动回滚。

我建议先别急。

第一阶段做只读诊断:

  • 自动拉取最近发布;
  • 自动查询服务状态;
  • 自动检查 Pod 重启;
  • 自动查询慢 SQL;
  • 自动查看消息堆积;
  • 自动分析错误日志;
  • 自动生成当前影响范围;
  • 自动整理应急群简报。

这些动作风险低,但能节省大量时间。

第二阶段做半自动处置:

  • 建议扩容,但需要人工确认;
  • 建议回滚,但需要服务 owner 确认;
  • 建议切流,但需要值班负责人确认;
  • 建议清理异常节点,但需要二次确认;
  • 建议执行预案脚本,但要记录审批和执行结果。

第三阶段才考虑全自动处置,而且只适合边界清楚、风险低、验证充分的场景。

比如:

  • 临时实例异常自动摘流;
  • 无状态服务单 Pod 异常自动重建;
  • 磁盘日志分区达到阈值自动清理已归档日志;
  • 已知队列消费者挂掉自动拉起;
  • 只影响测试环境或非核心环境的自动修复。

核心交易链路、数据库写操作、批量删除、全局配置变更这类动作,不要轻易全自动。

自动化的目标不是炫技,是可控。

第十步:复盘沉淀要自动化,不然经验留不住

很多团队故障复盘写得痛苦,是因为故障过程中没有记录。

事后大家靠记忆回填:

  • 几点发现的?
  • 谁先处理的?
  • 做了哪些动作?
  • 哪个动作生效了?
  • 影响了多少用户?
  • 根因是什么?
  • 后续怎么改?

时间一久,很多细节就不准了。

AIOps 可以在故障处理中自动记录时间线:

  • 告警触发时间;
  • 事件创建时间;
  • 值班确认时间;
  • 发布关联时间;
  • 关键日志首次出现时间;
  • 处置动作执行时间;
  • 指标恢复时间;
  • 事件关闭时间。

然后生成复盘草稿。

注意,是草稿。最终复盘还是要人确认。因为复盘不只是记录事实,还要分析机制问题。

比如这次故障是连接池配置错误,那更深层问题可能是:

  • 配置变更没有灰度;
  • 压测没有覆盖高并发;
  • 发布后观察指标不完整;
  • 告警没有区分新旧版本实例;
  • 历史故障没有沉淀成规则。

这些改进项,才是稳定性治理的核心。

https://edu.51cto.com/surl=48ryOOK,本期分享就到这里啦~如果觉得内容对你有帮助,记得点个「赞」和「推荐」,也欢迎分享给身边的小伙伴!关注「程序员喵手」,持续分享实用工具、优质资源和技术干货,我们下期见!

基本 文件 流程 错误 SQL 调试
  1. 请求信息 : 2026-08-13 19:06:00 HTTP/1.1 GET : https://www.yeyulingfeng.com/a/929282.html
  2. 运行时间 : 0.206427s [ 吞吐率:4.84req/s ] 内存消耗:4,683.07kb 文件加载:145
  3. 缓存信息 : 0 reads,0 writes
  4. 会话信息 : SESSION_ID=c9edf2c77d4bf902aae36a6a53aefc53
  1. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/public/index.php ( 0.79 KB )
  2. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/autoload.php ( 0.17 KB )
  3. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/composer/autoload_real.php ( 2.49 KB )
  4. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/composer/platform_check.php ( 0.90 KB )
  5. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/composer/ClassLoader.php ( 14.03 KB )
  6. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/composer/autoload_static.php ( 6.05 KB )
  7. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-helper/src/helper.php ( 8.34 KB )
  8. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-validate/src/helper.php ( 2.19 KB )
  9. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/ralouphie/getallheaders/src/getallheaders.php ( 1.60 KB )
  10. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/helper.php ( 1.47 KB )
  11. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/stubs/load_stubs.php ( 0.16 KB )
  12. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Exception.php ( 1.69 KB )
  13. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-container/src/Facade.php ( 2.71 KB )
  14. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/symfony/deprecation-contracts/function.php ( 0.99 KB )
  15. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/symfony/polyfill-mbstring/bootstrap.php ( 8.26 KB )
  16. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/symfony/polyfill-mbstring/bootstrap80.php ( 9.78 KB )
  17. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/symfony/var-dumper/Resources/functions/dump.php ( 1.49 KB )
  18. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-dumper/src/helper.php ( 0.18 KB )
  19. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/symfony/var-dumper/VarDumper.php ( 4.30 KB )
  20. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/guzzlehttp/guzzle/src/functions_include.php ( 0.16 KB )
  21. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/guzzlehttp/guzzle/src/functions.php ( 5.54 KB )
  22. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/App.php ( 15.30 KB )
  23. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-container/src/Container.php ( 15.76 KB )
  24. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/psr/container/src/ContainerInterface.php ( 1.02 KB )
  25. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/app/provider.php ( 0.19 KB )
  26. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Http.php ( 6.04 KB )
  27. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-helper/src/helper/Str.php ( 7.29 KB )
  28. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Env.php ( 4.68 KB )
  29. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/app/common.php ( 0.03 KB )
  30. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/helper.php ( 18.78 KB )
  31. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Config.php ( 5.54 KB )
  32. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/alipay.php ( 3.59 KB )
  33. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/facade/Env.php ( 1.67 KB )
  34. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/app.php ( 0.95 KB )
  35. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/cache.php ( 0.78 KB )
  36. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/console.php ( 0.23 KB )
  37. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/cookie.php ( 0.56 KB )
  38. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/database.php ( 2.48 KB )
  39. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/filesystem.php ( 0.61 KB )
  40. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/lang.php ( 0.91 KB )
  41. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/log.php ( 1.35 KB )
  42. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/middleware.php ( 0.19 KB )
  43. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/route.php ( 1.89 KB )
  44. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/session.php ( 0.57 KB )
  45. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/trace.php ( 0.34 KB )
  46. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/view.php ( 0.82 KB )
  47. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/app/event.php ( 0.25 KB )
  48. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Event.php ( 7.67 KB )
  49. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/app/service.php ( 0.13 KB )
  50. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/app/AppService.php ( 0.26 KB )
  51. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Service.php ( 1.64 KB )
  52. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Lang.php ( 7.35 KB )
  53. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/lang/zh-cn.php ( 13.70 KB )
  54. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/initializer/Error.php ( 3.31 KB )
  55. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/initializer/RegisterService.php ( 1.33 KB )
  56. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/services.php ( 0.14 KB )
  57. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/service/PaginatorService.php ( 1.52 KB )
  58. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/service/ValidateService.php ( 0.99 KB )
  59. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/service/ModelService.php ( 2.04 KB )
  60. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-trace/src/Service.php ( 0.77 KB )
  61. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Middleware.php ( 6.72 KB )
  62. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/initializer/BootService.php ( 0.77 KB )
  63. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/Paginator.php ( 11.86 KB )
  64. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-validate/src/Validate.php ( 63.20 KB )
  65. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/Model.php ( 23.55 KB )
  66. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/model/concern/Attribute.php ( 21.05 KB )
  67. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/model/concern/AutoWriteData.php ( 4.21 KB )
  68. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/model/concern/Conversion.php ( 6.44 KB )
  69. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/model/concern/DbConnect.php ( 5.16 KB )
  70. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/model/concern/ModelEvent.php ( 2.33 KB )
  71. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/model/concern/RelationShip.php ( 28.29 KB )
  72. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-helper/src/contract/Arrayable.php ( 0.09 KB )
  73. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-helper/src/contract/Jsonable.php ( 0.13 KB )
  74. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/model/contract/Modelable.php ( 0.09 KB )
  75. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Db.php ( 2.88 KB )
  76. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/DbManager.php ( 8.52 KB )
  77. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Log.php ( 6.28 KB )
  78. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Manager.php ( 3.92 KB )
  79. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/psr/log/src/LoggerTrait.php ( 2.69 KB )
  80. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/psr/log/src/LoggerInterface.php ( 2.71 KB )
  81. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Cache.php ( 4.92 KB )
  82. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/psr/simple-cache/src/CacheInterface.php ( 4.71 KB )
  83. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-helper/src/helper/Arr.php ( 16.63 KB )
  84. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/cache/driver/File.php ( 7.84 KB )
  85. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/cache/Driver.php ( 9.03 KB )
  86. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/contract/CacheHandlerInterface.php ( 1.99 KB )
  87. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/app/Request.php ( 0.09 KB )
  88. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Request.php ( 55.78 KB )
  89. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/app/middleware.php ( 0.25 KB )
  90. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Pipeline.php ( 2.61 KB )
  91. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-trace/src/TraceDebug.php ( 3.40 KB )
  92. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/middleware/SessionInit.php ( 1.94 KB )
  93. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Session.php ( 1.80 KB )
  94. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/session/driver/File.php ( 6.27 KB )
  95. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/contract/SessionHandlerInterface.php ( 0.87 KB )
  96. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/session/Store.php ( 7.12 KB )
  97. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Route.php ( 23.73 KB )
  98. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/route/RuleName.php ( 5.75 KB )
  99. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/route/Domain.php ( 2.53 KB )
  100. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/route/RuleGroup.php ( 22.43 KB )
  101. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/route/Rule.php ( 26.95 KB )
  102. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/route/RuleItem.php ( 9.78 KB )
  103. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/route/app.php ( 4.22 KB )
  104. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/facade/Route.php ( 4.70 KB )
  105. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/route/dispatch/Controller.php ( 4.74 KB )
  106. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/route/Dispatch.php ( 10.44 KB )
  107. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/app/controller/Index.php ( 9.87 KB )
  108. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/app/BaseController.php ( 2.05 KB )
  109. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/facade/Db.php ( 0.93 KB )
  110. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/connector/Mysql.php ( 5.44 KB )
  111. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/PDOConnection.php ( 52.47 KB )
  112. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/Connection.php ( 8.39 KB )
  113. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/ConnectionInterface.php ( 4.57 KB )
  114. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/builder/Mysql.php ( 16.58 KB )
  115. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/Builder.php ( 24.06 KB )
  116. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/BaseBuilder.php ( 27.50 KB )
  117. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/Query.php ( 15.71 KB )
  118. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/BaseQuery.php ( 45.13 KB )
  119. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/concern/TimeFieldQuery.php ( 7.43 KB )
  120. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/concern/AggregateQuery.php ( 3.26 KB )
  121. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/concern/ModelRelationQuery.php ( 20.07 KB )
  122. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/concern/ParamsBind.php ( 3.66 KB )
  123. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/concern/ResultOperation.php ( 7.01 KB )
  124. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/concern/WhereQuery.php ( 19.37 KB )
  125. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/concern/JoinAndViewQuery.php ( 7.11 KB )
  126. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/concern/TableFieldInfo.php ( 2.63 KB )
  127. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/concern/Transaction.php ( 2.77 KB )
  128. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/log/driver/File.php ( 5.96 KB )
  129. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/contract/LogHandlerInterface.php ( 0.86 KB )
  130. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/log/Channel.php ( 3.89 KB )
  131. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/event/LogRecord.php ( 1.02 KB )
  132. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-helper/src/Collection.php ( 16.47 KB )
  133. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/facade/View.php ( 1.70 KB )
  134. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/View.php ( 4.39 KB )
  135. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/app/controller/Es.php ( 3.11 KB )
  136. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Response.php ( 8.81 KB )
  137. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/response/View.php ( 3.29 KB )
  138. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Cookie.php ( 6.06 KB )
  139. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-view/src/Think.php ( 8.38 KB )
  140. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/contract/TemplateHandlerInterface.php ( 1.60 KB )
  141. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-template/src/Template.php ( 46.61 KB )
  142. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-template/src/template/driver/File.php ( 2.41 KB )
  143. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-template/src/template/contract/DriverInterface.php ( 0.86 KB )
  144. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/runtime/temp/c935550e3e8a3a4c27dd94e439343fdf.php ( 31.50 KB )
  145. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-trace/src/Html.php ( 4.42 KB )
  1. CONNECT:[ UseTime:0.000870s ] mysql:host=127.0.0.1;port=3306;dbname=wenku;charset=utf8mb4
  2. SHOW FULL COLUMNS FROM `fenlei` [ RunTime:0.001663s ]
  3. SELECT * FROM `fenlei` WHERE `fid` = 0 [ RunTime:0.000655s ]
  4. SELECT * FROM `fenlei` WHERE `fid` = 63 [ RunTime:0.000680s ]
  5. SHOW FULL COLUMNS FROM `set` [ RunTime:0.001320s ]
  6. SELECT * FROM `set` [ RunTime:0.000610s ]
  7. SHOW FULL COLUMNS FROM `article` [ RunTime:0.001489s ]
  8. SELECT * FROM `article` WHERE `id` = 929282 LIMIT 1 [ RunTime:0.001157s ]
  9. UPDATE `article` SET `lasttime` = 1786619160 WHERE `id` = 929282 [ RunTime:0.002634s ]
  10. SELECT * FROM `fenlei` WHERE `id` = 64 LIMIT 1 [ RunTime:0.000592s ]
  11. SELECT * FROM `article` WHERE `id` < 929282 ORDER BY `id` DESC LIMIT 1 [ RunTime:0.001128s ]
  12. SELECT * FROM `article` WHERE `id` > 929282 ORDER BY `id` ASC LIMIT 1 [ RunTime:0.001108s ]
  13. SELECT * FROM `article` WHERE `id` < 929282 ORDER BY `id` DESC LIMIT 10 [ RunTime:0.002121s ]
  14. SELECT * FROM `article` WHERE `id` < 929282 ORDER BY `id` DESC LIMIT 10,10 [ RunTime:0.001876s ]
  15. SELECT * FROM `article` WHERE `id` < 929282 ORDER BY `id` DESC LIMIT 20,10 [ RunTime:0.001719s ]
0.210158s