📣 极限科技诚招搜索运维工程师(Elasticsearch/Easysearch)- 全职/北京 👉 : 立即申请加入

配置项作用 #

transport.compress 配置项控制集群节点间传输层通信是否启用数据压缩。启用压缩可以减少网络传输的数据量,但会增加 CPU 开销。此配置是已弃用的 transport.tcp.compress 配置的新名称。

配置项类型 #

该配置项为静态配置,需要在启动时设置,修改后需要重启节点才能生效。

默认值 #

false(不启用压缩)

是否必需 #

可选配置项(有默认值)

取值范围 #

true  - 启用压缩
false - 禁用压缩

配置格式 #

# 默认配置(不压缩)
transport.compress: false

# 启用压缩
transport.compress: true

# 旧配置名称(已弃用)
transport.tcp.compress: true

相关配置项 #

配置项默认值说明
transport.compressfalse传输层压缩开关
transport.tcp.compressfalse已弃用的压缩配置
http.compresstrueHTTP 层压缩

工作原理 #

传输层压缩机制:

┌─────────────────────────────────────────────────────────────────┐
│                    传输层数据压缩流程                              │
└─────────────────────────────────────────────────────────────────┘

节点 A 发送数据
    │
    ▼
检查 compress 配置
    │
    ├── false(默认)
    │   │
    │   └── 直接发送原始数据
    │       - 网络传输:较大
    │       - CPU 消耗:低
    │       - 传输时间:取决于网络
    │
    └── true
        │
        ├── 压缩数据
        │   - 算法:LZ4
        │   - CPU 消耗:中等
        │   - 压缩比:取决于数据
        │
        └── 发送压缩数据
            - 网络传输:较小
            - 传输时间:可能更短

压缩效果分析 #

数据类型对压缩效果的影响:

高压缩比数据:
    ├── 文本数据(JSON, XML)
    │   - 压缩比: 5:1 ~ 10:1
    │   - 推荐: 启用压缩
    │
    ├── 日志数据
    │   - 压缩比: 3:1 ~ 8:1
    │   - 推荐: 启用压缩
    │
    └── 重复内容多的数据
        - 压缩比: 高
        - 推荐: 启用压缩

低压缩比数据:
    ├── 已压缩数据(图片, 视频)
    │   - 压缩比: 接近 1:1
    │   - 推荐: 不启用压缩
    │
    ├── 二进制数据
    │   - 压缩比: 接近 1:1
    │   - 推荐: 不启用压缩
    │
    └── 加密数据
        - 压缩比: 接近 1:1
        - 推荐: 不启用压缩

使用场景 #

1. 默认配置(推荐) #

transport.compress: false

适用场景:

  • 千兆网络环境
  • CPU 资源有限
  • 数据压缩比低
  • 本地网络通信

2. 启用压缩 #

transport.compress: true

适用场景:

  • 跨地域集群
  • 网络带宽有限
  • 传输大量文本数据
  • CPU 资源充足

推荐设置建议 #

网络环境数据类型推荐值说明
千兆本地任意false网络足够快
百兆跨机房文本true减少传输量
跨地域文本true节省带宽
跨地域二进制false压缩效果差
CPU 受限任意false优先 CPU
带宽受限文本true优先带宽

性能权衡分析 #

启用压缩的影响:

优点:
    ✓ 减少网络传输量
    ✓ 降低带宽使用
    ✓ 可能加快传输速度
    ✓ 节省网络成本

缺点:
    ✗ 增加 CPU 使用
    ✗ 增加延迟
    ✗ 可能影响整体吞吐量
    ✗ 压缩已压缩数据无意义

决策因素:
    - 网络带宽
    - CPU 资源
    - 数据类型
    - 距离/延迟

配置示例 #

# 场景 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

监控建议 #

# 查看当前配置
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. 配置一致性:集群内所有节点应保持一致