在性能测试中,往往会进行一段时间(通常地,执行5-10min的相关业务场景)数据预热。那么什么是预热,哪些层面会有预热?

    预热 目的是将数据加载到缓存/缓存系统中,可以分为硬件预热和软件预热。
    硬件预热 主要是服务器硬件,如 CPU、I/O、系统文件加载(BIOS)层面等;
    软件预热 包括了操作系统的缓存、 应用程序缓存、DB缓存、中间件/容器缓存、CDN等

    • DB 预热
      是数据库引擎层面的机制设计(可参考 http://www.dataguru.cn/thread-630612-1-1.html),以避免未预热/预热时产生高 I/O 消耗而影响测试结果;同时也是是为了更贴合实际场景。技术层面,即将业务在 DB 中所需的数据,触发索引等写入 DB 的缓存区
    • 缓存系统预热(如果有)
      是业务实际发生的场景需要,是为了更贴合实际场景,如 ES、Redis 等,避免直接访问到 DB;
    • 程序缓存预热
      以 Java 为例 如 JVM 的预加载、 对象内存管理等机制,或者程序业务的设计需要在启动时的缓存加载等
    • 操作系统与硬件预热

      进行I/O后,系统、硬件等会将成功访问的数据从硬盘写入到主存