4
我們有一個使用一組REST API的單頁Web應用程序。 REST API層基於Jersey,它僅調用OrientDB REST API。我們通過OrientDB REST API調用OrientDB函數。
我們使用OrientDB 2.0.15
OrientDB不斷地引發以下錯誤,即使連接
[OClientConnectionManager]Caught exception
java.lang.IllegalStateException: You have reached maximum pool size for given partition
at com.orientechnologies.common.concur.resource.OPartitionedObjectPool.acquire(OPartitionedObjectPool.java:100)
at com.orientechnologies.orient.core.command.script.ODatabaseScriptManager.acquireEngine(ODatabaseScriptManager.java:91)
at com.orientechnologies.orient.core.command.script.OScriptManager.acquireDatabaseEngine(OScriptManager.java:196)
at com.orientechnologies.orient.core.command.script.OCommandExecutorFunction.executeInContext(OCommandExecutorFunction.java:72)
at com.orientechnologies.orient.core.metadata.function.OFunction.executeInContext(OFunction.java:148)
at com.orientechnologies.orient.server.network.protocol.http.command.all.OServerCommandAbstractLogic.execute(OServerCommandAbstractLogic.java:66)
at com.orientechnologies.orient.server.network.protocol.http.ONetworkProtocolHttpAbstract.service(ONetworkProtocolHttpAbstract.java:176)
at com.orientechnologies.orient.server.network.protocol.http.ONetworkProtocolHttpAbstract.execute(ONetworkProtocolHttpAbstract.java:581)
at com.orientechnologies.common.thread.OSoftThread.run(OSoftThread.java:69)
很少數量我們已經下列屬性設置
<properties>
<entry value="50" name="db.pool.min"/>
<entry value="500" name="db.pool.max"/>
<entry value="false" name="profiler.enabled"/>
<entry value="info" name="log.console.level"/>
<entry value="fine" name="log.file.level"/>
<entry value="10000" name="storage.record.lockTimeout"/>
</properties>
我們假定db.pool.min
和db.pool.max
設置服務器處理的最小和最大db實例。
我們也嘗試用下面的性能;
- db.pool.idleTimeout - 假設這是「在游泳池免費的數據庫的檢查超時」。將其設置爲5000
- db.pool.idleCheckDelay - 假設這是「延遲時間在檢查空閒數據庫」。將其設置爲5000
(注:根據被採取了OGlobalConfiguration.java上述假設)
我們想了解以下;
- 如何克服上述問題
- 如何調整OrientDB的REST API的重載荷
感謝。