当前位置:首页>Linux>kswapd 工作原理:Linux 后台内存回收线程解析

kswapd 工作原理:Linux 后台内存回收线程解析

  • 2026-06-26 22:45:45
kswapd 工作原理:Linux 后台内存回收线程解析
先看一个框架图,有疑问我们一起在评论区讨论

第 1 章:kswapd 的作用

1.1 背景

    Linux 内存管理设计中,物理内存由页(page)为单位管理。系统运行过程中,应用程序会不断申请内存,导致可用的页会逐渐的减少。当可用页不足时,如果没有回收机制,内存分配将失败,可能触发 OOM(Out Of Memory)杀手,这也是我们设备常遇到的问题,我经常遇到,不知道朋友们有遇到过没有。

    kswapd 是为了解决这种长期后台内存压力问题。它是内核在每个内存节点(NUMA Node)中启动的低优先级守护线程,主要负责扫描内存页,回收不活跃页以维持系统稳定性。kswapd 背后的理念是“预防式回收”:当内存压力尚未达到紧急状态时,通过后台回收释放页,保证应用程序在分配内存时不用等待。

    kswapd 的工作涉及 LRU 链表管理、脏页写回、Page Cache 回收和匿名页回收。内核将内存页分为 Active/Inactive 链表,通过 kswapd 定期扫描 Inactive 链表,将冷页回收或写回磁盘;同时结合 direct reclaim 机制处理急需内存分配的场景。kswapd 与页面回收机制紧密结合,是 Linux 内存管理的核心守护线程之一。


1.2 kswapd 与直接回收(Direct Reclaim)关系

    Linux 内核存在两种主要回收策略:后台回收(kswapd)和直接回收(direct reclaim)。后台回收由 kswapd 触发,低优先级运行,周期性扫描内存并回收冷页;直接回收由触发内存分配失败的进程主动执行,优先级高,保证分配请求能够及时满足。

    这两种机制形成互补:kswapd 预回收,避免内存耗尽;direct reclaim 补救,保证紧急分配。内核通过 mm_flags 和 vm_pressure 指标监控内存压力,并根据压力等级决定回收策略。结合 LRU 链表管理,kswapd 能够在后台平滑释放 Page Cache、匿名页和 slab 缓存,实现内存可用性与 I/O 性能的平衡。

kswapd 工作流程:

┌─────────────┐│ 内存压力监控 │└───────┬─────┘        │        ▼┌─────────────┐│ 启动 kswapd  │└───────┬─────┘        │ 扫描节点 LRU 链表        ▼┌─────────────┐│ 回收冷页/脏页│└───────┬─────┘        │ 写回磁盘/释放内存        ▼┌─────────────┐│ 可用内存增加 │└─────────────┘
第 2 章:内存压力指标与 kswapd 启动条件

2.1 内存压力检测机制

Linux 内核通过多个指标检测内存压力。核心指标包括:

  1. free pages:系统当前可用页数量。

  2. watermark(水位):内核为不同优先级内存分配设定的阈值,分为 minlowhigh 三档,这个在/proc下可以查看的。

  3. vm_pressure:根据内存消耗速率和剩余页数量动态计算压力等级。

kswapd 启动条件通常为可用内存低于 low watermark,但高于 min,此时无需阻塞应用程序,可以安全后台回收。若内存低于 min,则触发 direct reclaim,由申请内存的进程主动回收页。

    这种多层次压力检测实现了内存管理的柔性调度:后台守护线程预防内存耗尽,而应用进程在紧急情况下仍能及时回收所需内存。


2.2 NUMA 与节点级 kswapd

    在 NUMA(Non-Uniform Memory Access)架构中,每个节点拥有独立内存。Linux 为每个节点启动独立 kswapd,扫描本节点的 LRU 链表并回收本地页。跨节点访问可能引入远程内存访问延迟,因此内核优先回收本地节点冷页。

    节点级 kswapd 避免了远程内存访问对性能的负面影响。kswapd 会结合内存分配策略(如 ZONE_NORMALZONE_HIGHMEM)按优先级扫描冷页,同时考虑脏页写回批量大小和回收速率,确保系统整体平衡。

NUMA 节点回收流程:

NUMA Node 0                NUMA Node 1┌─────────────┐          ┌─────────────┐│ kswapd 0     │          │ kswapd 1     │└───────┬─────┘          └───────┬─────┘        │                          │        ▼                          ▼  ┌─────────────┐            ┌─────────────┐  │ 扫描本地 LRU │            │ 扫描本地 LRU │  └───────┬─────┘            └───────┬─────┘          │                          │          ▼                          ▼   回收冷页/写回脏页         回收冷页/写回脏页

第 3 章:LRU 链表与内存回收逻辑

3.1 Active 与 Inactive 链表

    Linux 将内存页分为 Active 和 Inactive 链表。Active 链表包含近期访问频繁的页,Inactive 链表包含冷页。kswapd 的扫描重点在 Inactive 链表,通过以下步骤回收:

  1. 遍历 Inactive 链表页。

  2. 对于匿名页(Heap/Stack),尝试 swap-out。

  3. 对于文件页(Page Cache),检查是否脏页,必要时写回磁盘。

  4. 将回收的页释放到 buddy system 可用页链表。

    这种设计使系统在内存压力下能够优先保留热数据,回收冷数据,提高内存分配效率,同时减少磁盘 I/O 冲击。


3.2 回收策略与脏页处理

    脏页写回是 kswapd 回收的重要环节。kswapd 会批量写回脏页以减少随机 I/O,并根据 dirty_ratio 和 dirty_background_ratio 调整回写阈值,防止写回操作过于激进导致 I/O 突发。

    kswapd 的回收策略需要平衡内存释放速度与 I/O 压力。如果回收过慢,应用分配可能阻塞;如果过快,磁盘 I/O 突发,影响整体系统性能。内核通过 LRU + 批量写回 + 优先级扫描形成高效的后台回收机制。

kswapd LRU 扫描流程:

Inactive LRU Chain┌─────────────┐│ 页1(anon)    ││ 页2(file)    ││ 页3(file,dirty) │└───────┬─────┘        │        ▼┌─────────────┐│ 区分类型     │└───────┬─────┘        │ ┌──────┴──────┐ ▼             ▼匿名页          文件页swap-out      写回磁盘

第 4 章:kswapd 与 Page Cache 协同

4.1 Page Cache 冷页回收

    Page Cache 是 Linux 内核缓存文件页的核心。kswapd 在回收 Inactive 链表时,首先扫描 Page Cache 冷页,将长时间未访问的缓存页释放到 buddy system。理论上,这种回收不会影响应用运行,因为冷页通常可从磁盘重新加载。

    kswapd 批量释放 Page Cache 页,有效降低内存压力,提高可用页数量。配合 LRU 算法和工作集理论,kswapd 能够在后台平滑回收缓存,避免突发 I/O。


4.2 脏页回写机制

对于脏页,kswapd 会按照阈值和批量写回策略执行写回操作。写回流程包括:

  1. 将脏页放入 writeback 队列。

  2. 调用 filesystem flush 回写磁盘。

  3. 页写回完成后释放到 buddy system。

    这种机制保证了数据一致性和性能平衡,同时允许系统在后台维持高命中 Page Cache,提高应用访问效率。

脏页写回:

┌─────────────┐│ 脏页标记     │└───────┬─────┘        ▼┌─────────────┐│ 写入 writeback 队列 │└───────┬─────┘        ▼┌─────────────┐│ 批量写回磁盘 │└───────┬─────┘        ▼┌─────────────┐│ 页释放到 buddy │└─────────────┘

第 5 章:kswapd 与 Direct Reclaim 协作机制

5.1 Direct Reclaim 触发条件与流程

    当应用程序分配内存时,如果可用页低于 min watermark,将触发 Direct Reclaim,由请求内存的进程主动执行回收,而非依赖后台 kswapd。Direct Reclaim 的特点是高优先级、实时性强,确保进程可以及时获得内存。

    Direct Reclaim 与 kswapd 协作形成双层防护机制:kswapd 预回收,避免内存紧张;Direct Reclaim 补救紧急情况。Direct Reclaim 回收逻辑与 kswapd 类似,也扫描 Active/Inactive LRU 链表,区分匿名页、文件页,并处理脏页写回。但不同点在于,Direct Reclaim 会阻塞调用线程,直至释放足够页。

流程:

┌───────────────┐│ 进程申请内存  │└───────┬───────┘        ▼┌───────────────┐│ 检查 free pages│└───────┬───────┘   可用页 < min ?        │   ┌────┴─────┐   ▼          ▼触发 Direct Reclaim  不触发   │   ▼扫描 Inactive LRU回收冷页/写回脏页释放到 buddy system   │   ▼分配内存成功

    这种协作机制保证了 Linux 系统在高负载下既不会频繁阻塞进程,也不会过早触发 OOM。通过合理的 watermark 设置和 Direct Reclaim 机制,系统实现了内存回收的“预防+应急”双模式策略。


5.2 kswapd 与 Direct Reclaim 优化协作

kswapd 和 Direct Reclaim 在实际执行中需要协调:

  1. 压力等级区分:kswapd 在低于 low watermark 时预回收,避免触发直接回收;Direct Reclaim 仅在可用内存低于 min watermark 时触发。

  2. 回收目标差异:kswapd 优先回收冷页和 Page Cache,减少对进程运行的干扰;Direct Reclaim 优先回收匿名页和热页,保证进程及时分配到内存。

  3. 批量写回优化:kswapd 批量写回脏页,降低 I/O 并发;Direct Reclaim 可能触发同步写回,保证内存分配成功。

理论上,这种协作机制使 Linux 在高并发、大规模内存申请场景下保持稳定。结合 LRU 链表和 NUMA 节点优先级策略,kswapd 与 Direct Reclaim 能够平滑管理内存压力,实现高性能与低延迟的平衡。

协作流程:

┌───────────────┐│ kswapd 扫描后台│└───────┬───────┘        ▼   释放冷页/脏页        │        ▼┌───────────────┐│ Direct Reclaim│└───────┬───────┘        ▼阻塞进程释放页        │        ▼分配内存成功

第 6 章:kswapd 调优策略与性能优化

6.1 内核参数调优

kswapd 的性能调优主要通过内核参数控制:

  1. watermark_water:设置 min/low/high 内存水位,影响 kswapd 和 Direct Reclaim 的触发条件。

  2. kswapd_sleep_millisecs:控制 kswapd 扫描间隔,调整后台回收频率。

  3. dirty_ratio / dirty_background_ratio:控制脏页最大占比和后台写回阈值,避免写回突发导致 I/O 压力。

  4. vfs_cache_pressure:影响 dentry、inode 缓存回收倾向,间接影响 kswapd 回收目标。

理论上,通过调整这些参数,可以实现不同场景下的内存回收优化:高性能服务器倾向保留更多缓存,减少 I/O;嵌入式或内存紧张环境倾向更激进的回收策略,保证系统稳定性。


6.2 高负载与 NUMA 优化

    在 NUMA 系统中,kswapd 的优化策略包括:

  1. 本地回收优先:kswapd 优先扫描本节点内存,减少远程访问延迟。

  2. 节点平衡扫描:若本地节点无法释放足够页,可考虑跨节点回收,但会带来访问延迟。

  3. 脏页回写批量调节:在多节点场景下,通过 writeback batching 降低 I/O 并发和延迟。

理论上,这些优化确保了 NUMA 系统在大规模内存使用、并发分配和高 I/O 压力下,kswapd 能够稳定释放内存,防止某节点内存耗尽引发整体性能下降。

NUMA 优化流程:

┌─────────────┐│ kswapd Node0 │└─────┬───────┘      ▼扫描本地 LRU  │  ▼本地冷页不足?  │  ▼跨节点扫描  │  ▼释放页到 buddy system
第 7 章:kswapd 实践出来的方法

7.1 高 I/O 系统中的 kswapd 行为

    在数据库、虚拟化、日志密集型系统中,kswapd 扫描频率和回收速率直接影响性能。例如:

  1. 大量 Page Cache 冷页会被 kswapd 回收,以便应用分配匿名页。

  2. 高并发写入会触发脏页批量写回,减少同步写压力。

  3. NUMA 节点负载不均时,kswapd 本地回收优先策略可降低远程访问延迟。

理解 kswapd 扫描逻辑和回收优先级,有助于调整 watermark、水位和 writeback 参数,从而在高 I/O 场景下维持系统稳定。


7.2 实践

  1. 监控指标:使用 vmstat/proc/meminfoslabtop 等观察 free pages、LRU 长度、kswapd wakeups。

  2. 合理水位设置:确保 low watermark 高于工作集峰值,避免频繁触发 Direct Reclaim。

  3. 脏页控制:调整 dirty_ratio 和 dirty_background_ratio,避免突发写回影响 I/O。

  4. NUMA 优化:在多节点系统,确保 kswapd 本地扫描优先,避免跨节点频繁访问。

kswapd 全流程 :

┌───────────────┐│ 内存压力监控  │└───────┬───────┘        ▼┌───────────────┐│ 启动 kswapd    │└───────┬───────┘        ▼扫描 Inactive LRU        │        ▼┌───────────────┐│ 区分页类型     │└───────┬───────┘   ┌────┴────┐   ▼         ▼匿名页       文件页swap-out    写回磁盘   │         │   └─────┬───┘         ▼释放页到 buddy system         │         ▼满足内存请求 → 进程继续

最新文章

随机文章

基本 文件 流程 错误 SQL 调试
  1. 请求信息 : 2026-07-04 13:54:01 HTTP/2.0 GET : https://f.mffb.com.cn/a/488622.html
  2. 运行时间 : 0.114405s [ 吞吐率:8.74req/s ] 内存消耗:4,568.07kb 文件加载:140
  3. 缓存信息 : 0 reads,0 writes
  4. 会话信息 : SESSION_ID=a5764a7e97536243be661ed7186f1bdb
  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.000608s ] mysql:host=127.0.0.1;port=3306;dbname=f_mffb;charset=utf8mb4
  2. SHOW FULL COLUMNS FROM `fenlei` [ RunTime:0.000825s ]
  3. SELECT * FROM `fenlei` WHERE `fid` = 0 [ RunTime:0.000354s ]
  4. SELECT * FROM `fenlei` WHERE `fid` = 63 [ RunTime:0.000310s ]
  5. SHOW FULL COLUMNS FROM `set` [ RunTime:0.000592s ]
  6. SELECT * FROM `set` [ RunTime:0.000268s ]
  7. SHOW FULL COLUMNS FROM `article` [ RunTime:0.000645s ]
  8. SELECT * FROM `article` WHERE `id` = 488622 LIMIT 1 [ RunTime:0.002244s ]
  9. UPDATE `article` SET `lasttime` = 1783144441 WHERE `id` = 488622 [ RunTime:0.015580s ]
  10. SELECT * FROM `fenlei` WHERE `id` = 67 LIMIT 1 [ RunTime:0.000363s ]
  11. SELECT * FROM `article` WHERE `id` < 488622 ORDER BY `id` DESC LIMIT 1 [ RunTime:0.000548s ]
  12. SELECT * FROM `article` WHERE `id` > 488622 ORDER BY `id` ASC LIMIT 1 [ RunTime:0.000433s ]
  13. SELECT * FROM `article` WHERE `id` < 488622 ORDER BY `id` DESC LIMIT 10 [ RunTime:0.005317s ]
  14. SELECT * FROM `article` WHERE `id` < 488622 ORDER BY `id` DESC LIMIT 10,10 [ RunTime:0.001005s ]
  15. SELECT * FROM `article` WHERE `id` < 488622 ORDER BY `id` DESC LIMIT 20,10 [ RunTime:0.015395s ]
0.116134s