--- title: "传输层压缩配置" date: 2026-02-18 lastmod: 2026-02-18 description: "控制传输层数据压缩的配置项说明" tags: ["网络配置", "性能优化", "数据压缩"] summary: "配置项作用 # transport.compress 配置项控制集群节点间传输层通信是否启用数据压缩。启用压缩可以减少网络传输的数据量,但会增加 CPU 开销。此配置是已弃用的 transport.tcp.compress 配置的新名称。 配置项类型 # 该配置项为静态配置,需要在启动时设置,修改后需要重启节点才能生效。 默认值 # false(不启用压缩) 是否必需 # 可选配置项(有默认值) 取值范围 # true - 启用压缩 false - 禁用压缩 配置格式 # # 默认配置(不压缩) transport.compress: false # 启用压缩 transport.compress: true # 旧配置名称(已弃用) transport.tcp.compress: true 相关配置项 # 配置项 默认值 说明 transport.compress false 传输层压缩开关 transport.tcp.compress false 已弃用的压缩配置 http.compress true HTTP 层压缩 工作原理 # 传输层压缩机制:" --- ## 配置项作用 `transport.compress` 配置项控制集群节点间传输层通信是否启用数据压缩。启用压缩可以减少网络传输的数据量,但会增加 CPU 开销。此配置是已弃用的 `transport.tcp.compress` 配置的新名称。 ## 配置项类型 该配置项为**静态配置**,需要在启动时设置,修改后需要重启节点才能生效。 ## 默认值 ``` false(不启用压缩) ``` ## 是否必需 **可选配置项**(有默认值) ## 取值范围 ``` true - 启用压缩 false - 禁用压缩 ``` ## 配置格式 ```yaml # 默认配置(不压缩) transport.compress: false # 启用压缩 transport.compress: true # 旧配置名称(已弃用) transport.tcp.compress: true ``` ## 相关配置项 | 配置项 | 默认值 | 说明 | |-------|-------|------| | `transport.compress` | false | 传输层压缩开关 | | `transport.tcp.compress` | false | 已弃用的压缩配置 | | `http.compress` | true | HTTP 层压缩 | ## 工作原理 传输层压缩机制: ``` ┌─────────────────────────────────────────────────────────────────┐ │ 传输层数据压缩流程 │ └─────────────────────────────────────────────────────────────────┘ 节点 A 发送数据 │ ▼ 检查 compress 配置 │ ├── false(默认) │ │ │ └── 直接发送原始数据 │ - 网络传输:较大 │ - CPU 消耗:低 │ - 传输时间:取决于网络 │ └── true │ ├── 压缩数据 │ - 算法:LZ4 │ - CPU 消耗:中等 │ - 压缩比:取决于数据 │ └── 发送压缩数据 - 网络传输:较小 - 传输时间:可能更短 ``` ## 压缩效果分析 ``` 数据类型对压缩效果的影响: 高压缩比数据: ├── 文本数据(JSON, XML) │ - 压缩比: 5:1 ~ 10:1 │ - 推荐: 启用压缩 │ ├── 日志数据 │ - 压缩比: 3:1 ~ 8:1 │ - 推荐: 启用压缩 │ └── 重复内容多的数据 - 压缩比: 高 - 推荐: 启用压缩 低压缩比数据: ├── 已压缩数据(图片, 视频) │ - 压缩比: 接近 1:1 │ - 推荐: 不启用压缩 │ ├── 二进制数据 │ - 压缩比: 接近 1:1 │ - 推荐: 不启用压缩 │ └── 加密数据 - 压缩比: 接近 1:1 - 推荐: 不启用压缩 ``` ## 使用场景 ### 1. 默认配置(推荐) ```yaml transport.compress: false ``` **适用场景:** - 千兆网络环境 - CPU 资源有限 - 数据压缩比低 - 本地网络通信 ### 2. 启用压缩 ```yaml transport.compress: true ``` **适用场景:** - 跨地域集群 - 网络带宽有限 - 传输大量文本数据 - CPU 资源充足 ## 推荐设置建议 | 网络环境 | 数据类型 | 推荐值 | 说明 | |---------|---------|-------|------| | 千兆本地 | 任意 | false | 网络足够快 | | 百兆跨机房 | 文本 | true | 减少传输量 | | 跨地域 | 文本 | true | 节省带宽 | | 跨地域 | 二进制 | false | 压缩效果差 | | CPU 受限 | 任意 | false | 优先 CPU | | 带宽受限 | 文本 | true | 优先带宽 | ## 性能权衡分析 ``` 启用压缩的影响: 优点: ✓ 减少网络传输量 ✓ 降低带宽使用 ✓ 可能加快传输速度 ✓ 节省网络成本 缺点: ✗ 增加 CPU 使用 ✗ 增加延迟 ✗ 可能影响整体吞吐量 ✗ 压缩已压缩数据无意义 决策因素: - 网络带宽 - CPU 资源 - 数据类型 - 距离/延迟 ``` ## 配置示例 ```yaml # 场景 1: 本地高性能集群 cluster.name: high-performance-cluster network.host: 192.168.1.10 transport.compress: false # 场景 2: 跨地域集群 cluster.name: geo-cluster network.host: 10.0.0.10 transport.compress: true # 场景 3: 资源受限环境 cluster.name: small-cluster network.host: 192.168.1.10 transport.compress: false ``` ## 监控建议 ```bash # 查看当前配置 GET /_nodes/settings?filter_path=nodes.*.transport.compress # 查看网络统计 GET /_nodes/stats/transport # 查看节点传输信息 GET /_cat/nodes?v&h=name,transport* # 监控 CPU 使用率 GET /_nodes/stats?filter_path=nodes.*.os.cpu ``` ## 性能测试建议 ``` 测试步骤: 1. 关闭压缩,记录基准数据 - 吞吐量 - 延迟 - CPU 使用率 - 网络流量 2. 启用压缩,记录相同数据 3. 对比分析 - 吞吐量变化 - 延迟变化 - CPU 使用变化 - 网络流量变化 4. 决策 - 如果带宽节省 > CPU 开销 → 启用 - 如果性能下降明显 → 禁用 ``` ## 与其他压缩配置的关系 ``` 压缩配置层次: 1. HTTP 层压缩 (http.compress) - 作用于 REST API - 默认启用 - 客户端-服务器通信 2. 传输层压缩 (transport.compress) - 作用于节点间通信 - 默认禁用 - 集群内部通信 3. 索引存储压缩 (index.codec) - 作用于数据存储 - 默认 LZ4 - 磁盘空间优化 建议: - HTTP 层: 保持启用 - 传输层: 根据实际情况决定 - 存储: 根据数据类型选择 ``` ## 注意事项 1. **静态配置**:修改需要重启节点 2. **CPU 开销**:压缩会消耗 CPU 资源 3. **数据类型**:文本数据压缩效果更好 4. **网络条件**:带宽受限时更有价值 5. **测试验证**:实际环境中测试效果 6. **配置一致性**:集群内所有节点应保持一致