0

Transnationalグラフを使用してOrientdb 2.2.10でテストを実行しました

シングルスレッドシステムで次のSudoコードを使用

   for(i = 1 to 1000)
{
    DB_Name = getRandomString()

    createGraphDb(DB_Name ) using OServerAdmin : if db do not exist
    gFactory = OrientGraphFactory(DB_Name ) : if db exist


    graph = OrientGraphFactory.getTx()
    previousEvent = null

    for(j=1 to 1000)
      {
        currentEvent = getrandomString()
        if(previousEvent and currentEvent != null)
              {
                   - create Vertex named currentVertex and edges between them 
                   - (from previous to current event)
              }
        else
              {
                    create vertex named current event 
              }
         previousEvent = currentEvent
      }
   graph.shutdown()

}

外側のループを数回繰り返した後、次の例外が発生しました。

Exception in thread "Thread-0" java.lang.OutOfMemoryError: Java heap space
at java.util.Arrays.copyOfRange(Unknown Source)
at java.lang.String.<init>(Unknown Source)
at java.lang.String.substring(Unknown Source)
at java.lang.String.split(Unknown Source)
at java.lang.String.split(Unknown Source)
at com.orientechnologies.orient.core.config.OStorageConfiguration.fromStream(OStorageConfiguration.java:268)
at com.orientechnologies.orient.core.config.OStorageConfiguration.fromStream(OStorageConfiguration.java:497)
at com.orientechnologies.orient.core.config.OStorageConfiguration.load(OStorageConfiguration.java:207)
at com.orientechnologies.orient.client.remote.OStorageRemote.open(OStorageRemote.java:330)
at com.orientechnologies.orient.core.db.document.ODatabaseDocumentTx.open(ODatabaseDocumentTx.java:257)
at com.orientechnologies.orient.core.db.OPartitionedDatabasePool$DatabaseDocumentTxPooled.internalOpen(OPartitionedDatabasePool.java:445)
at com.orientechnologies.orient.core.db.OPartitionedDatabasePool.openDatabase(OPartitionedDatabasePool.java:308)
at com.orientechnologies.orient.core.db.OPartitionedDatabasePool.acquire(OPartitionedDatabasePool.java:263)
at com.tinkerpop.blueprints.impls.orient.OrientBaseGraph.<init>(OrientBaseGraph.java:144)
at com.tinkerpop.blueprints.impls.orient.OrientTransactionalGraph.<init>(OrientTransactionalGraph.java:78)
at com.tinkerpop.blueprints.impls.orient.OrientGraph.<init>(OrientGraph.java:135)
at com.tinkerpop.blueprints.impls.orient.OrientGraphFactory.getTx(OrientGraphFactory.java:119)

私のsudoコードまたはOrientDbに問題がありますか。

より良い方法が存在する場合は、親切に提案してください。

ありがとう..!

4

3 に答える 3

3

RAM は何ギガ利用できますか? たとえば、Java プロセスに最大 8 GB を割り当てることができる場合、通常は小さなヒープと大きなディスク キャッシュ バッファー (オフヒープ メモリ) を割り当てる方が適切です。そうではなく:

java -Xmx8g ...

代わりにこれを試すことができます:

java -Xmx800m -Dstorage.diskCache.bufferSize=7200 ...

詳細については、公式ドキュメントのパフォーマンス チューニングに関するページを参照してください。

それが役に立てば幸い。

于 2016-10-13T13:12:59.727 に答える