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)
デバッガーでスレッドを一時停止すると、続行を押すまで高負荷が停止します。