0

我有 Jruby on rails Jruby (1.7.5) + MSSQL-2012 + torquebox 2.2.0 + Rails-2.3.18。应用程序连接到数据库没有任何问题。

我安装了 active-recorder-jdbc (1.2.8) * active-record-mssql-jdbc (2.8.1)

问题是如果我命中任何数据库甚至获取单行。大约需要在 938504 毫秒内完成完成请求(查看:4,DB:938497)| 200 OK 该请求花了将近 15 分钟才能完成。

但在前端 UI 中。我得到了 apache 超时错误。我怎样才能检测到问题并解决这个问题。

我拿了线程转储和所有。它显示如下

  • 在 java.util.concurrent.locks.LockSupport.park(LockSupport.java:186) at java.util.concurrent.locks.AbstractQueuedSynchronizer 停车等待 <0x00000000fc85dbe8> (a java.util.concurrent.locks.ReentrantLock$NonfairSync) .parkAndCheckInterrupt(AbstractQueuedSynchronizer.java:834) 在 java.util.concurrent.locks.AbstractQueuedSynchronizer.doAcquireInterruptibly(AbstractQueuedSynchronizer.java:894) 在 java.util.concurrent.locks.AbstractQueuedSynchronizer.acquireInterruptibly(AbstractQueuedSynchronizer.java:1221) 在 java. util.concurrent.locks.ReentrantLock.lockInterruptibly(ReentrantLock.java:340) at org.jruby.RubyThread.lockInterruptibly(RubyThread.java:1461) at org.jruby.ext.thread.Mutex.lock(Mutex.java:91)在 org.jruby.ext.thread.Mutex.synchronize(Mutex.java:147) 在 org.jruby.ext.thread。Mutex$INVOKER$i$0$0$synchronize.call(Mutex$INVOKER$i$0$0$synchronize.gen) 在 org.jruby.runtime.callsite.CachingCallSite.callBlock(CachingCallSite.java:143) 在 org.jruby.runtime。 callsite.CachingCallSite.callIter(CachingCallSite.java:154) 在 org.jruby.ast.CallNoArgBlockNode.interpret(CallNoArgBlockNode.java:64) 在 org.jruby.ast.NewlineNode.interpret(NewlineNode.java:105)
4

1 回答 1

0

似乎可能存在死锁或更可能是一些激烈的争用(在较新的 JRuby 1.7.x 上,您可能会在转储中看到更多有用的痕迹)......尤其是。AR 在 2.3 中的池同时表现不佳。考虑从较新的版本向后移植池,如果使用 AR 会话,还要注意池和所涉及的会话存储存在令人讨厌的错误。

于 2015-10-08T10:15:22.793 回答