team ◦ One of the many hats I wear • Keep the site fast and stable • Major sources of performance issues: ◦ Database queries ◦ Concurrency bugs ◦ Using the wrong algorithms ◦ GC thrashing due to memory leaks • The last one plagued us for a long time
• All the platform support of JVM ◦ Reuse many useful Java class libraries ◦ Debugging and profiling APIs ◦ hprof, jhat, etc. • ...but many of these don't support JRuby well • Luckily, OpenJDK is, well, open-source ◦ Tweak it till it works
non-JDK Rhino for OQL queries ◦ Uses more optimal data structures from Guava and newer JDK • Enable histogram referrer tracing • Peek into data structures like arrays and hashes---even Ruby ones! ◦ Currently shallow only
Find version-independent ways to peek • Support Ruby class hierarchies • Support Ruby stack traces ◦ ...intermingled with Java stack frames • Support other languages
us! class << please = Object.new def us puts "Send your resume to: jruby-#{yield}@on-site.com" end end if your_resume = "rocks" please.send(:us) { your_resume } end