Details
-
Type:
Bug
-
Status:
Closed
-
Priority:
Major
-
Resolution: Fixed
-
Affects Version/s: JRuby 1.1.4, JRuby 1.1.5
-
Fix Version/s: JRuby 1.2
-
Component/s: Performance
-
Labels:None
-
Environment:solaris x86
-
Number of attachments :
Description
Rails application performance degrades with time. The degradation is especially pronounced on database write operations. Preliminary profiles seem to indicate that ConcurrentHashmap.lookup() may be an issue as well as jruby method lookups.
Functions sorted by metric: Exclusive User CPU Time
Excl. Incl. Name
User CPU User CPU
sec. sec.
127.599 127.599 <Total>
8.016 8.826 java.util.concurrent.ConcurrentHashMap$Segment.get(java.lang.Object, int)
7.195 7.195 vtable stub
6.465 21.765 org.jruby.RubyModule.cacheHit(java.lang.String)
6.354 8.946 org.jruby.RubyString.op_equal(org.jruby.runtime.ThreadContext, org.jruby.runtime.builtin.IRubyObject)
4.483 16.842 java.util.concurrent.ConcurrentHashMap.get(java.lang.Object)
4.173 4.173 org.jruby.RubyBasicObject.isTrue()
3.993 43.881 org.jruby.javasupport.util.RuntimeHelpers.invoke(org.jruby.runtime.ThreadContext, org.jruby.runtime.builtin.IRubyObject, java.lang.String, org.jruby.runtime.builtin.IRubyObject)
3.883 39.778 org.jruby.RubyClass.finvoke(org.jruby.runtime.ThreadContext, org.jruby.runtime.builtin.IRubyObject, java.lang.String, org.jruby.runtime.builtin.IRubyObject)
3.522 3.522 java.util.concurrent.ConcurrentHashMap.segmentFor(int)
3.022 49.154 org.jruby.RubyObject.equalInternal(org.jruby.runtime.ThreadContext, org.jruby.runtime.builtin.IRubyObject, org.jruby.runtime.builtin.IRubyObject)
2.612 4.403 java.util.concurrent.ConcurrentHashMap.get(java.lang.Object)
2.582 11.428 org.jruby.RubyString$i_method_1_0$RUBYINVOKER$op_equal.call(org.jruby.runtime.ThreadContext, org.jruby.runtime.builtin.IRubyObject, org.jruby.RubyModule, java.lang.String, org.jruby.runtime.builtin.IRubyObject)
I'm going to proactively mark this resolved. I believe this issue was the tempfile problems Tom found and fixed, so we should not see degrading performance over time any more.