当前位置:首页>Linux>[linux 调度器第13讲] 调度延迟与性能指标:系统为什么"慢"但 CPU 使用率不高?

[linux 调度器第13讲] 调度延迟与性能指标:系统为什么"慢"但 CPU 使用率不高?

  • 2026-07-02 16:30:09
[linux 调度器第13讲] 调度延迟与性能指标:系统为什么"慢"但 CPU 使用率不高?

第13篇:调度延迟与性能指标:系统为什么"慢"但 CPU 不高?

Linux 调度子系统技术文档系列 · 第 13 篇

你有没有见过:"CPU 使用率只有 30%,但用户反馈下单接口响应从 200ms 飙到了 3s。" 这不是个例——在性能排查的一线,"系统慢但 CPU 不高"是最令人困惑的现场之一。CPU 明明有空闲,任务为什么在排队?那些消失的时间去了哪里?

答案不在 CPU 使用率里,而在调度器等待队列的缝隙中。本文追踪调度延迟的内核测量路径,揭示从 enqueue 到真正上 CPU 这段时间发生了什么,以及如何用 perf 和 /proc 接口把这些隐藏的延迟抓出来。

一、调度延迟是什么?它由哪些部分组成?

调度延迟的核心定义很朴素:一个任务从就绪(Runnable)到真正获得 CPU 执行的时间差。但它不等同于简单的"排队时间",因为内核中存在多层等待。

调度延迟的组成部分如下:

延迟类型
触发条件
内核测量字段
运行队列等待延迟
任务入队但未被调度器选中
wait_sum
睡眠唤醒延迟
从 sleep 状态唤醒后等待入队
sleep_start
阻塞延迟
等待 IO 解锁后重新就绪
block_start
IO 等待延迟
显式的 iowait 状态
iowait_sum
迁移延迟
跨 CPU 迁移过程中的额外等待
合并到 wait_sum

用一个隐喻来理解:CPU 是一个餐厅的厨师,调度延迟就是"从你拿着菜单站进排队区,到厨师开始炒你的菜"的这段时间。CPU 使用率只告诉你厨师有多忙,却告诉你前面排了多少人、你是什么时候进来的、以及中间有没有被插队。

为什么调度延迟难以直接测量? 因为内核态与用户态之间存在一条不可逾越的边界。调度器在 dequeue_task 和 schedule() 之间完成了所有决策,而这些操作发生在内核上下文中。用户空间看到的只是系统调用的返回时间——这个时间混合了 IO 延迟、锁竞争、上下文切换和调度延迟。要把调度延迟单独剥离出来,必须深入内核的统计路径。

二、核心数据结构:sched_statistics 与 PELT

2.1 sched_statistics:延迟的度量衡

sched_statistics 是调度器为每个调度实体(sched_entity)维护的统计结构。它的核心字段 wait_startwait_sumwait_count 构成了调度延迟的测量三角:

这段代码记录了等待的起点。rq_clock(rq) 是当前运行队列的时钟,prev_wait_start 用于处理任务被多次重新入队的情况——如果之前已经记录过等待起点,新值需要减去旧值,以避免在迁移场景下重复计算。

等待结束的逻辑更为关键。delta 就是从 wait_start 到当前时刻的等待时长。这里有一个精妙的细节:迁移任务的处理——如果任务正在迁移(task_on_rq_migrating),内核不会清零 wait_start,而是保存 delta,这样迁移到新 CPU 后可以继续累加。这是内核保证跨 CPU 延迟统计不丢失的核心机制。

三个核心字段的职责分工:

  • wait_start
    :时间戳,标记等待开始时刻(或迁移过程中的累积值)
  • wait_sum
    :历史等待总时间,除以 wait_count 即平均等待延迟
  • wait_count
    :等待次数,反映任务被反复抢占的频率

2.2 PELT 的 util_avg / load_avg:指数衰减的数学直觉

sched_avg 是 PELT(Per-Entity Load Tracking)的核心结构。它的 util_avg 和 load_avg 字段使用指数衰减算法来更新:

为什么 PELT 用指数衰减而不是简单平均? 简单平均对所有历史采样点一视同仁,这意味着一个任务十秒前的行为和一毫秒前的行为权重相同。但调度器需要的是"此刻的负载画像"——最近的行为更能预测未来。指数衰减通过半衰期机制,让旧数据的贡献随时间自然消退:

PELT 的时间窗口是 32ms 的半衰期。每次更新时,内核计算距离上次更新经过了多少个 32ms 周期,然后对历史值进行等比衰减。这种设计让 util_avg 能快速响应任务的负载变化,同时又不会因为瞬时尖刺而剧烈波动——它本质上是一个低通滤波器

util_avg 和 load_avg 的区别在于:

  • load_avg
     反映任务的权重贡献(用于 CFS 的公平性计算)
  • util_avg
     反映任务的实际 CPU 利用率(用于 CPU 频率调节和 NUMA 负载均衡)

2.3 CONFIG_SCHEDSTATS:开关的代价

stats.h 中的 schedstat_enabled() 是一个 static key:

static_branch_unlikely 是内核的静态分支优化。默认关闭时,所有统计代码编译为零开销的 NOP;开启时,通过运行时补丁动态插入统计逻辑。这就是为什么生产环境默认不打开 schedstat——每次数值更新都需要额外的原子操作和时钟读取,在高调度频率的服务器上可能带来 1-3% 的开销。

开启方式:

当依赖的 tracepoint(如 sched_stat_wait)被激活时,内核会自动强制开启 schedstat,并发出告警提示。

三、关键执行路径:wait_runtime 的测量之旅

调度延迟的测量贯穿 enqueue 和 dequeue 的完整生命周期。让我们追踪一条任务从睡眠唤醒到获得 CPU 的路径。

3.1 Enqueue:等待计时开始

当任务被唤醒并入队,enqueue_task_fair 调 update_stats_enqueue_fair

逻辑分为两步:

  1. se != cfs_rq->curr
    :如果入队的不是当前正在 CPU 上运行的任务,说明它需要等待,于是调用 update_stats_wait_start_fair 记录等待起点
  2. ENQUEUE_WAKEUP
    :如果是唤醒操作,还会调用 update_stats_enqueue_sleeper_fair 记录睡眠/阻塞时长

3.2 Dequeue:等待计时结束

当调度器选中该任务并切换到它时,update_stats_wait_end_fair 被调用:

这里有一个防御性检查:wait_start 为 0 时直接返回。这发生在 schedstat 动态开启的场景——已经排在队列中的任务,其 wait_start 可能是 0,此时无法计算有效的 delta,必须跳过以避免脏数据。

3.3 完整路径图

3.4 sched_info 的辅助统计

sched_info 提供了另一层统计,关注的是"从首次入队到上 CPU"的全局延迟:

与 wait_sum 不同,run_delay 包含了从 enqueue 到 CPU 执行的完整路径时间,且额外维护了 max_run_delay 和 min_run_delay——这对分析延迟抖动(jitter)极为有用。

为什么 wait_sum 与实际用户体验延迟存在差距?wait_sum 只统计了任务在运行队列上"可见"的等待时间。但从用户角度看,延迟还包括:用户态系统调用陷入内核的时间、唤醒信号传递的延迟(ttwu)、甚至 NUMA 跨节点内存访问的额外开销。wait_sum 是调度延迟的下界,实际感知延迟只会更长。

四、用户空间工具:从指标到诊断

内核收集了这么多统计数据,用户空间如何消费?

4.1 perf sched latency

perf sched latency 是分析调度延迟的首选工具。它利用 sched_switch 和 sched_stat_* tracepoint 重建每个任务的等待历史:

输出关键字段解读:

  • Average delay ms
    :该任务所有调度等待事件的平均延迟(即 wait_sum / wait_count
  • Maximum delay ms
    :单次等待的最大值,对应 wait_max
  • Maximum delay at
    :最大延迟发生的时间戳,用于关联其他事件

如果平均延迟超过 1ms,说明该任务存在明显的调度等待问题;如果最大延迟超过 10ms,可能是 CPU 亲和性绑定不当或存在 CPU 饥饿场景。

4.2 pidstat -w:上下文切换视角

  • cswch/s
    (voluntary context switches):自愿切换次数,通常因等待 IO 或锁触发。高频自愿切换说明任务频繁阻塞,此时调度延迟往往不高(因为切换是主动的)。
  • nvcswch/s
    (involuntary context switches):非自愿切换次数,因时间片耗尽或被高优先级任务抢占。这个值高才是调度延迟问题的信号——任务频繁被抢走 CPU,意味着它在运行队列中排队的时间在累积。

关键判断逻辑:如果 nvcswch/s 高但 CPU 使用率不高,说明任务每次获得 CPU 的时间很短就被抢占,大量时间浪费在队列等待上。

4.3 vmstat cs:系统级调度频率

cs(context switches per second)反映系统的整体调度频率。与调度延迟的关系:

  • cs 值异常高
    (如 > 100,000/s):大量短任务频繁切换,每个任务的 wait_sum 可能不大,但累积延迟显著
  • cs 值低但延迟高
    :说明调度器在长任务之间切换,被抢占的任务在队列中等待时间很长——这是"CPU 不高但系统慢"的典型场景

4.4 /proc/sched_debug:调试窗口

关键字段:

  • wait-time
    :对应 wait_sum,累计等待时间(纳秒)
  • sum-exec
    :累计执行时间,与 wait-time 比值可计算 CPU 利用率
  • tree-key
    :虚拟运行时间,决定 CFS 红黑树中的排序

4.5 /proc//sched:单任务视角

这是一个任务维度的全景视图。wait_sum 与 sum_exec_runtime 的比值(3456ms / 4321ms ≈ 80%)告诉我们:这个任务等待的时间比它执行的时间还长!这就是"CPU 不高但系统慢"的量化证据。

五、架构总结:延迟视角下的调度器

回顾本文的核心要点:

  1. 调度延迟的测量依赖于 CONFIG_SCHEDSTATS
    ,默认关闭以避免性能开销。排查性能问题时需要主动开启
  2. wait_start → wait_sum → wait_count 构成了延迟测量的闭环
    ,迁移场景下通过保留 delta 保证跨 CPU 统计的一致性
  3. PELT 的指数衰减设计
    让 util_avg 成为反映任务实时负载的低通滤波器,而非简单的算术平均
  4. wait_sum 是调度延迟的下界
    ,实际用户感知延迟包含更多内核态开销
  5. nvcswch/s 高 + CPU 使用率低 = 典型的调度延迟问题
    ,说明任务被频繁抢占而非主动阻塞

调度延迟本质上是一个排队论问题:CPU 是服务台,就绪队列是等待线,任务在队列中的停留时间取决于到达率和处理率的差值。当到达率接近处理率时,即使 CPU 没有满载,队列长度也会急剧增长——这正是 Little's Law 在操作系统中的体现。

下次遇到"系统慢但 CPU 不高"的场景,不要只盯着 CPU 百分比。打开 /proc//sched,看看 wait_sum 和 sum_exec_runtime 的比值——数字不会说谎。

互动问题:你的生产环境中,平均调度延迟(wait_sum / wait_count)通常在什么范围?在容器场景下,cgroup 的 cpu.cfs_quota_us 设置是否加剧了调度延迟?欢迎在评论区分享你的排查经验。


本系列文章基于 Linux 6.19.13 内核源码
采用 CC BY-NC-SA 4.0 协议,转载请注明出处

最新文章

随机文章

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