# L1 ~ Ln 层待 Compaction 的 SST 文件的大小过大-处理

![center](./student-guide/diagram/place-holder.png)

------------------------------------------------------------

- 处理建议
如果是 Compaction pending bytes 过多导致 write stall 有几种解决方案：
  - 磁盘 IO 能力不足
    - 在线调大 soft-pending-compaction-bytes-limit 和 hard-pending-compaction-bytes-limit 参数，防止触发 write stall ，但是这个只是治标不治本，根本原因应该是 compaction 慢
    - 如果磁盘的吞吐达到了上限导致 write stall ，但是 CPU 资源比较充足，可以尝试采用压缩率更高的压缩算法来缓解磁盘压力，使用 CPU 资源换磁盘资源。比如 default cf compaction 压力比较大，调整参数 [rocksdb.defaultcf] compression-per-level = ["no", "no", "lz4", "lz4", "lz4", "zstd", "zstd"] 改成 compression-per-level = ["no", "no", "zstd", "zstd", "zstd", "zstd", "zstd"]
    - 如果磁盘 IO 能力持续跟不上，建议扩容
  - 磁盘 IO 能力充足
    - 确认下集群是否有做过 compaction 限流 rocksdb.rate-bytes-per-sec，如果有，那需要放开一点限制，观察下 write stall 的情况是否会缓解
    - 适当调大  rocksdb.max-background-jobs，加速 compaction
