1

Ubuntu 10.10 サーバー (openjdk 1.6.0_20 64 ビット) 上の tomcat7 (tomcat6 でもテスト済み) で実行されているサーブレットで次のコードを使用すると、接続が一度確立されると、Java プロセスは 100% 以上の CPU を使用します。

ODatabaseObjectTx db = ODatabaseObjectPool.global().acquire("remote:localhost/test", "test", "test");
db.getEntityManager().registerEntityClass(BlogPost.class);
List<BlogPost> posts = db.query(new OSQLSynchQuery<BlogPost>("select * from BlogPost order by date desc"));
db.close();

この問題を解決する方法を知っている人はいますか?

編集: この問題は、取得直後にも発生します。高負荷の原因となるスレッド「ClientService」が生成されています。いくつかのスレッド ダンプを取得しましたが、このスレッドでは常に同じことが示されます。

"ClientService" daemon prio=10 tid=0x00007f4d88344800 nid=0x558e runnable [0x00007f4d872da000]
   java.lang.Thread.State: RUNNABLE
        at java.util.concurrent.locks.ReentrantLock$Sync.tryRelease(ReentrantLock.java:127)
        at java.util.concurrent.locks.AbstractQueuedSynchronizer.release(AbstractQueuedSynchronizer.java:1239)
        at java.util.concurrent.locks.ReentrantLock.unlock(ReentrantLock.java:431)
        at com.orientechnologies.orient.enterprise.channel.binary.OChannelBinaryAsynch.endResponse(OChannelBinaryAsyn
ch.java:73)
        at com.orientechnologies.orient.client.remote.OStorageRemoteServiceThread.execute(OStorageRemoteServiceThread
.java:59)
        at com.orientechnologies.common.thread.OSoftThread.run(OSoftThread.java:48)

デバッガーでスレッドを一時停止すると、続行を押すまで高負荷が停止します。

4

1 に答える 1

1

acquire() またはクエリの後に発生しますか?

于 2011-06-08T09:29:27.903 に答える