OB租户内存模块使用率高不释放

【 使用环境 】生产环境
【 OB or 其他组件 】OB
【 使用版本 】4.3.5.6
【问题描述】

  1. OB某租户的 某个observer内存 使用率近一个多月一直上涨,直到100%,导致memstore很小(比其他节点小好几倍),数据库性能卡顿,经扩容内存后解决。
  2. 经排查DEFAULT_CTX_ID占用内存高达124GB,其中的LinearHashMapNo内存模块大小51GB,LockWaitMgr内存模块大小47GB。
  3. 想进一步分析相关的内存模块使用率高且不释放的原因。
    【复现路径】问题出现前后相关操作
    【附件及日志】

1 个赞

OceanBase 社区已接收您的帖子,正在跟进中。

addr2line -pCfe bin/observer 0x26436e90 0xa3a9195 0xa405b24 0xa428b53 0xa424995 0xa60e015 0xaa2a84e 0x1c23c8e2 0xa77c75b 0xa77b9ce 0xa62606a 0xa61f933 0xa61ddee 0xa61d964 0xa61b334 0xa4c350b
oceanbase::common::light_backtrace(void**, int, long) 于 ??:?
oceanbase::lib::ObMallocAllocator::alloc(long, oceanbase::lib::ObMemAttr const&) 于 ??:?
oceanbase::common::ObBlockAllocMgr::alloc_block(long, oceanbase::lib::ObMemAttr&) 于 ??:?
oceanbase::common::ObSliceAlloc::prepare_block() 于 ??:?
oceanbase::common::ObSliceAlloc::alloc() 于 ??:?
oceanbase::memtable::RowHolderMapper::set_hash_holder(oceanbase::common::ObTabletID const&, oceanbase::memtable::ObMemtableKey const&, oceanbase::transaction::ObTransID const&) 于 ??:?
oceanbase::memtable::ObMemtable::multi_set_(oceanbase::storage::ObTableIterParam const&, oceanbase::storage::ObTableAccessContext&, oceanbase::memtable::ObMemtableSetArg const&, oceanbase::memtable::ObMemtableKeyGenerator&, oceanbase::storage::ObRowsInfo&) 于 0_cxx.cxx:?
oceanbase::memtable::ObMemtable::multi_set(oceanbase::storage::ObTableIterParam const&, oceanbase::storage::ObTableAccessContext&, oceanbase::memtable::ObMemtableSetArg const&, oceanbase::storage::ObRowsInfo&) 于 ??:?
oceanbase::storage::ObTablet::update_rows(oceanbase::storage::ObRelativeTable&, oceanbase::storage::ObStoreCtx&, oceanbase::common::ObIArray<oceanbase::share::schema::ObColDesc> const&, oceanbase::common::ObIArray<long> const&, oceanbase::blocksstable::ObDatumRow const*, oceanbase::common::ObIArray<oceanbase::transaction::ObEncryptMetaCache> const*, oceanbase::storage::ObRowsInfo&) 于 ??:?
oceanbase::storage::ObLSTabletService::update_rows_wrap(oceanbase::storage::ObTabletHandle&, oceanbase::blocksstable::ObDatumRow const*, oceanbase::storage::ObRelativeTable&, oceanbase::storage::ObStoreCtx&, oceanbase::common::ObIArray<oceanbase::share::schema::ObColDesc> const&, oceanbase::common::ObIArray<long> const&, oceanbase::blocksstable::ObDatumRow const*, oceanbase::common::ObIArray<oceanbase::transaction::ObEncryptMetaCache> const*, oceanbase::storage::ObRowsInfo&) 于 ??:?
oceanbase::storage::ObLSTabletService::delete_rows_in_tablet(oceanbase::storage::ObTabletHandle&, oceanbase::storage::ObDMLRunningCtx&, oceanbase::blocksstable::ObDatumRow*, oceanbase::storage::ObRowsInfo&) 于 ??:?
oceanbase::storage::ObLSTabletService::delete_rows(oceanbase::storage::ObTabletHandle&, oceanbase::storage::ObStoreCtx&, oceanbase::storage::ObDMLBaseParam const&, oceanbase::common::ObIArray<unsigned long> const&, oceanbase::blocksstable::ObDatumRowIterator*, long&) 于 ??:?
oceanbase::storage::ObAccessService::delete_rows(oceanbase::share::ObLSID const&, oceanbase::common::ObTabletID const&, oceanbase::transaction::ObTxDesc&, oceanbase::storage::ObDMLBaseParam const&, oceanbase::common::ObIArray<unsigned long> const&, oceanbase::blocksstable::ObDatumRowIterator*, long&) 于 ??:?
oceanbase::sql::ObDASIndexDMLAdaptor<4, oceanbase::sql::ObDASDMLIterator>::write_rows(oceanbase::share::ObLSID const&, oceanbase::common::ObTabletID const&, oceanbase::sql::ObDASDelCtDef const&, oceanbase::sql::ObDASDelRtDef&, oceanbase::sql::ObDASDMLIterator&, long&) 于 0_cxx.cxx:?
oceanbase::sql::ObDASDeleteOp::open_op() 于 ??:?
oceanbase::sql::ObDataAccessService::execute_das_task(oceanbase::sql::ObDASRef&, oceanbase::sql::ObDasAggregatedTask&, bool) 于 ??:?

addr2line -pCfe bin/observer 0x26436e90 0xa3a9195 0xa911747 0xa911253 0xa60e194 0xaa2a84e 0x1c23c8e2 0xa77c75b 0xa77b9ce 0xa62606a 0xa61f933 0xa61ddee 0xa61d964 0xa61b334 0xa4c350b 0xa4c2427
oceanbase::common::light_backtrace(void**, int, long) 于 ??:?
oceanbase::lib::ObMallocAllocator::alloc(long, oceanbase::lib::ObMemAttr const&) 于 ??:?
oceanbase::common::ObLinearHashMap<oceanbase::common::ObIntWarp, oceanbase::transaction::ObTransID, oceanbase::common::UniqueMemMgrTag>::cons_seg_(unsigned long) 于 ??:?
oceanbase::common::ObLinearHashMap<oceanbase::common::ObIntWarp, oceanbase::transaction::ObTransID, oceanbase::common::UniqueMemMgrTag>::expand_() 于 ??:?
oceanbase::memtable::RowHolderMapper::set_hash_holder(oceanbase::common::ObTabletID const&, oceanbase::memtable::ObMemtableKey const&, oceanbase::transaction::ObTransID const&) 于 ??:?
oceanbase::memtable::ObMemtable::multi_set_(oceanbase::storage::ObTableIterParam const&, oceanbase::storage::ObTableAccessContext&, oceanbase::memtable::ObMemtableSetArg const&, oceanbase::memtable::ObMemtableKeyGenerator&, oceanbase::storage::ObRowsInfo&) 于 0_cxx.cxx:?
oceanbase::memtable::ObMemtable::multi_set(oceanbase::storage::ObTableIterParam const&, oceanbase::storage::ObTableAccessContext&, oceanbase::memtable::ObMemtableSetArg const&, oceanbase::storage::ObRowsInfo&) 于 ??:?
oceanbase::storage::ObTablet::update_rows(oceanbase::storage::ObRelativeTable&, oceanbase::storage::ObStoreCtx&, oceanbase::common::ObIArray<oceanbase::share::schema::ObColDesc> const&, oceanbase::common::ObIArray<long> const&, oceanbase::blocksstable::ObDatumRow const*, oceanbase::common::ObIArray<oceanbase::transaction::ObEncryptMetaCache> const*, oceanbase::storage::ObRowsInfo&) 于 ??:?
oceanbase::storage::ObLSTabletService::update_rows_wrap(oceanbase::storage::ObTabletHandle&, oceanbase::blocksstable::ObDatumRow const*, oceanbase::storage::ObRelativeTable&, oceanbase::storage::ObStoreCtx&, oceanbase::common::ObIArray<oceanbase::share::schema::ObColDesc> const&, oceanbase::common::ObIArray<long> const&, oceanbase::blocksstable::ObDatumRow const*, oceanbase::common::ObIArray<oceanbase::transaction::ObEncryptMetaCache> const*, oceanbase::storage::ObRowsInfo&) 于 ??:?
oceanbase::storage::ObLSTabletService::delete_rows_in_tablet(oceanbase::storage::ObTabletHandle&, oceanbase::storage::ObDMLRunningCtx&, oceanbase::blocksstable::ObDatumRow*, oceanbase::storage::ObRowsInfo&) 于 ??:?
oceanbase::storage::ObLSTabletService::delete_rows(oceanbase::storage::ObTabletHandle&, oceanbase::storage::ObStoreCtx&, oceanbase::storage::ObDMLBaseParam const&, oceanbase::common::ObIArray<unsigned long> const&, oceanbase::blocksstable::ObDatumRowIterator*, long&) 于 ??:?
oceanbase::storage::ObAccessService::delete_rows(oceanbase::share::ObLSID const&, oceanbase::common::ObTabletID const&, oceanbase::transaction::ObTxDesc&, oceanbase::storage::ObDMLBaseParam const&, oceanbase::common::ObIArray<unsigned long> const&, oceanbase::blocksstable::ObDatumRowIterator*, long&) 于 ??:?
oceanbase::sql::ObDASIndexDMLAdaptor<4, oceanbase::sql::ObDASDMLIterator>::write_rows(oceanbase::share::ObLSID const&, oceanbase::common::ObTabletID const&, oceanbase::sql::ObDASDelCtDef const&, oceanbase::sql::ObDASDelRtDef&, oceanbase::sql::ObDASDMLIterator&, long&) 于 0_cxx.cxx:?
oceanbase::sql::ObDASDeleteOp::open_op() 于 ??:?
oceanbase::sql::ObDataAccessService::execute_das_task(oceanbase::sql::ObDASRef&, oceanbase::sql::ObDasAggregatedTask&, bool) 于 ??:?
oceanbase::sql::ObDASRef::execute_all_task(oceanbase::common::ObObjStore<oceanbase::sql::ObDasAggregatedTask*, oceanbase::common::ObIAllocator&, false>&) 于 ??:?

已知缺陷:LinearHashMapNo, LockWaitMgr 内存泄漏
计划在observer 5.0.2版本修复