OceanBase TPCC測試常見報錯匯總
- 報錯1:加載測試數據時創建tablegroup失敗
- 報錯2:加載測試數據時執行超時
- 報錯3:加載測試數據時funcs.sh函數找不到
- 報錯4:加載數據時報錯超過租戶內存上限
- 辦法一:增加租戶內存
- 辦法二:調高轉儲線程數
- 辦法三:調整MemStore內存占比和凍結觸發閾值
- 辦法四:調大租戶寫入限流參數
- 報錯5:服務器磁盤空間不足
- 環境配置參考
報錯1:加載測試數據時創建tablegroup失敗
報錯信息:
CREATE TABLEGROUP tpcc_group binding true partition by hash partitions 9;
Access denied; you need (at least one of) the CREATE privilege(s) for this operation
tablegroup not exist
修改props.ob
使用高權限用戶測試:
user=root@tpcc
password=******
報錯2:加載測試數據時執行超時
報錯信息:
Worker 006: ERROR: Timeout, query has reached the maximum query timeout: 10000000(us), maybe you can adjust the session variable ob_query_timeout or query_timeout hint, and try again.
登錄租戶管理員,調大ob_query_timeout
參數:
[admin@oceanbase ~]$ mysql -h127.0.0.1 -P2881 -uroot@tpcc -p****** -AMySQL [(none)]> show variables like '%timeout%';MySQL [(none)]> set global ob_query_timeout=36000000000;
退出重新登錄生效。
報錯3:加載測試數據時funcs.sh函數找不到
報錯信息:
/opt/benchmarksql-5.0/run/runLoader.sh: line 8: source: funcs.sh: file not found
修改runLoader.sh
替換func.sh
為絕對路徑:
#source funcs.sh $1
source /opt/benchmarksql-5.0/run/funcs.sh $1
報錯4:加載數據時報錯超過租戶內存上限
報錯信息:
Worker 027: ERROR: Over tenant memory limits
Worker 067: ERROR: Over tenant memory limits
Worker 025: ERROR: No memory or reach tenant memory limit
Worker 054: ERROR: No memory or reach tenant memory limit
辦法一:增加租戶內存
登錄SYS租戶,檢查unit config的內存規格:
obclient(root@sys)[oceanbase]>
SELECT a.tenant_name,a.tenant_id,b.name unit_config,c.name pool_name,b.max_cpu,b.min_cpu,round(b.memory_size/1024/1024/1024,2) memory_size_gbFROMOCEANBASE.DBA_OB_TENANTS a,OCEANBASE.DBA_OB_UNIT_CONFIGS b,OCEANBASE.DBA_OB_RESOURCE_POOLS cWHERE a.tenant_id=c.tenant_idAND b.unit_config_id = c.unit_config_idORDER BY a.tenant_id desc;+-------------+-----------+-----------------+-----------+---------+---------+----------------+
| tenant_name | tenant_id | unit_config | pool_name | max_cpu | min_cpu | memory_size_gb |
+-------------+-----------+-----------------+-----------+---------+---------+----------------+
| tpcc | 1002 | tpcc_unit | tpcc_pool | 36 | 36 | 187.00 |
| sys | 1 | sys_unit_config | sys_pool | 4 | 4 | 2.00 |
+-------------+-----------+-----------------+-----------+---------+---------+----------------+
2 rows in set (0.021 sec)
如果unit內存規格很小,調大tpcc租戶內存上限:
alter resource unit tpcc_unit min_cpu = 36,max_cpu = 36,memory_size = '10g';
多個副本可能使用了不同的 resource_pool,需要分別做出調整。
這里我們tpcc租戶原本的內存規格就很大,感覺應該不是租戶內存不足的問題。
辦法二:調高轉儲線程數
轉儲前數據會大量占據內存,快速轉儲結束能釋放被占用的內存,compaction_high_thread_score
是控制并行轉儲線程數,可以通過調高該參數值來達到快速釋放內存的目的。該參數默認值為0,表示有6個并發線程數,修改該參數無需重啟OBServer即刻生效。
檢查轉儲線程數:
obclient(root@sys)