当前位置:首页>Linux>不懂 NUMA,别再说你懂 Linux 内核了

不懂 NUMA,别再说你懂 Linux 内核了

  • 2026-03-28 20:59:36
不懂 NUMA,别再说你懂 Linux 内核了

很多后端、内核开发者都有这样的困惑:对着 Linux 内核源码啃了很久,却始终摸不透内存管理、进程调度的核心逻辑;明明优化了代码、调优了参数,系统性能却依然上不去,甚至出现诡异的卡顿、资源浪费。其实你忽略了一个关键前提——NUMA 架构。作为现代多核服务器的核心架构,NUMA 早已深度融入 Linux 内核的每一个角落,从内存分配、进程调度到中断处理,每一处设计都围绕它展开。

不懂 NUMA,你看到的内核源码只是“表面文字”,无法理解其背后的性能考量;不懂 NUMA,你做的性能优化只能是“隔靴搔痒”,抓不住问题的本质。今天,我们就从 NUMA 的核心原理入手,拆解它与 Linux 内核的深度绑定,帮你打通内核认知的“任督二脉”,真正读懂 Linux 内核的底层逻辑。

一、什么是NUMA?

面试题写作模版

NUMA的全称是Non-Uniform Memory Access,翻译过来就是“非统一内存访问”。要理解它,我们先回顾一下它的“前辈”——SMP架构。

在早期的多CPU服务器中,用的都是SMP(对称多处理)架构:所有CPU核心共享一条系统总线,访问同一块内存。这种架构的好处是简单,所有CPU对内存的访问延迟都一样,但问题也很明显:当CPU核心数量增多(比如超过8核),共享总线就会成为瓶颈,就像一条马路,车多了就会堵车,CPU访问内存的速度会急剧下降。

为了解决这个瓶颈,NUMA架构应运而生。它的核心思路很简单:将CPU和内存分组,形成“节点(Node)”。每个节点都包含一组CPU核心和一块本地内存,节点之间通过高速互连总线(比如Intel的QPI、AMD的Infinity Fabric)连接。

这里有两个关键特点,也是NUMA的核心:

  1. 本地访问更快:CPU访问自己所在节点的本地内存时,路径最短、延迟最低,这就是“本地内存访问”;
  2. 远程访问更慢:如果CPU需要访问其他节点的内存(远程内存),就必须通过节点间的互连总线,延迟会比本地访问高1.5~2倍甚至更多,带宽也会受限。

举个通俗的例子:把每个NUMA节点想象成一栋办公楼,楼里的员工(CPU核心)有自己的文件柜(本地内存),要拿自己文件柜里的文件(访问本地内存),伸手就能拿到;如果要拿其他办公楼的文件(远程内存),就需要走走廊、坐电梯,耗时更长。

二、NUMA系统架构详解

面试题写作模版

2.1 NUMA 架构定义

非统一内存访问(Non-Uniform Memory Access, NUMA)架构是一种多处理器系统设计中常用的内存组织方式,其核心思想是将内存划分为多个节点,每个节点包含一部分内存并与一个或多个处理器核心直接相连。与传统的统一内存访问(Uniform Memory Access, UMA)架构不同,NUMA架构通过引入内存节点的概念,显著提升了多核处理器系统的内存访问效率和可扩展性。

在UMA架构中,所有处理器核心共享同一块内存,并且对内存的访问延迟是相同的;而在NUMA架构中,由于内存被分配到不同的节点上,处理器核心访问本地内存(Local Memory)的速度明显快于访问远程内存(Remote Memory)的速度,这种非均匀的内存访问特性使得NUMA架构能够更好地满足高性能计算场景下的需求。通过将内存划分为多个节点,NUMA架构不仅减少了内存访问冲突,还提高了系统的整体带宽利用率,从而为高并发工作负载提供了更优的性能支持。

此外,NUMA架构的设计理念也使其在硬件层面实现了更高的灵活性和可扩展性。例如,在现代服务器系统中,基于NUMA架构的多路处理器设计可以通过增加内存节点来扩展系统容量,同时保持较低的内存访问延迟。这种特性使得NUMA架构特别适合于需要处理大量数据的高性能计算场景,如科学计算、数据库服务和虚拟化环境等4。值得注意的是,尽管NUMA架构在提升系统性能方面具有显著优势,但其复杂的内存访问模型也对软件设计提出了更高的要求,尤其是在操作系统内核层面需要针对NUMA特性进行专门的优化和支持。

2.2 NUMA 架构组成

NUMA架构由多个关键组件构成,包括处理器核心(Processor Cores)、内存控制器(Memory Controllers)、内存节点(Memory Nodes)以及它们之间的互联方式(Interconnect)。这些组件共同协作,以实现高效的内存访问和系统性能优化。首先,处理器核心是执行计算任务的主要单元,每个核心通常与一个或多个内存控制器直接相连,以便快速访问本地内存。

其次,内存控制器负责管理处理器核心与内存之间的数据交换,它可以根据处理器的请求将数据从内存中读取或写入,同时支持多种内存访问协议以提高数据传输效率。

内存节点是NUMA架构中的核心组件之一,每个节点包含一定容量的内存,并与一个或多个处理器核心相关联。在NUMA系统中,内存节点通常被设计为靠近特定的处理器核心,以便减少内存访问延迟并提高本地内存访问的吞吐量。此外,内存节点之间通过高速互联网络连接,这种互联方式可以是基于总线的结构,也可以是基于交换网络的拓扑,其设计目标是在保证低延迟的同时实现高带宽的数据传输。最后,互联网络的作用是将各个内存节点和处理器核心连接成一个整体,使得远程内存访问成为可能,尽管其延迟高于本地内存访问,但通过合理的系统设计和软件优化,可以最大限度地减少远程访问对系统性能的影响。

2.3 NUMA 工作原理

在NUMA架构下,内存访问的工作原理基于本地内存访问和远程内存访问的区分,这两种访问方式在延迟和带宽方面存在显著差异。当处理器核心发起内存访问请求时,如果目标内存位于与该核心直接相连的内存节点中,则称为本地内存访问(Local Memory Access);反之,如果目标内存位于其他内存节点中,则称为远程内存访问(Remote Memory Access)。由于本地内存访问无需经过复杂的互联网络,其延迟通常远低于远程内存访问,这使得处理器核心能够以更高的效率访问本地内存中的数据。

具体而言,本地内存访问的过程相对简单:处理器核心通过内存控制器直接向本地内存节点发送请求,并在短时间内获取所需数据。相比之下,远程内存访问则需要经过多个步骤:首先,处理器核心将请求发送至本地内存控制器;其次,请求通过互联网络转发至目标内存节点的内存控制器;

最后,目标内存控制器将数据返回给请求处理器核心。这一过程涉及更多的中间环节和通信开销,因此会导致较高的访问延迟。此外,远程内存访问还可能引发内存访问冲突和带宽瓶颈,特别是在多核系统中存在大量跨节点内存访问时,这些问题会更加突出。

为了缓解远程内存访问带来的性能问题,现代NUMA系统通常采用多种优化策略,如内存预取(Memory Prefetching)、内存迁移(Memory Migration)和负载均衡(Load Balancing)。这些策略通过预测处理器核心的内存访问模式、动态调整内存数据分布以及优化处理器核心与内存节点的映射关系,能够有效减少远程内存访问的频率和延迟,从而提高系统的整体性能。

三、Linux 内核中 NUMA 实现机制

面试题写作模版

3.1 内存管理中的 NUM

(1)内存节点划分:在现代计算机系统中,非一致内存访问(NUMA)架构通过将内存划分为多个节点来优化多核处理器的性能。Linux 内核根据硬件拓扑结构自动检测并划分内存节点,以确保每个节点具有独立的本地内存资源。这一过程依赖于 pg_data_t 数据结构,该结构用于描述每个 NUMA 节点的内存布局及其属性。

在系统初始化阶段,内核通过 ACPI(Advanced Configuration and Power Interface)表获取硬件拓扑信息,并根据这些信息构建 NUMA 节点拓扑图。此外,numa_init 函数负责完成内存节点的初始化工作,包括分配节点描述符、映射物理内存区域以及建立节点间的互联关系。这种精细的内存节点划分机制不仅提高了内存管理的效率,还为后续的内存分配策略提供了基础支持。

值得注意的是,Linux 内核在设计内存节点划分机制时充分考虑了硬件的异构性。例如,在处理包含多个处理器核心和内存控制器的复杂系统时,内核会根据实际硬件配置生成优化的 NUMA 拓扑结构。这种动态适配能力使得 Linux 能够在不同类型的 NUMA 硬件上实现高效的内存管理。同时,相关数据结构的引入也增强了内核对 NUMA 架构的支持能力,为上层应用提供了透明且高性能的内存访问接口。

(2)内存分配策略:为了进一步提升 NUMA 架构下的系统性能,Linux 内核实施了一系列针对 NUMA 的内存分配策略,其中最为重要的是本地优先分配(Preferred Local Allocation)和内存迁移(Memory Migration)。本地优先分配策略的核心思想是尽可能地为进程分配与其运行节点相同的本地内存。这种策略能够显著减少远程内存访问带来的延迟开销,从而提高内存访问效率。

具体而言,当进程请求内存时,内核会优先从当前节点的内存池中分配资源;只有当本地内存不足时,才会考虑从其他远程节点借用内存。这一策略通过 alloc_pages_current 函数实现,并结合 zoned_page_alloc 机制确保内存分配的公平性和效率。

与此同时,内存迁移机制作为 NUMA 内存管理的重要组成部分,用于动态调整内存分布以适应系统负载的变化。在某些情况下,进程可能因为历史分配原因而持有大量远程内存,导致性能下降。为了解决这一问题,Linux 内核引入了内存迁移框架,允许将进程的内存页从一个节点迁移到另一个节点。

例如,当某个节点的负载过高时,内核可以通过 migrate_pages 函数将部分内存页迁移到空闲节点,从而实现负载均衡。此外,内核还提供了基于页颜色(Page Coloring)的内存分配优化技术,通过将内存页按照节点进行着色,进一步减少跨节点内存访问的可能性。这些策略的综合运用不仅提升了内存访问效率,还显著增强了系统的整体性能。

3.2 进程调度中的 NUMA

(1)进程与内存节点亲和性:在 NUMA 架构下,进程与内存节点之间的亲和性(Affinity)是优化内存访问性能的关键因素之一。Linux 内核通过引入进程与内存节点的亲和性概念,使得进程能够优先访问其关联节点上的本地内存资源。具体而言,进程的亲和性可以通过 task_struct 结构中的 mems_allowed 位图来描述,该位图记录了进程可以访问的内存节点集合。通过设置适当的亲和性,内核能够引导进程在特定节点上运行,并优先使用该节点的本地内存,从而减少远程内存访问的开销。

为了实现这一目标,Linux 提供了多种系统调用接口,如 sched_setaffinity 和 sched_getaffinity,允许用户空间应用程序显式地设置或查询进程的 CPU 和内存亲和性。例如,在高性能计算场景中,管理员可以通过这些接口将特定进程绑定到拥有充足本地内存的 NUMA 节点上,从而最大限度地提升内存访问效率。此外,内核还支持自动亲和性调整机制,即根据进程的实际内存访问行为动态更新其亲和性设置。这种智能化的亲和性管理策略不仅简化了系统配置,还显著提高了 NUMA 环境下的性能表现。

(2)进程迁移与负载均衡:在 NUMA 系统中,进程迁移和负载均衡机制是确保系统整体性能的重要保障。Linux 内核通过进程迁移机制,能够在运行时动态调整进程的放置位置,以优化内存访问延迟并平衡各节点之间的负载。具体而言,内核通过 migration_thread 线程监控每个 NUMA 节点的负载情况,并在检测到负载不均衡时触发进程迁移操作。例如,当某个节点的负载过高时,内核会选择部分进程并将其迁移到负载较低的节点上,从而避免因资源竞争导致的性能下降。

此外,Linux 内核还引入了一种基于内存访问模式的智能迁移策略,该策略通过分析进程的内存访问行为来决定是否进行迁移。例如,如果一个进程频繁访问某个节点的本地内存,则内核会倾向于将其迁移到该节点上,以减少远程内存访问的开销。这种策略不仅提高了进程的运行效率,还有效降低了系统整体的功耗。与此同时,内核还支持手动触发进程迁移的操作,例如通过 taskset 命令可以强制将进程迁移至指定节点。这些机制的结合使用使得 Linux 能够在复杂的 NUMA 环境中实现高效的负载均衡,从而充分发挥硬件资源的潜力。

3.3 系统调用中的 NUMA

Linux 内核提供了一系列与 NUMA 相关的系统调用,以便用户空间应用程序能够更好地利用 NUMA 架构的特性。这些系统调用不仅允许应用程序查询和管理 NUMA 节点的信息,还可以用于设置进程的内存亲和性,从而优化内存访问性能。例如,get_mempolicy 和 set_mempolicy 系统调用分别用于获取和设置进程的内存分配策略。通过这些调用,应用程序可以指定内存分配的首选节点或强制执行本地分配策略,从而减少远程内存访问的可能性。

此外,mbind 系统调用提供了一种更为灵活的内存绑定机制,允许应用程序将特定内存区域显式地绑定到指定的 NUMA 节点上。这种机制在高性能计算场景中尤为重要,因为它可以帮助应用程序避免因内存分配不当而导致的性能瓶颈。例如,在数据库系统中,通过 mbind 可以将热点数据页固定在本地内存中,从而显著提高查询性能。与此同时,Linux 内核还提供了 numa_maps 文件接口,允许用户通过 proc 文件系统查看进程的内存分布情况。这些系统调用和接口的引入不仅增强了 Linux 对 NUMA 架构的支持能力,还为开发者提供了丰富的工具来优化应用程序的性能。

四、 NUMA 应用场景

面试题写作模版

4.1数据库应用场景

在现代计算环境中,数据库系统作为高性能应用的核心组件,其对内存访问延迟和带宽的敏感性使得 NUMA 架构对其性能影响显著。数据库系统的性能瓶颈通常出现在数据查询和事务处理过程中,而这些操作高度依赖于内存访问效率。研究表明,NUMA 架构通过将内存划分为多个节点并优先访问本地内存,能够显著降低内存访问延迟,从而提升数据库的整体性能。

然而,如果数据库系统的内存分配策略未能充分考虑 NUMA 特性,可能会导致远程内存访问频繁,进而引发性能下降。例如,在多核处理器环境下,若数据库的进程被调度到与数据所在内存节点不匹配的核心上,则会因跨节点内存访问而产生较高的延迟。

为优化数据库系统在 NUMA 架构下的性能,可以通过调整 Linux 内核中的 NUMA 相关参数和配置来实现。一种常见的优化策略是使用 numactl 工具显式地指定数据库进程的内存亲和性,确保其优先访问本地内存节点。此外,还可以通过调整内存分配策略,如启用本地优先分配(mpol=prefer_local)模式,减少远程内存访问的可能性。某研究表明,在一项针对 PostgreSQL 数据库的实验中,通过合理配置 NUMA 参数,查询性能提升了约 20%,同时事务处理延迟降低了 15%。这一优化效果在实际生产环境中得到了验证,特别是在高并发场景下,NUMA 相关配置的优化能够显著提升数据库系统的响应速度和吞吐量。

进一步分析表明,数据库系统的缓存机制也与 NUMA 架构密切相关。例如,InnoDB 存储引擎中的缓冲池(Buffer Pool)在 NUMA 环境下需要进行特殊配置,以避免因数据跨节点分布而导致的性能问题。通过将缓冲池划分为多个实例并与不同的 NUMA 节点绑定,可以有效减少远程内存访问,从而提高缓存命中率。某大型电商平台的实践表明,采用此种优化方案后,其数据库系统的 QPS(Queries Per Second)提升了 30% 以上,同时系统稳定性也得到了显著改善。因此,深入理解 NUMA 架构的特点并结合具体应用场景进行参数调优,对于提升数据库系统性能具有重要意义。

4.2 虚拟化应用场景

在虚拟化环境中,NUMA 架构对虚拟机性能的影响同样不可忽视。虚拟化技术通过将物理资源抽象为虚拟资源,实现了多虚拟机共享同一物理主机的能力。然而,这种资源共享模式可能导致资源竞争问题,尤其是在内存访问方面。由于虚拟机通常运行在不同的 NUMA 节点上,若其内存分配不合理,可能会导致虚拟机之间的跨节点内存访问增加,从而引发性能下降。研究表明,虚拟化环境中的 NUMA 特性优化能够有效提升虚拟机的资源利用率和整体性能。

为了充分利用 NUMA 架构的特性,虚拟化平台需要结合 NUMA 特点进行资源分配和优化。一种常见的优化策略是将虚拟机的 vCPU 和内存分配限制在同一个 NUMA 节点内,以避免跨节点内存访问。例如,在 KVM(Kernel-based Virtual Machine)虚拟化环境中,可以通过 numactl 工具或 libvirt 配置选项显式地指定虚拟机的 NUMA 亲和性,确保其资源分配与物理 NUMA 拓扑结构一致。

某实验表明,通过这种方式优化后,虚拟机的 CPU 利用率提升了约 25%,同时内存访问延迟降低了 18%。此外,对于需要高吞吐量的应用场景,如虚拟化网络功能链(Virtual Network Function Chain, VNFC),还可以利用基于马尔可夫链概率迭代的部署算法(如 MarVNFP)来优化虚拟机的部署位置,从而减少跨域数据传输并降低时延。

实际案例表明,在虚拟化环境中合理利用 NUMA 特性能够显著提升系统性能。例如,某云计算服务提供商在其生产环境中部署了基于 NUMA 优化的虚拟机资源配置方案。通过对虚拟机的 NUMA 亲和性进行精细化管理,并结合动态负载均衡机制,该平台成功降低了虚拟机的跨节点内存访问频率,从而提升了整体性能。

实验数据显示,优化后虚拟机的平均响应时间缩短了 20%,同时资源利用率提高了 15%。此外,在虚拟化网络功能链场景中,采用 MarVNFP 算法进行虚拟机部署优化的实验结果表明,与传统的 MRP 算法相比,跨域数据传输减少了近 40%,时延降低了约 30%。这些优化成果不仅验证了 NUMA 特性在虚拟化环境中的重要性,也为未来的虚拟化技术研究提供了新的方向。

五、Linux实战:查看和配置NUMA

面试题写作模版

光懂理论不够,实际工作中能查看、配置NUMA,才是真的掌握。以下是几个最常用的命令,新手也能轻松上手。

5.1 查看NUMA拓扑(最常用)

用numactl命令查看服务器的NUMA节点、每个节点的CPU和内存情况,这是排查NUMA问题的第一步:

# 查看NUMA硬件信息numactl --hardware

输出示例(双节点NUMA):

available2 nodes (0-1)node 0 cpus: 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15node 0 size: 65408 MBnode 0 free: 42300 MBnode 1 cpus: 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31node 1 size: 65536 MBnode 1 free: 45600 MBnode distances:node   0   1  0:  10  21  1:  21  10
  • available: 2 nodes (0-1):服务器有2个NUMA节点,编号0和1;
  • node 0 cpus: 0-15:节点0包含16个CPU核心(编号0-15);
  • node 0 size: 65408 MB:节点0的本地内存约64GB;
  • node distances:节点间的距离,数值越小,访问延迟越低(节点0访问自身延迟10,访问节点1延迟21)。

5.2 查看进程的NUMA亲和性

查看某个进程运行在哪个NUMA节点,以及内存分配情况:

# 查看进程ID为1234的NUMA亲和性numactl --show-membind --show-cpunodebind -p 1234# 查看所有进程的NUMA内存分配统计numastat

重点关注numastat输出中的numa_hit(本地内存访问次数)和numa_foreign(远程内存访问次数),如果numa_foreign数值过高,说明存在大量跨节点访问,需要优化。

5.3 配置NUMA:绑定进程到指定节点

对于高性能服务(如MySQL、Nginx、Java服务),建议将进程绑定到特定的NUMA节点,避免跨节点迁移和远程内存访问:

# 方式1:启动进程时绑定到节点0(CPU和内存都限制在节点0)numactl --cpunodebind=0 --membind=0 ./your_application# 方式2:将已运行的进程(PID=1234)绑定到节点0numactl --cpunodebind=0 --membind=0 -p 1234# 方式3:绑定进程到节点0的特定CPU核心(0-7)numactl --cpubind=0-7 --membind=0 ./your_application

补充:Java服务可以通过JVM参数优化NUMA(JDK 8u262以上):

java -XX:+UseNUMA -XX:NUMAInterleavingRatio=1 -jar your_app.jar

六、NUMA常见问题

面试题写作模版

很多人之所以忽视NUMA,是因为在单机、低配置服务器上,NUMA的影响不明显;但在多核、多节点服务器(比如生产环境的数据库、大数据、高并发服务)中,NUMA配置不当,会导致系统性能严重下降,甚至出现诡异问题。

6.1 最常见:跨节点内存访问导致的性能瓶颈

这是最容易踩的坑。比如,你在双节点NUMA服务器上部署了一个高并发服务,没有做任何NUMA配置,进程可能被调度到Node0的CPU上,却从Node1分配内存,导致大量远程访问,服务延迟飙升、CPU利用率上不去。

举个真实案例:之前在生产环境部署MySQL,服务器是2颗物理CPU(2个NUMA节点,各32核,64GB内存),初期没有配置NUMA,MySQL的QPS一直上不去,延迟很高;后来通过绑定NUMA节点,让MySQL进程只在Node0运行,内存也只从Node0分配,QPS直接提升了30%,延迟降低了40%——这就是NUMA的影响。

6.2 容易忽视:虚拟化环境中的NUMA问题

现在很多生产环境都用虚拟化(KVM、VMware),如果虚拟机的vCPU和v内存没有和物理NUMA节点对齐,就会出现“伪NUMA”问题——虚拟机的vCPU可能来自物理机的不同NUMA节点,导致虚拟机内部的进程频繁访问远程内存,性能严重下降。

解决方法也很简单:在创建虚拟机时,将vCPU和v内存绑定到物理机的同一个NUMA节点,确保虚拟机内部的进程能优先访问本地内存。

6.3 误区:禁用NUMA就能解决所有问题?

有些同学遇到NUMA相关的性能问题,第一反应是“禁用NUMA”(在BIOS中关闭NUMA,或内核启动参数添加numa=off)。但这样做会让服务器退回到SMP架构,当CPU核心较多时,共享总线会成为新的瓶颈,反而可能导致性能更差。

正确的做法不是禁用NUMA,而是优化NUMA配置,让进程和内存“对齐”,最大化本地访问比例。

最新文章

随机文章

基本 文件 流程 错误 SQL 调试
  1. 请求信息 : 2026-03-28 21:46:17 HTTP/2.0 GET : https://f.mffb.com.cn/a/483627.html
  2. 运行时间 : 0.280071s [ 吞吐率:3.57req/s ] 内存消耗:4,532.16kb 文件加载:140
  3. 缓存信息 : 0 reads,0 writes
  4. 会话信息 : SESSION_ID=84f21b1cc673f0d67c34b98789e92de6
  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.000709s ] mysql:host=127.0.0.1;port=3306;dbname=f_mffb;charset=utf8mb4
  2. SHOW FULL COLUMNS FROM `fenlei` [ RunTime:0.001193s ]
  3. SELECT * FROM `fenlei` WHERE `fid` = 0 [ RunTime:0.000625s ]
  4. SELECT * FROM `fenlei` WHERE `fid` = 63 [ RunTime:0.004463s ]
  5. SHOW FULL COLUMNS FROM `set` [ RunTime:0.001474s ]
  6. SELECT * FROM `set` [ RunTime:0.006684s ]
  7. SHOW FULL COLUMNS FROM `article` [ RunTime:0.001477s ]
  8. SELECT * FROM `article` WHERE `id` = 483627 LIMIT 1 [ RunTime:0.013426s ]
  9. UPDATE `article` SET `lasttime` = 1774705577 WHERE `id` = 483627 [ RunTime:0.003416s ]
  10. SELECT * FROM `fenlei` WHERE `id` = 67 LIMIT 1 [ RunTime:0.002779s ]
  11. SELECT * FROM `article` WHERE `id` < 483627 ORDER BY `id` DESC LIMIT 1 [ RunTime:0.002001s ]
  12. SELECT * FROM `article` WHERE `id` > 483627 ORDER BY `id` ASC LIMIT 1 [ RunTime:0.020615s ]
  13. SELECT * FROM `article` WHERE `id` < 483627 ORDER BY `id` DESC LIMIT 10 [ RunTime:0.035064s ]
  14. SELECT * FROM `article` WHERE `id` < 483627 ORDER BY `id` DESC LIMIT 10,10 [ RunTime:0.014235s ]
  15. SELECT * FROM `article` WHERE `id` < 483627 ORDER BY `id` DESC LIMIT 20,10 [ RunTime:0.022307s ]
0.283270s