为了优化jboss的性能,对jboss服务器做了如下改动。
1.设置jvm 参数
2.安装jboss-native
3.降低jboss输出日志的等级
4.起用了jboss内的tomcat对传输数据的压缩功能
5.使用ehcache做hibernate的二级缓存
下面就以上的各改动做详细说明,为了表述方便<jboss>代表jboss的安装目录:
设置 jvm 参数
编辑<jboss>/bin/run.conf, 在文件的底部找到对参数JAVA_OPTS进行设置的地方。这个参数会最后传到jvm里。其中
1.-Xms512m 代表jvm最少用 512m内存
2.-Xmx1024m 代表jvm最多使用 1024m内存
修改这个两参数,给jvm分配适当的内存,一般为服务器的3/4内存量,推荐至少使用4G内存。
另外添加两个参数 -XX:+UseParallelGC -XX:+UseParallelOldGC 这两个让服务并行回收内存空间。修改完成后,大致为 JAVA_OPTS = “-Xms4096m -Xmx8192m -XX:+UseParallelGC -XX:+UseParallelOldGC -Dsum…….
2.安装jbossNative
jboss的web container使用的 apache tomcat (http://www.apache.org)。 apache tomcat 有一个扩展包,使tomcat可以通过 java native interface 使用 apache portable runtime (APR),而APR则是大名顶顶的apache httpd 网络服务器的运行时环境。用了这个扩展之后,就使得tomcat可以借助于apache httpd的力量,性能得以提升,尤其是处理静态文件时效率更高。Jboss native,实际上就是tomcat的这个native的扩展,只不过被jboss又添进了一些为了和jboss更好协作而加进去的东西。
要安装jboss native, 按以下步骤进行
1.请到jboss的网站上下载,地址是 http://www.jboss.org/jbossweb/downloads/jboss-native/?action=a&windowstate=maximized, 依据服务器环境选择合适的版本。 目前我们用的版本是JBoss Native 2.0.4 Linux x86 。
2.解压下载后的压缩包到某个目录,比如 jbossNative目录
3.将jbossNative/bin/META-INF/bin/linux2/x86/openssl 复制到<jboss>/bin
4.在<jboss>/bin目录里建一个文件夹,名为 native
5.把jbossNative/bin/META-INF/lib/linux2/x86/ 目录下所有内容复制到上一步建好的<jboss>/bin/native目录下
3.降低jboss输出日志的等级
打开 <jboss>/server/default/conf/jboss-log4j.xml ,这是一个log4j的配置文件。log4j的详细配置说明请参看 http://logging.apache.org/log4j/1.2/index.html 。日志输出的太多,会导致服务器性能降低,所以减少不必要的日志输出。方法大体如下:
1.找到 name=”org.jboss” 的category 元素,设置里面的priority元素为 <priority value=”INFO” />
2.建一个新的category,内容为 <category name=”javax.faces”><priority value=”INFO” /></category>
log4j 还能够将不同的日志输入到不同的地方,为了以后维护方便,应该将不同 category的日志输入到不同的文件里。详细方法参看上面的网站里的说明。
4.启用了jboss内的tomcat对传输数据的压缩功能
合同管理里用了大量的javascript css等,为了减少传输时间,可以起用压缩功能。方法是:
1.打开<jboss>/server/default/deploy/jboss-web.deployer/server.xml
2.找到 protocol=”HTTP/1.1″的 Connector元素,添加属性 URIEncoding=”utf-8″ compression=”on” compressionMinSize=”2048″ noCompressionUserAgents=”gozilla, traviata” compressableMimeType=”text/html,text/xml,text/javascript, text/css, text/plain,application/xhtml+xml,application/x-javascript,application/javascript,text/xhtml”
添加完后类似于:
<Connector port=”8080″ address=”${jboss.bind.address}”
maxThreads=”250″ maxHttpHeaderSize=”8192″
emptySessionPath=”true” protocol=”HTTP/1.1″
enableLookups=”false” redirectPort=”8443″ acceptCount=”100″
connectionTimeout=”20000″ disableUploadTimeout=”true” URIEncoding=”utf-8″ compression=”on” compressionMinSize=”2048″ noCompressionUserAgents=”gozilla, traviata” compressableMimeType=”text/html,text/xml,text/javascript, text/css, text/plain,application/xhtml+xml,application/x-javascript,application/javascript,text/xhtml”/>
5.使用ehcache做hibernate的二级缓存
起用二级缓存,可以大大提高hibernate的运行效率。
1.到http://ehcache.sourceforge.net/ 网站下载 ehcache-1.4.1.tgz
2.解压到某个目录,例如ehcache目录
3.复制 ehcache/ehcache-1.4.1/ehcache-1.4.1.jar, ehcache/ehcache-1.4.1/lib/backport-util-concurrent-3.0.jar和 ehcache/ehcache-1.4.1/lib/jsr107cache-1.0.jar到 <jboss>/server/default/lib目录