【 使用环境 】测试环境
【 OB or 其他组件 】
【 使用版本 】4.3.5
【问题描述】磁盘io 20m/S 需要改哪些timeout参数
[2026-01-04 10:53:40.579747] WDIAG [STORAGE] ~ObOccamTimeGuard (ob_occam_time_guard.h:269) [6523][T1004_MINI_MERG][T1004][YB420AC7F3FB-00064739826689A3-0-0] [lt=65][errcode=0] cost too much time:ob_tablet_persister.cpp:static int oceanbase::storage::ObTabletPersister::transform(const oceanbase::storage::ObTabletTransformArg &, char *, const int64_t), (*this=|threshold=10.00ms|start at 10:53:37.493
【复现路径】问题出现前后相关操作
【附件及日志】推荐使用OceanBase敏捷诊断工具obdiag收集诊断信息,详情参见链接(右键跳转查看):
【SOP系列 22 】——故障诊断第一步(自助诊断和诊断信息收集)
【备注】基于 LLM 和开源文档 RAG 的论坛小助手已开放测试,在发帖时输入 [@论坛小助手] 即可召唤小助手,欢迎试用!
2 个赞
论坛小助手
#3
在您的情况下,磁盘 IO 达到了 20M/s,这可能是导致性能瓶颈的原因之一。为了优化性能,您可以考虑调整以下与磁盘 IO 相关的 timeout 参数:
可能需要调整的参数
-
__all_zone.max_io_bandwidth:这个参数控制每个 Zone 的最大 IO 带宽。默认值可能不适合您的环境,可以根据实际 IO 负载进行调整。
-
__all_virtual_clog_mgr.flush_clog_timeout_us:这个参数控制 clog 刷盘的超时时间,单位是微秒。如果磁盘 IO 较慢,可以适当增加这个超时时间。
-
__all_virtual_sstable_writer.write_sstable_timeout_us:这个参数控制 SSTable 写入的超时时间,单位是微秒。如果磁盘 IO 较慢,可以适当增加这个超时时间。
-
__all_virtual_partition_store_meta.write_timeout_us:这个参数控制分区元数据写入的超时时间,单位是微秒。如果磁盘 IO 较慢,可以适当增加这个超时时间。
使用 obdiag 进行日志采集
为了更好地了解当前系统的状态和性能瓶颈,建议您使用 obdiag 工具进行日志采集,以便我们进一步分析。
日志采集场景: IO问题
日志采集命令:
obdiag gather scene run --scene=observer.io
提供更多信息
为了更准确地帮助您优化性能,请提供以下信息:
- 当前系统的详细配置,包括 CPU、内存和磁盘类型。
- 当前
__all_zone.max_io_bandwidth、__all_virtual_clog_mgr.flush_clog_timeout_us、__all_virtual_sstable_writer.write_sstable_timeout_us 和 __all_virtual_partition_store_meta.write_timeout_us 等参数的设置。
- 系统在高负载下的具体表现,例如响应时间、吞吐量等。
- 是否有其他监控工具或日志显示磁盘 IO 存在瓶颈。
请您运行上述 obdiag 命令并提供采集到的日志压缩包,我们将根据日志内容进一步分析和建议。
附上敏捷诊断工具 obdiag 使用帮助链接
3 个赞
mysql> SELECT distinct name FROM gv$ob_parameters WHERE name LIKE ‘%timeout%’;
±----------------------------------------------+
| name |
±----------------------------------------------+
| _advance_checkpoint_timeout |
| _xa_gc_timeout |
| _ob_ddl_timeout |
| sys_bkgd_migration_change_member_list_timeout |
| _data_storage_io_timeout |
| location_cache_refresh_sql_timeout |
| location_cache_refresh_rpc_timeout |
| rpc_timeout |
| _ob_trans_rpc_timeout |
| balancer_task_timeout |
| dead_socket_detection_timeout |
| debug_sync_timeout |
| internal_sql_execute_timeout |
| kv_hbase_client_scanner_timeout_period |
| _ha_rpc_timeout |
| _ls_migration_wait_completing_timeout |
| _transfer_process_lock_tx_timeout |
| _transfer_start_trans_timeout |
| _transfer_finish_trans_timeout |
| _transfer_start_rpc_timeout |
| arbitration_timeout |
| ob_query_switch_leader_retry_timeout |
| _backup_task_keep_alive_timeout |
| _object_storage_io_timeout |
| _stream_rpc_max_wait_timeout |
| standby_db_fetch_log_rpc_timeout |
±----------------------------------------------+
26 rows in set (0.02 sec)
mysql> SELECT * FROM gv$ob_parameters WHERE name LIKE ‘%max_io_bandwidth%’;
SELECT * FROM gv$ob_parameters WHERE name LIKE ‘%flush_clog_timeout_us%’;
SELECT * FROM gv$ob_parameters WHERE name LIKE ‘%write_sstable_timeout_us%’;
Empty set (0.00 sec)
mysql>
mysql> SELECT * FROM gv$ob_parameters WHERE name LIKE ‘%flush_clog_timeout_us%’;
SELECT * FROM gv$ob_parameters WHERE name LIKE ‘%write_timeout_us%’;Empty set (0.01 sec)
mysql>
mysql> SELECT * FROM gv$ob_parameters WHERE name LIKE ‘%write_sstable_timeout_us%’;
Empty set (0.00 sec)
mysql>
mysql> SELECT * FROM gv$ob_parameters WHERE name LIKE ‘%write_timeout_us%’;
Empty set (0.01 sec)
没有这些参数,也改不了