|
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
|---|---|
| 作者 | 正文 |
|
最后更新时间:2008-06-15
由于要在tomcat上部署3个rails项目,暂时使用的版本是rails1.2.3,jdk6 ,jruby1.1.2,tomcat5.5.12(都有点旧了) 用了一台非常烂的测试机器(p4 2.8 1g),当然,真实服务器比这个要好n多了。。
1.使用rails开发应用之后,使用goldspike打包,不过我老是不成功,所以基本都手动添加,需要的东西主要是 Web-inf下面的lib: jruby-complete-1.1.2.jar mysql-connector-java-5.1.6-bin.jar goldspike-1.6.jar commons-pool-1.3.jar activation-1.1.jar
web-inf下面的gems,从你的ruby gems那里copy过来就可以了 主要有rails,另外由于使用mysql,所以有 activerecord-jdbc-adapter-0.8 activerecord-jdbcmysql-adapter-0.8 jdbc-mysql-5.0.4 jruby-openssl-0.2.3 //可选
2.修改environment.rb,不过貌似rails2是不需要配置这个的 if defined?(JRUBY_VERSION) require 'rubygems' gem 'activerecord-jdbc-adapter' require 'jdbc_adapter' end Rails::Initializer.run do |config| #.......
还有database.yml,使用jndi production: adapter: jdbc jndi: java:comp/env/jdbc/gdpolice 最后是production.rb config.cache_classes = true config.action_controller.consider_all_requests_local = false config.action_controller.perform_caching = true config.action_view.cache_template_loading = true config.breakpoint_server = false
3.配置web.xml <?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://java.sun.com/xml/ns/j2ee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"
version="2.4">
<context-param>
<param-name>jruby.standalone</param-name>
<param-value>true</param-value>
</context-param>
<context-param>
<param-name>rails.env</param-name>
<param-value>production</param-value>
</context-param>
<context-param>
<param-name>files.default</param-name>
<param-value>rails</param-value>
</context-param>
<!-- 设置jruby线程池参数 -->
<context-param>
<param-name>jruby.pool.maxActive</param-name>
<param-value>10</param-value>
</context-param>
<context-param>
<param-name>jruby.pool.maxWait</param-name>
<param-value>50000</param-value>
</context-param>
<!-- 其他优化设置:objectspace和jit参数,设置session为db方式 -->
<context-param>
<param-name>jruby.objectspace.enabled</param-name>
<param-value>false</param-value>
</context-param>
<context-param>
<param-name>jruby.jit.threshold</param-name>
<param-value>0</param-value>
</context-param>
<context-param>
<param-name>jruby.session_store</param-name>
<param-value>db</param-value>
</context-param>
<servlet>
<servlet-name>rails</servlet-name>
<servlet-class>org.jruby.webapp.RailsServlet</servlet-class>
</servlet>
<servlet>
<servlet-name>files</servlet-name>
<servlet-class>org.jruby.webapp.FileServlet</servlet-class>
</servlet>
<listener>
<listener-class>org.jruby.webapp.RailsContextListener</listener-class>
</listener>
<!-- Allow all requests to go to the files servlet first -->
<servlet-mapping>
<servlet-name>files</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
<resource-ref>
<res-ref-name>jdbc/gdpolice</res-ref-name>
<res-type>javax.sql.DataSource</res-type>
<res-auth>Container</res-auth>
</resource-ref>
</web-app>
注明几点: jruby.standalone为false的时候,需要定义jruby.home rails.env就对应rails的那几种环境 jruby线程池有几个参数(需要根据情况来配置),如下: jruby.pool.maxActive #最大运行时数量,默认4 jruby.pool.minIdle #最小运行时数量 默认2 jruby.pool.initialSize #运行时初始数量 默认jruby.pool.minIdle 的值 jruby.pool.checkInterval #检查是否需要更多运行时之间的毫秒数 默认1000 jruby.pool.maxWait #最长等待时间 默认30000 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的内存参数(具体还是要配合机器) #catalina.sh JAVA_OPTS="$JAVA_OPTS -server -Xms512m -Xmx512m -XX:MaxNewSize=256m -XX:PermSize=128m -XX:MaxPermSize=256m" #catalina.bat 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的部署方式还是挺不错的。现在很期待jruby。如果大家有什么见解,欢迎讨论。。发现什么错误,欢迎回复提出。。
声明:JavaEye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
|
|
| 返回顶楼 | |
|
最后更新时间:2008-06-15
不知道你用jdk多少版本?jdk6跟jdk5跑jruby差别也很大,jdk6跑jruby在CPU和内存上都能降低不少。
|
|
| 返回顶楼 | |
|
最后更新时间:2008-06-15
忘记说了,6.0来的。。。
跑这东西,感觉机器真不容易,哈哈 |
|
| 返回顶楼 | |
浏览 1483 次





