簡體   English   中英

ArangoDB 警告 [3ad54] {引擎} 后台設置同步緩慢

[英]ArangoDB WARNING [3ad54] {engines} slow background settings sync

我有一個在 AWS 實例上運行的 ArangoDB 3.8.7 數據庫,它有大約 2 億條記錄(每分鍾大約 1000 條新記錄)。

在用戶請求較高的那一天,我一直在數據庫日志中看到此警告,並且請求響應開始變得非常慢(從正常的 ~500 毫秒到 5-15 秒)。

WARNING [3ad54] {engines} slow background settings sync

我使用具有 98 GB RAM 的大型 AWS 實例 c5a.12xlarge(48 個 vCPU),甚至 AWS 分析顯示我的實例已過度配置。

i-0c41xxxxxxxxxxx is over-provisioned
Compute Optimizer found that this instance's CPU, network bandwidth and network PPS are over-provisioned.

我每 60 秒運行一次 WAL 壓縮任務。 (我試過將它降低到 15 秒,但它似乎變得更糟了)。 當它是 10 分鍾時也很糟糕。

2022-11-24T14:45:35Z [1303] WARNING [3ad54] {engines} slow background settings sync: 9.240683 s
2022-11-24T14:45:49Z [1303] WARNING [3ad54] {engines} slow background settings sync: 11.222022 s
2022-11-24T14:46:05Z [1303] WARNING [3ad54] {engines} slow background settings sync: 14.198186 s
2022-11-24T14:46:18Z [1303] WARNING [3ad54] {engines} slow background settings sync: 10.272200 s
2022-11-24T14:46:34Z [1303] WARNING [3ad54] {engines} slow background settings sync: 13.703265 s
2022-11-24T14:46:35Z [1303] INFO [99d80] {general} --------------------------
2022-11-24T14:46:35Z [1303] INFO [99d80] {general} Running compaction task...
2022-11-24T14:46:35Z [1303] INFO [99d80] {general} Compacting access...
2022-11-24T14:46:35Z [1303] INFO [99d80] {general} Compacting accounts...
2022-11-24T14:46:35Z [1303] INFO [99d80] {general} Compacting addresses...
2022-11-24T14:46:35Z [1303] INFO [99d80] {general} Compacting products...
2022-11-24T14:46:35Z [1303] INFO [99d80] {general} Compacting phones...
2022-11-24T14:46:35Z [1303] INFO [99d80] {general} Compacting call_log...
2022-11-24T14:46:35Z [1303] INFO [99d80] {general} --------------------------

有沒有辦法優化它,因為我的實例足以處理它? 這個警告到底是什么意思?

編輯:今天我已經升級到 ArangoDB 3.10.1,並將我的 AWS 實例升級到 c6a.16xlarge(64 個 vCPU)。!! 問題仍然存在。

順便說一句:主要問題不是警告消息本身,而是延遲、數據損壞/寫入鎖定錯誤以及顯示這些警告時發生的巨大延遲。

Dec 01 01:24:31 sudo[1402]: Caused by: com.arangodb.ArangoDBException: Response: 409, Error: 1200 - AQL: timeout waiting to lock key Operation timed out: Timeout waiting to lock key; key: 12430138595 (while executing)
Dec 01 01:24:31 sudo[1402]:         at com.arangodb.internal.util.ResponseUtils.checkError(ResponseUtils.java:55)
Dec 01 01:24:31 sudo[1402]:         at com.arangodb.internal.velocystream.VstCommunication.checkError(VstCommunication.java:157)
Dec 01 01:24:31 sudo[1402]:         at com.arangodb.internal.velocystream.VstCommunicationSync.execute(VstCommunicationSync.java:144)
Dec 01 01:24:31 sudo[1402]:         at com.arangodb.internal.velocystream.VstCommunicationSync.execute(VstCommunicationSync.java:45)
Dec 01 01:24:31 sudo[1402]:         at com.arangodb.internal.velocystream.VstCommunication.execute(VstCommunication.java:149)
Dec 01 01:24:31 sudo[1402]:         at com.arangodb.internal.velocystream.VstCommunication.execute(VstCommunication.java:144)
Dec 01 01:24:31 sudo[1402]:         at com.arangodb.internal.velocystream.VstProtocol.execute(VstProtocol.java:46)
Dec 01 01:24:31 sudo[1402]:         at com.arangodb.internal.ArangoExecutorSync.execute(ArangoExecutorSync.java:71)
Dec 01 01:24:31 sudo[1402]:         at com.arangodb.internal.ArangoExecutorSync.execute(ArangoExecutorSync.java:57)
Dec 01 01:24:31 sudo[1402]:         at com.arangodb.internal.ArangoDatabaseImpl.query(ArangoDatabaseImpl.java:171)
Dec 01 01:24:31 sudo[1402]:         at com.arangodb.springframework.core.template.ArangoTemplate.query(ArangoTemplate.java:358)
Dec 01 01:24:31 sudo[1402]:         at com.arangodb.springframework.repository.query.AbstractArangoQuery.execute(AbstractArangoQuery.java:83)
Dec 01 01:24:31 sudo[1402]:         at org.springframework.data.repository.core.support.QueryExecutorMethodInterceptor$QueryMethodInvoker.invoke(QueryExecutorMethodInterceptor.java:195)
Dec 01 01:24:31 sudo[1402]:         at org.springframework.data.repository.core.support.QueryExecutorMethodInterceptor.doInvoke(QueryExecutorMethodInterceptor.java:152)
Dec 01 01:24:31 sudo[1402]:         at org.springframework.data.repository.core.support.QueryExecutorMethodInterceptor.invoke(QueryExecutorMethodInterceptor.java:130)
Dec 01 01:24:31 sudo[1402]:         at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186)
Dec 01 01:24:31 sudo[1402]:         at org.springframework.aop.interceptor.ExposeInvocationInterceptor.invoke(ExposeInvocationInterceptor.java:95)
Dec 01 01:24:31 sudo[1402]:         at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186)
Dec 01 01:24:31 sudo[1402]:         at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:212)

可能有幾個問題需要查找

如果數據庫負載不重並且運行在快速系統上,您可能需要增加數據庫配置中的--server.background-sync-wait-threshold設置 ( BECAREFULL )。

此設置確定數據庫在發出警告之前等待后台設置同步完成的最長時間。 增加此值將允許數據庫等待更長時間以完成同步,但可能會導致性能下降。

此外,您可以通過查看系統規格(例如 CPU 和磁盤速度)來檢查數據庫是否在慢速系統上運行。 如果系統速度慢,您可能需要升級到更快的系統或使用針對慢速系統優化的數據庫引擎。

數據庫服務器上的重負載也可能引發此問題。

您也可以查看此 GitHub Issue #15080

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM