建立连接后,使用100%cpu的Orientdb客户端

时间:2011-06-07 19:21:18

标签: orientdb

当我在Ubuntu 10.10服务器(openjdk 1.6.0_20 64bit)上的tomcat7(也在tomcat6中测试)中运行的servlet中使用以下代码时,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)

当我在调试器中挂起线程时,高负载会停止,直到我按下继续。

1 个答案:

答案 0 :(得分:1)

在acquire()或查询后发生?