如何在tomcat上配置jruby on rails
创始人
2024-04-17 10:00:13
0

本文介绍了jruby on rails在tomcat的配置实践。由于要在tomcat上部署3个rails项目,暂时使用的版本是rails1.2.3,jdk6 ,jruby1.1.2,tomcat5.5.12

用了一台非常烂的测试机器(p4 2.8  1g),当然,真实服务器比这个要好多了

1.使用rails开发应用之后,使用goldspike打包,不过我老是不成功,所以基本都手动添加,需要的东西主要是

Web-inf下面的lib:

Java代码

  1. jruby-complete-1.1.2.jar     
  2. mysql-connector-java-5.1.6-bin.jar     
  3. goldspike-1.6.jar     
  4. commons-pool-1.3.jar     
  5. activation-1.1.jar   

web-inf下面的gems,从你的ruby gems那里copy过来就可以了

主要有rails,另外由于使用mysql,所以有

Java代码

  1. activerecord-jdbc-adapter-0.8    
  2. activerecord-jdbcmysql-adapter-0.8    
  3. jdbc-mysql-5.0.4    
  4. jruby-openssl-0.2.3 //可选   

2.修改environment.rb,不过貌似rails2是不需要配置这个的

Ruby代码

  1. if defined?(JRUBY_VERSION)     
  2.   require 'rubygems'    
  3.   gem 'activerecord-jdbc-adapter'    
  4.   require 'jdbc_adapter'    
  5. end   

还有database.yml,使用jndi

Ruby代码

  1. production:  
  2.   adapter: jdbc  
  3.   jndi: java:comp/env/jdbc/gdpolice 

最后是production.rb

Ruby代码

  1. config.cache_classes = true    
  2. config.action_controller.consider_all_requests_local = false    
  3. config.action_controller.perform_caching             = true    
  4. config.action_view.cache_template_loading            = true    
  5. config.breakpoint_server = false   

3.配置web.xml

Xml代码

  1.     
  2.   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"    
  3.   xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"    
  4.   version="2.4">    
  5.         
  6.         jruby.standalone    
  7.         true    
  8.         
  9.         
  10.         rails.env    
  11.         production    
  12.         
  13.         
  14.         files.default    
  15.         rails    
  16.         
  17.          
  18.         
  19.         
  20.         jruby.pool.maxActive    
  21.         10    
  22.         
  23.         
  24.         jruby.pool.maxWait    
  25.         50000    
  26.         
  27.          
  28.         
  29.         
  30.         jruby.objectspace.enabled    
  31.         false    
  32.         
  33.         
  34.         jruby.jit.threshold    
  35.         0    
  36.         
  37.         
  38.         jruby.session_store    
  39.         db    
  40.         
  41.          
  42.         
  43.         rails    
  44.         org.jruby.webapp.RailsServlet    
  45.         
  46.         
  47.         files    
  48.         org.jruby.webapp.FileServlet    
  49.         
  50.         
  51.         org.jruby.webapp.RailsContextListener    
  52.         
  53.     
  54.         
  55.         
  56.         files    
  57.         /    
  58.         
  59.              
  60.         
  61.         jdbc/gdpolice    
  62.         javax.sql.DataSource    
  63.         Container    
  64.         
  65.     
  66.  
  67.  
  68.   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
  69.   xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd" 
  70.   version="2.4"> 
  71.      
  72.         jruby.standalone 
  73.         true 
  74.      
  75.      
  76.         rails.env 
  77.         production 
  78.      
  79.      
  80.         files.default 
  81.         rails 
  82.      
  83.       
  84.      
  85.      
  86.         jruby.pool.maxActive 
  87.         10 
  88.      
  89.      
  90.         jruby.pool.maxWait 
  91.         50000 
  92.      
  93.       
  94.      
  95.      
  96.         jruby.objectspace.enabled 
  97.         false 
  98.      
  99.      
  100.         jruby.jit.threshold 
  101.         0 
  102.      
  103.      
  104.         jruby.session_store 
  105.         db 
  106.      
  107.       
  108.      
  109.         rails 
  110.         org.jruby.webapp.RailsServlet 
  111.      
  112.      
  113.         files 
  114.         org.jruby.webapp.FileServlet 
  115.      
  116.      
  117.         org.jruby.webapp.RailsContextListener 
  118.      
  119.  
  120.      
  121.      
  122.         files 
  123.         / 
  124.      
  125.     
  126.      
  127.         jdbc/gdpolice 
  128.         javax.sql.DataSource 
  129.         Container 
  130.      
  131.  

注明几点:

jruby.standalone为false的时候,需要定义jruby.home

rails.env就对应rails的那几种环境

jruby线程池有几个参数(需要根据情况来配置),如下:

Java代码

  1. jruby.pool.maxActive #最大运行时数量,默认4  
  2. jruby.pool.minIdle #最小运行时数量 默认2  
  3. jruby.pool.initialSize #运行时初始数量 默认jruby.pool.minIdle 的值  
  4. jruby.pool.checkInterval #检查是否需要更多运行时之间的毫秒数 默认1000  
  5. jruby.pool.maxWait #最长等待时间 默认3000 

jruby.objectspace.enabled貌似默认就是false

jruby.jit.threshold设置使用jit编译的方法数量的阀值,为0表示全部使用jit

jruby.session_store为db表示使用rails的db方式保存session

resource-ref只是针对5..5或以下,6.0不需要这个鬼东西

4.配置tomcat

server.xml(其实跟普通的web应用没什么区别,就是配置数据源什么什么的,不说了)

另外有需要注意的是:

Jruby占用的内存,cpu相当惊人,所以要做好准备,需要配置好tomcat的内存参数(具体还是要配合机器)

Java代码

  1. #catalina.sh     
  2. JAVA_OPTS="$JAVA_OPTS -server -Xms512m -Xmx512m -XX:MaxNewSize=256m -XX:PermSize=128m -XX:MaxPermSize=256m"    
  3. #catalina.bat     
  4. set JAVA_OPTS=%JAVA_OPTS% -server -Xms512m -Xmx512m -XX:MaxNewSize=256m -XX:PermSize=128m -XX:MaxPermSize=128m    
  5.  
  6. #catalina.sh  
  7. JAVA_OPTS="$JAVA_OPTS -server -Xms512m -Xmx512m -XX:MaxNewSize=256m -XX:PermSize=128m -XX:MaxPermSize=256m" 
  8. #catalina.bat  
  9. set JAVA_OPTS=%JAVA_OPTS% -server -Xms512m -Xmx512m -XX:MaxNewSize=256m -XX:PermSize=128m -XX:MaxPermSize=128m   

另外,tomcat服务器优化的就不说了,例如加httpd,调节参数,apr,nio之类。。。

5.其他观察结果:由于部署多个rails,用jconsole监测,内存消耗很大,特别是permsize的消耗,一直维持在85m上下,所以导致真实服务器也出项outofmemory。经过测试,把上个项目的lib提取到tomcat的lib去(只保留一份),permsize仅仅维持在50m那样子。另外要尽量使用jruby的新版本,1.1比1.0的性能提升相当大(感觉非常明显)。后来还启用了jruby的server模式,感觉就是tomcat的启动速度慢许多了。。至于性能提升,暂时还没察觉。。jruby有jit和aot两种编译模式,aot只是试过一下,还没跟jit进行过测试对比,暂时不清楚。

6.以上就是jruby on rails在tomcat的配置实践。jruby on rails的部署方式还是挺不错的。现在很期待jruby。

【编辑推荐】

  1. Jython和JRuby,以及Groovy:Java平台的统一认识模型
  2. JRuby 1.3.0 RC1发布 加强对GAE支持
  3. JRuby中调用java带可变参数的方法
  4. 使用Java Web Start部署JRuby应用
  5. JRuby入门教程:从无到有建立第一个Hello World

相关内容

热门资讯

如何允许远程连接到MySQL数... [[277004]]【51CTO.com快译】默认情况下,MySQL服务器仅侦听来自localhos...
如何利用交换机和端口设置来管理... 在网络管理中,总是有些人让管理员头疼。下面我们就将介绍一下一个网管员利用交换机以及端口设置等来进行D...
施耐德电气数据中心整体解决方案... 近日,全球能效管理专家施耐德电气正式启动大型体验活动“能效中国行——2012卡车巡展”,作为该活动的...
20个非常棒的扁平设计免费资源 Apple设备的平面图标PSD免费平板UI 平板UI套件24平图标Freen平板UI套件PSD径向平...
德国电信门户网站可实时显示全球... 德国电信周三推出一个门户网站,直观地实时提供其安装在全球各地的传感器网络检测到的网络攻击状况。该网站...
为啥国人偏爱 Mybatis,... 关于 SQL 和 ORM 的争论,永远都不会终止,我也一直在思考这个问题。昨天又跟群里的小伙伴进行...
《非诚勿扰》红人闫凤娇被曝厕所... 【51CTO.com 综合消息360安全专家提醒说,“闫凤娇”、“非诚勿扰”已经被黑客盯上成为了“木...
2012年第四季度互联网状况报... [[71653]]  北京时间4月25日消息,据国外媒体报道,全球知名的云平台公司Akamai Te...