当前位置:首页>Linux>记一次Linux内核网络panic排查

记一次Linux内核网络panic排查

  • 2026-06-26 15:08:54
记一次Linux内核网络panic排查
 

一次内核 Panic 的根因追踪
从 BUG 陷阱指令到修复提交

 

2026-05-30 · 案例分享

 

   设备上线后突然崩溃,控制台打印出 Kernel BUG。对嵌入式开发者来说,这种场景应该不陌生。

   本文记录一次真实的内核 Panic 排查过程——从 panic 日志到根因定位再到修复提交的全流程。    在这个过程中我们会看到 netmap 的运行模式如何影响 skb 的生命周期、Linux 内核桥接的转发逻辑、    以及一个看似普通的 skb 是如何在三次穿越协议栈后引爆的。希望能给同样在网络驱动开发中遇到类似问题的朋友一些参考。  

 

一、现象:设备上线即崩溃

 

   设备是 Realtek 平台的网关,运行 Linux 5.10 内核,使用 ca_ne 网卡驱动并加载了 netmap 模块做网络监控。网口刚 up 起来,控制台直接打印:  

 
Kernel BUG at pskb_expand_head+0x2d0/0x360
Internal error: Oops - BUG: 00000000f2000800 [#1] SMP
pc : pskb_expand_head+0x2d0/0x360
lr : ca_ni_virtual_instance_open+0x424/0x690 [ca_ne]
 

   完整的 panic 现场:  

 
pc : pskb_expand_head+0x2d0/0x360
lr : ca_ni_virtual_instance_open+0x424/0x690 [ca_ne]
x0: 0x00000680    ← nhead = 1664 bytes
x1: 0x00000002    ← ntail 参数
x19: 0xffffff8013087180  ← skb 指针
CPU: 0  PID: 4470  Comm: client
Tainted: G O       ← O = 外挂模块
Hardware: Realtek Taurus ENG Board
Code: 97e9f614 17ffff8c a90363f7 f90023f9 (d4210000)
 

   d4210000 是 ARM64 的 BRK #0x800 指令,内核用这个宏来主动触发 BUG()。不是硬件异常,是内核自己认为状态不对,主动炸的。nhead = 0x680(1664 字节)意味着 ca_ne 驱动需要为封装头部预留很大的空间——这个数字后面会解释为什么重要。  

 

二、前置知识:理解三个关键模块

 

   在深入分析之前,先理清三个关键背景。  

 

1. netmap 的四种运行模式

 

   netmap 是一个高性能的网络 I/O 框架,允许用户态程序直接读写网卡环形缓冲区。它有四种运行模式,理解它们对定位问题至关重要:  

                       
模式特点本案例关联度
Generic驱动无 native netmap 支持时走内核路径,通过 dev_queue_xmit 收发✅ ca_ne 走此模式
Monitor旁路抓包模式,TX/RX 双向截获,TX 包通过 skb_get 重新注入内核根因所在
Transparent网卡可同时被 netmap 和内核使用,bridge 等正常转发✅ bridge 正常转发
Exclusive网卡被 netmap 独占,内核无法使用❌ 本场景未涉及
 

   本案例中 Generic + Monitor + Transparent 三层叠加——ca_ne 无 native 支持走 Generic 路径,Monitor 模式负责截获和回注,Transparent 模式让 bridge 能够正常转发。缺任意一层都不会触发这个 BUG。  

 

2. Linux 内核 skb 的引用计数模型

 

   skb(struct sk_buff)是内核网络子系统中最重要的数据结构。它的引用管理有两套独立的计数:  

     

     skb->users:整个 skb 结构体的引用计数。skb_get() 加一,kfree_skb() / consume_skb() 减一。为零时释放。
     dataref:数据区(skb->head 指向的线性缓冲区)的共享计数。skb_clone() 时加一,因为 clone 和原 skb 共享同一片数据区。    

   

   一个关键区别:  

               
操作usersdatarefskb_shared()
skb_clone()不变+1不变
skb_get()+1不变变为 true
 

   这就是问题的关键——skb_get() 会让 skb_shared() 返回 true,而 pskb_expand_head 恰恰不接受 shared 状态的 skb。  

 

3. 内核 bridge 的洪泛转发逻辑

 

   当 bridge 收到一个目的 MAC 未知的帧时,会执行洪泛(flood)——向所有桥接端口发送一份。br_flood 的实现有一个值得注意的细节:  

     

     第一个出口直接传递 原始 skb,不做 clone。
     从第二个出口开始,才调用 skb_clone() 为每个端口复制一份。    

   

   这是出于性能优化的考虑——如果 flood 的目标端口只有一个,就不需要 clone。但在 netmap monitor 场景下,这个优化恰好成了 BUG 的触发条件之一。  

 

三、调用链还原:三次穿越协议栈

 

   从 panic 堆栈可以还原出这个 skb 的完整旅行路线。它经历了三次 dev_queue_xmit,穿越三个不同的网络设备:  

     

     起点:netmap monitor 截获 TX 包 → skb_get() 持有一个额外引用

     第1次 ↴ nm_os_generic_xmit_frame 注入 → vlan0(VLAN 子接口)
       → 经过 vlan_dev_hard_start_xmit 剥去 VLAN 标签

     第2次 ↴ VLAN 剥头后的 skb → br0(网桥)
       → bridge 查 MAC 表未命中,执行洪泛
       → ca_ne 是第一个桥接端口,收到原始 skb(不 clone)

     第3次 ↴ br_flood 传递原始 skb → ca_ne(物理端口)
       → ca_ne 需要 1664 字节 headroom 封装协议头
       → 调用 pskb_expand_head(skb, 1664, ...) →  BUG_ON(skb_shared)    

   

   为什么是三次?这不是异常,而是 netmap + VLAN + bridge 三层虚拟化下的必然路径——每穿越一个虚拟设备就要一次 dev_queue_xmit。正常情况下 qdisc 层会在入队前清理 skb 的共享状态,但 netmap monitor 的注入路径绕过了这一环节。  

 

四、根因分析:三个条件缺一不可

 

   触发这个 BUG 需要以下三个条件同时满足:  

                   
#条件原因
1netmap monitor 模式已启用nm_os_generic_xmit_frame 调用 skb_get(),users 从 1 升为 2,skb_shared 变为 true
2bridge 洪泛时 ca_ne 是第一个端口br_flood 对第一个出口传递原始 skb,不 clone。如果是第二个端口则 clone 后 users=1,不会触发
3ca_ne 需要扩展 headroomca_ne 调用 pskb_expand_head(nhead=1664),函数内部 BUG_ON(skb_shared(skb)) 被触发
 

   这也是为什么这个 BUG 在常规场景下从未被发现——日常使用中要么 netmap 没加载、要么 bridge 没有配置、要么 ca_ne 恰好不是第一个洪泛端口。三个小概率事件同时发生,才撞上了这个隐藏的 bug。  

     

     关于 headroom = 1664:ca_ne 驱动需要为多级隧道封装预留头部空间——      外层 VLAN 标签(4 字节)、可能的 QinQ 叠加(再加 4 字节)、PPPoE 头部(6 字节)、      甚至未来可能叠加的隧道协议——驱动开发者选择了 1664 字节这个足够安全的数字。      这个数字本身没问题,问题出在 pskb_expand_head 不检查 skb 是否 shared。    

 
 

五、为什么平时不炸?

 

   这个问题引发了一个更深的疑问:既然 pskb_expand_head 有 BUG_ON(skb_shared),那内核里其他调用它的地方为什么不会崩溃?  

 

   答案是:qdisc 层在入队前就已经做了清理。常规路径下,skb 在进入 qdisc 队列时,    __dev_queue_xmit 内部会处理 skb 的共享状态,确保送到 ndo_start_xmit 的 skb 不是 shared 的。  

 

   但 netmap monitor 的 TX 注入路径是这样的:  

     

     skb_get(skb) → users=2 → 直接 dev_queue_xmit(skb) → ... → ca_ne
     ↑ 没有经过标准的 qdisc 入队前共享态清理    

   

   事实上,Linux 内核的 ip6_finish_output2() 函数中就有完全相同的防御逻辑,连注释都写明了:  

 
/* pskb_expand_head() might crash, if skb is shared */
if (skb_shared(skb)) {
    nskb = skb_clone(skb, GFP_ATOMIC);
    if (likely(nskb)) {
        consume_skb(skb);
        skb = nskb;
    }
}
 

   ca_ne 之前没有做同样的防御——不只是 ca_ne,很多 OOT(树外)驱动都没有。因为它们假设内核送到 ndo_start_xmit 的 skb 一定是非共享的,而这个假设在 netmap monitor 注入路径下不成立。  

 

六、修复方案

 

改动策略

                   
模块改动方式理由
ca_ne 驱动✅ 内部加 ca_ni_skb_unshare最小改动,自己防御
netmap❌ 不改第三方模块,影响面不可控
Linux bridge❌ 不改内核核心组件,副作用不可控
 

核心修复代码

 

   在 ca_ne 驱动的 xmit 路径中,pskb_expand_head 调用前做一次防御性 clone:  

 
/* 如果 skb 被多个引用共享,先 clone 再释放原引用 */
if (unlikely(skb_shared(skb))) {
    nskb = skb_clone(skb, GFP_ATOMIC);
    if (unlikely(!nskb))
        return NETDEV_TX_OK;  /* 丢包保护,不 panic */
    consume_skb(skb);         /* 释放 ca_ne 持有的引用 */
    skb = nskb;               /* 用新的非共享 skb */
}
 

   修复后的 skb 生命周期:  

     

     原始 skb(users=2, shared)
       → skb_clone() 得到 nskb(users=1, !shared)
       → consume_skb(原始) 释放一份引用
       → nskb 传给 pskb_expand_head → BUG_ON(skb_shared) ✅ 通过
       → dev_hard_start_xmit 收尾时 consume_skb(nskb) → users=0 → 释放    

 
 

七、经验总结

     

     1. skb 的生命周期管理比你以为的复杂
     skb_get 和 skb_clone 对引用计数的影响完全不同——一个加 users,一个加 dataref。skb_shared() 只看 users。这个区别如果理解不透,定位这种 BUG 时会走很多弯路。    

       

     2. netmap 不止是一个"抓包工具"
     netmap 的四种模式(Generic/Monitor/Transparent/Exclusive)决定了它和内核协议栈的交互方式。monitor 模式的 TX 回注路径绕过了内核标准的 qdisc 共享态清理,这就是问题的起点。    

       

     3. bridge 洪泛的性能优化也有代价
     br_flood 对第一个端口不 clone 是一个合理的性能优化,但它假设驱动不会修改 skb 的共享状态。当这个假设被打破,优化就成了隐患。    

       

     4. OOT 驱动要做好防御性编程
     内核标准路径(如 ip6_finish_output2)已经有 skb_shared 的防御逻辑,但 OOT 驱动不能依赖这个保障。在 pskb_expand_head 或 skb_cow_head 调用前主动检查 skb 的共享状态,是必要的防御性编程习惯。    

       

     一句话总结:在调用 pskb_expand_head 之前,永远确保 skb 不是 shared 的。内核标准路径已经在做了,netmap 回注路径和 OOT 驱动要自己补上这道防线。    

 
 

本文由 小易的AI工坊 发布 · 案例来自真实项目经验

最新文章

随机文章

基本 文件 流程 错误 SQL 调试
  1. 请求信息 : 2026-07-03 00:59:02 HTTP/2.0 GET : https://f.mffb.com.cn/a/496478.html
  2. 运行时间 : 0.161115s [ 吞吐率:6.21req/s ] 内存消耗:4,695.45kb 文件加载:140
  3. 缓存信息 : 0 reads,0 writes
  4. 会话信息 : SESSION_ID=4b235d4d26f3dc0bd57b406fdfd39029
  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.000692s ] mysql:host=127.0.0.1;port=3306;dbname=f_mffb;charset=utf8mb4
  2. SHOW FULL COLUMNS FROM `fenlei` [ RunTime:0.000701s ]
  3. SELECT * FROM `fenlei` WHERE `fid` = 0 [ RunTime:0.003603s ]
  4. SELECT * FROM `fenlei` WHERE `fid` = 63 [ RunTime:0.002595s ]
  5. SHOW FULL COLUMNS FROM `set` [ RunTime:0.000576s ]
  6. SELECT * FROM `set` [ RunTime:0.000207s ]
  7. SHOW FULL COLUMNS FROM `article` [ RunTime:0.000577s ]
  8. SELECT * FROM `article` WHERE `id` = 496478 LIMIT 1 [ RunTime:0.000776s ]
  9. UPDATE `article` SET `lasttime` = 1783011542 WHERE `id` = 496478 [ RunTime:0.005988s ]
  10. SELECT * FROM `fenlei` WHERE `id` = 67 LIMIT 1 [ RunTime:0.000332s ]
  11. SELECT * FROM `article` WHERE `id` < 496478 ORDER BY `id` DESC LIMIT 1 [ RunTime:0.010942s ]
  12. SELECT * FROM `article` WHERE `id` > 496478 ORDER BY `id` ASC LIMIT 1 [ RunTime:0.009240s ]
  13. SELECT * FROM `article` WHERE `id` < 496478 ORDER BY `id` DESC LIMIT 10 [ RunTime:0.024187s ]
  14. SELECT * FROM `article` WHERE `id` < 496478 ORDER BY `id` DESC LIMIT 10,10 [ RunTime:0.016360s ]
  15. SELECT * FROM `article` WHERE `id` < 496478 ORDER BY `id` DESC LIMIT 20,10 [ RunTime:0.014647s ]
0.162790s