2010-04-30 39 views
1

我目前在生產中使用ree 1.8.7搭配乘客使用postgresql作爲數據庫的rails 2.3.5項目。rails使用jruby 1.5 - 慢!

AB -n 10000 -c 100:285.69 [#/秒](平均)

我讀jruby的應該是最快的解決方案,所以我用JDBC postgres的適配器一起安裝JRuby的1.5.0.rc2和GlassFish的。由於性能非常差,我還開始使用「jruby --server -J-Druby.jit.threshold = 0 script/server -e production」來運行我的應用程序。反正,我只得到

AB -n 10000 -c 100:43.88 [#/秒(平均)

Thread_safe!在我的rails配置中激活。 Java似乎使用所有內核,CPU使用率大約爲350%(頂部)。 (Java HotSpot(TM)64位服務器VM 1.6.0_16)[amd64-java(ruby 1.8.7 patchlevel 249)(2010-04-28 7c245f3)(Java HotSpot TM 64位服務器VM 1.6.0_16)[amd64-java ]

我不知道我在做什麼錯,以及如何使用jruby比使用ree獲得更好的性能?

感謝, 科林

+0

嘗試使用JRuby 1.4而不是最新的RC。另外,請嘗試增加JVM中的內存和permgen空間。這對我來說很有用,YMMV。 http://blogs.sun.com/watt/resource/jvm-options-list.html – sal 2010-04-30 15:32:32

+0

我聽說有人通過將連接池設置爲1來取得成功。一般來說,對我而言,jruby需要大約兩倍的時間。 .. – rogerdpack 2010-05-24 22:06:55

回答

0

我剛安裝了1.4.1和優化我的GlassFish的配置。不過,這並不在所有幫助:

差50.61 [#/秒(平均)

的JRuby 1.4.1(紅寶石1.8.7補丁號174)(2010-04-26 ea6db6a)(Java的熱點(TM)64位服務器VM 1.6.0_16)[amd64-java]

-server -Dcom.sun.akuma.Daemon = daemonized -Xmx2500m -Xms64m -XX:PermSize = 256m -XX:MaxPermSize = 256m- XX:NewRatio = 2 -XX:+ DisableExplicitGC -Dhk2.file.directory.changeIntervalTimer = 6000 -server -Djruby.memory.max = 500m -Djruby.stack.max = 1024k -Xss1024k -Djna.boot.library.path =/usr/local/rvm/rubies/jruby-1.4.1/lib/native/linux-amd64:/usr/local/rvm/rubies/jruby-1.4.1/lib/native/linux-i386 -Djffi.boot.library 。路徑=/USR /本地/ RVM /紅寶石/ JRuby的1.4.1/LIB /天然的/ i386- Linux:/usr/local/rvm/rubies/jruby-1.4.1/lib/native/s390x-Linux:/usr/local/rvm/rubies/jruby-1.4.1/lib/native/x86_64-Linux -Xbootclasspath/a:/usr/local/rvm/rubies/jruby-1.4.1/lib/jruby.jar:/usr/local/rvm/rubies/jruby-1.4.1/lib/bsf.jar -classpath/usr/local/rvm/rubies/jruby-1.4.1/lib/jruby.jar:/usr/local/rvm/rubies/jruby-1.4.1/lib/profile.jar:-Djruby.home =/usr/local/rvm/rubies /jruby-1.4.1 -Djruby.lib =/usr/local/rvm/rubies/jruby-1.4.1/lib -Djruby.script = jruby -Djruby.shell =/bin/sh org.jruby.Main/usr/local/rvm/gems/jruby-1.4.1/bin/glassfish