最近发现线上一个报表接口很慢由此引发的’血案‘。由于需求原因报表需要查看所有数据不要分页且数据已准备好到一张表中共有800的数据量。理论上全查也会很快经过本地验证秒出数据。可是上到正式环境后接口查询需要25s左右真的是要了命了。该加的索引都加了剩下的就是服务器的问题了开始怀疑服务器....查看数据量2007KB时间24.63s怀疑服务器网速的问题线上应用服务器到数据库网络慢80KB/s没办法公司给的服务器资源有限。开始想解决方案(不想看废话的朋友直接看最下面的实施方案)慢的原因线上应用服务器 ───网络(慢) ───用户浏览器2MB 24秒 2MB服务器带宽限制、用户网络环境差区这些都会影响Gzip压缩方案在 Spring Boot 应用服务器层面Tomcat数据库 → Java代码 → Jackson → Tomcat(Gzip) → 网络 → 浏览器↑压缩发生在这里Gzip 压缩原理1. 什么是 GzipGzip 是一种数据压缩算法就像把文件用 WinRAR/7-Zip 压缩成 .zip 包一样。2. 整个流程┌──────────┐ ┌────────┐│ 服务器 │ │ 浏览器 │└────┬─────┘ └────┬───┘│ ││ 1. 生成 JSON 数据 ││ (原始 2MB) ││ ││ 2. Gzip 压缩 ───────── │ 3. 接收压缩数据│ (压缩后 145KB) │ (145KB)│ ││ │ 4. 自动解压│ │ (还原 2MB)│ ││ │ 5. Vue 正常使用实施方案server: compression: enabled: true mime-types: application/json,application/xml,text/html,text/xml,text/plain min-response-size: 1024 # 只压缩 1KB 的最终压缩144kb响应时间1.02s左右
关于线上资源受限,本地接口快线上接口慢的问题处理
发布时间:2026/6/27 19:37:28
最近发现线上一个报表接口很慢由此引发的’血案‘。由于需求原因报表需要查看所有数据不要分页且数据已准备好到一张表中共有800的数据量。理论上全查也会很快经过本地验证秒出数据。可是上到正式环境后接口查询需要25s左右真的是要了命了。该加的索引都加了剩下的就是服务器的问题了开始怀疑服务器....查看数据量2007KB时间24.63s怀疑服务器网速的问题线上应用服务器到数据库网络慢80KB/s没办法公司给的服务器资源有限。开始想解决方案(不想看废话的朋友直接看最下面的实施方案)慢的原因线上应用服务器 ───网络(慢) ───用户浏览器2MB 24秒 2MB服务器带宽限制、用户网络环境差区这些都会影响Gzip压缩方案在 Spring Boot 应用服务器层面Tomcat数据库 → Java代码 → Jackson → Tomcat(Gzip) → 网络 → 浏览器↑压缩发生在这里Gzip 压缩原理1. 什么是 GzipGzip 是一种数据压缩算法就像把文件用 WinRAR/7-Zip 压缩成 .zip 包一样。2. 整个流程┌──────────┐ ┌────────┐│ 服务器 │ │ 浏览器 │└────┬─────┘ └────┬───┘│ ││ 1. 生成 JSON 数据 ││ (原始 2MB) ││ ││ 2. Gzip 压缩 ───────── │ 3. 接收压缩数据│ (压缩后 145KB) │ (145KB)│ ││ │ 4. 自动解压│ │ (还原 2MB)│ ││ │ 5. Vue 正常使用实施方案server: compression: enabled: true mime-types: application/json,application/xml,text/html,text/xml,text/plain min-response-size: 1024 # 只压缩 1KB 的最终压缩144kb响应时间1.02s左右