﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>BlogJava-大鱼-随笔分类-JBOSS</title><link>http://www.blogjava.net/luluyanglu/category/41577.html</link><description /><language>zh-cn</language><lastBuildDate>Sun, 18 Apr 2010 07:14:30 GMT</lastBuildDate><pubDate>Sun, 18 Apr 2010 07:14:30 GMT</pubDate><ttl>60</ttl><item><title>JBoss4.2.2配置及优化</title><link>http://www.blogjava.net/luluyanglu/archive/2010/04/16/318533.html</link><dc:creator>大鱼</dc:creator><author>大鱼</author><pubDate>Fri, 16 Apr 2010 08:38:00 GMT</pubDate><guid>http://www.blogjava.net/luluyanglu/archive/2010/04/16/318533.html</guid><wfw:comment>http://www.blogjava.net/luluyanglu/comments/318533.html</wfw:comment><comments>http://www.blogjava.net/luluyanglu/archive/2010/04/16/318533.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/luluyanglu/comments/commentRss/318533.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/luluyanglu/services/trackbacks/318533.html</trackback:ping><description><![CDATA[<br />
<strong>一、设置Connector</strong> <br />
修改server/default/deploy/jboss-web.deployer/server.xml <br />
<div class="dp-highlighter">
<div class="bar">
<div class="tools">Xml代码 <a title="复制代码" onclick="dp.sh.Toolbar.CopyToClipboard(this);return false;" href="http://exceedsun21320070508164500.javaeye.com/blog/299597#"><img alt="复制代码" src="http://exceedsun21320070508164500.javaeye.com/images/icon_copy.gif" /></a></div>
</div>
<ol class="dp-xml">
    <li><span><span class="tag">&lt;</span><span class="tag-name">Connector</span><span>&nbsp;</span><span class="attribute">port</span><span>=</span><span class="attribute-value">"80"</span><span>&nbsp;</span><span class="attribute">address</span><span>=</span><span class="attribute-value">"0.0.0.0"</span><span>&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;</span></span></li>
    <li><span>&nbsp;</span><span class="attribute">maxThreads</span><span>=</span><span class="attribute-value">"250"</span><span>&nbsp;</span><span class="attribute">maxHttpHeaderSize</span><span>=</span><span class="attribute-value">"8192"</span><span>&nbsp;&nbsp;</span></span></li>
    <li><span>&nbsp;</span><span class="attribute">emptySessionPath</span><span>=</span><span class="attribute-value">"true"</span><span>&nbsp;</span><span class="attribute">protocol</span><span>=</span><span class="attribute-value">"HTTP/1.1"</span><span>&nbsp;&nbsp;</span></span></li>
    <li><span>&nbsp;</span><span class="attribute">enableLookups</span><span>=</span><span class="attribute-value">"false"</span><span>&nbsp;</span><span class="attribute">redirectPort</span><span>=</span><span class="attribute-value">"8443"</span><span>&nbsp;</span><span class="attribute">acceptCount</span><span>=</span><span class="attribute-value">"100"</span><span>&nbsp;&nbsp;</span></span></li>
    <li><span>&nbsp;</span><span class="attribute">connectionTimeout</span><span>=</span><span class="attribute-value">"20000"</span><span>&nbsp;</span><span class="attribute">disableUploadTimeout</span><span>=</span><span class="attribute-value">"true"</span><span>&nbsp;&nbsp;</span></span></li>
    <li><span>&nbsp;</span><span class="attribute">compression</span><span>=</span><span class="attribute-value">"on"</span><span>&nbsp;</span><span class="attribute">compressableMimeType</span><span>=</span><span class="attribute-value">"text/html,text/xml,text/plain,text/css,text/javascript,application/xhtml+xml,application/x-javascript,application/javascript,text/xhtml"</span><span>&nbsp;&nbsp;</span></span></li>
    <li><span class="tag">/&gt;</span><span>&nbsp;&nbsp;</span></span></li>
</ol>
</div>
<pre class="xml" style="display: none" name="code">&lt;Connector port="80" address="0.0.0.0"
maxThreads="250" maxHttpHeaderSize="8192"
emptySessionPath="true" protocol="HTTP/1.1"
enableLookups="false" redirectPort="8443" acceptCount="100"
connectionTimeout="20000" disableUploadTimeout="true"
compression="on" compressableMimeType="text/html,text/xml,text/plain,text/css,text/javascript,application/xhtml+xml,application/x-javascript,application/javascript,text/xhtml"
/&gt;
</pre>
<br />
prot="80" 修改端口为80 <br />
address="0.0.0.0" 任何IP都可以访问 <br />
compression="on" compressableMimeType="..." 启动GZIP压缩 <br />
maxThreads等优化待续... <br />
<strong>二、调整JVM</strong> <br />
修改bin/run.conf <br />
<div class="dp-highlighter">
<div class="bar">
<div class="tools">Java代码 <a title="复制代码" onclick="dp.sh.Toolbar.CopyToClipboard(this);return false;" href="http://exceedsun21320070508164500.javaeye.com/blog/299597#"><img alt="复制代码" src="http://exceedsun21320070508164500.javaeye.com/images/icon_copy.gif" /></a></div>
</div>
<ol class="dp-j">
    <li><span><span class="keyword">if</span><span>&nbsp;[&nbsp;</span><span class="string">"x$JAVA_OPTS"</span><span>&nbsp;=&nbsp;</span><span class="string">"x"</span><span>&nbsp;];&nbsp;then &nbsp;&nbsp;</span></span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;JAVA_OPTS=</span><span class="string">"-Xms6g&nbsp;-Xmx6g&nbsp;-XX:PermSize=128m&nbsp;-XX:MaxPermSize=1024m&nbsp;-XX:+UseParallelGC&nbsp;-XX:+UseParallelOldGC"</span><span>&nbsp;&nbsp;</span></span></li>
    <li><span>fi&nbsp;&nbsp;</span></li>
</ol>
</div>
<pre class="java" style="display: none" name="code">if [ "x$JAVA_OPTS" = "x" ]; then
JAVA_OPTS="-Xms6g -Xmx6g -XX:PermSize=128m -XX:MaxPermSize=1024m -XX:+UseParallelGC -XX:+UseParallelOldGC"
fi
</pre>
<br />
-Xms6g -Xmx6g 使用6G内存 最大最小相同 避免每次垃圾回收完成后重新分配内存 <br />
-XX:+UseParallelGC 并行垃圾回收 避免长时间的服务中断 <br />
-XX:+UseParallelOldGC 并行回收年老代(从JDK6.0开始支持) <br />
-XX:PermSize=128m -XX:MaxPermSize=1024m 持久代大小 需要根据实际情况配置 hibernate,seam,spring等项目需要设置大些 <br />
<strong>三、去除不必要的日志输出</strong> <br />
修改server/default/conf/jboss-log4j.xml <br />
<div class="quote_title">引用</div>
<div class="quote_div"><br />
&lt;appender name="FILE" class="org.jboss.logging.appender.DailyRollingFileAppender"&gt; <br />
&nbsp;&nbsp; &lt;errorHandler class="org.jboss.logging.util.OnlyOnceErrorHandler"/&gt; <br />
&nbsp;&nbsp; &lt;param name="File" value="${jboss.server.log.dir}/server.log"/&gt; <br />
&nbsp;&nbsp; &lt;param name="Append" value="<span style="color: red">true</span>"/&gt; <br />
&nbsp;&nbsp; <span style="color: red">&lt;param name="Threshold" value="ERROR"/&gt;</span> <br />
</div>
<br />
<div class="quote_title">引用</div>
<div class="quote_div"><br />
&lt;root&gt; <br />
&nbsp;&nbsp;&nbsp; <span style="color: red">&lt;appender-ref ref="CONSOLE"/&gt;</span> &lt;!-- 删除此行 --&gt; <br />
&nbsp;&nbsp;&nbsp; &lt;appender-ref ref="FILE"/&gt; <br />
&lt;/root&gt; <br />
</div>
<br />
Append设置为true 重启服务不覆盖日志 <br />
添加&lt;param name="Threshold" value="ERROR"/&gt; 只有ERROR级别以上才记录日志 <br />
删除&lt;appender-ref ref="CONSOLE"/&gt; 不在控制台输出日志 <br />
<strong>四、Jboss数据库连接池优化</strong> <br />
<div class="dp-highlighter">
<div class="bar">
<div class="tools">Xml代码 <a title="复制代码" onclick="dp.sh.Toolbar.CopyToClipboard(this);return false;" href="http://exceedsun21320070508164500.javaeye.com/blog/299597#"><img alt="复制代码" src="http://exceedsun21320070508164500.javaeye.com/images/icon_copy.gif" /></a></div>
</div>
<ol class="dp-xml">
    <li><span><span class="tag">&lt;</span><span class="tag-name">datasources</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="tag">&lt;</span><span class="tag-name">local-tx-datasource</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="tag">&lt;</span><span class="tag-name">jndi-name</span><span class="tag">&gt;</span><span>datasource</span><span class="tag">&lt;/</span><span class="tag-name">jndi-name</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="tag">&lt;</span><span class="tag-name">connection-url</span><span class="tag">&gt;</span><span>jdbc:mysql://localhost:3306/db?</span><span class="attribute">useUnicode</span><span>=</span><span class="attribute-value">true</span><span>&amp;amp;</span><span class="attribute">characterEncoding</span><span>=</span><span class="attribute-value">utf8</span><span class="tag">&lt;/</span><span class="tag-name">connection-url</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="tag">&lt;</span><span class="tag-name">driver-class</span><span class="tag">&gt;</span><span>com.mysql.jdbc.Driver</span><span class="tag">&lt;/</span><span class="tag-name">driver-class</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="tag">&lt;</span><span class="tag-name">user-name</span><span class="tag">&gt;</span><span>root</span><span class="tag">&lt;/</span><span class="tag-name">user-name</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="tag">&lt;</span><span class="tag-name">password</span><span class="tag">&gt;</span><span>root</span><span class="tag">&lt;/</span><span class="tag-name">password</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="tag">&lt;</span><span class="tag-name">min-pool-size</span><span class="tag">&gt;</span><span>100</span><span class="tag">&lt;/</span><span class="tag-name">min-pool-size</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="tag">&lt;</span><span class="tag-name">max-pool-size</span><span class="tag">&gt;</span><span>500</span><span class="tag">&lt;/</span><span class="tag-name">max-pool-size</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="tag">&lt;</span><span class="tag-name">exception-sorter-class-name</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;org.jboss.resource.adapter.jdbc.vendor.MySQLExceptionSorter &nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="tag">&lt;/</span><span class="tag-name">exception-sorter-class-name</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="tag">&lt;</span><span class="tag-name">metadata</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="tag">&lt;</span><span class="tag-name">type-mapping</span><span class="tag">&gt;</span><span>mySQL</span><span class="tag">&lt;/</span><span class="tag-name">type-mapping</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="tag">&lt;/</span><span class="tag-name">metadata</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="tag">&lt;/</span><span class="tag-name">local-tx-datasource</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></span></li>
    <li><span class="tag">&lt;/</span><span class="tag-name">datasources</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></span></li>
</ol>
</div>
<pre class="xml" style="display: none" name="code">&lt;datasources&gt;
&lt;local-tx-datasource&gt;
&lt;jndi-name&gt;datasource&lt;/jndi-name&gt;
&lt;connection-url&gt;jdbc:mysql://localhost:3306/db?useUnicode=true&amp;amp;characterEncoding=utf8&lt;/connection-url&gt;
&lt;driver-class&gt;com.mysql.jdbc.Driver&lt;/driver-class&gt;
&lt;user-name&gt;root&lt;/user-name&gt;
&lt;password&gt;root&lt;/password&gt;
&lt;min-pool-size&gt;100&lt;/min-pool-size&gt;
&lt;max-pool-size&gt;500&lt;/max-pool-size&gt;
&lt;exception-sorter-class-name&gt;
org.jboss.resource.adapter.jdbc.vendor.MySQLExceptionSorter
&lt;/exception-sorter-class-name&gt;
&lt;metadata&gt;
&lt;type-mapping&gt;mySQL&lt;/type-mapping&gt;
&lt;/metadata&gt;
&lt;/local-tx-datasource&gt;
&lt;/datasources&gt;
</pre>
<br />
<strong>五、安全</strong> <br />
&nbsp;&nbsp;&nbsp; 1、关闭jmx-console <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 删除server/default/deploy/jmx-console.war和server/default/deploy/management <br />
&nbsp;&nbsp;&nbsp; 2、关闭web-console和status统计 <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 删除server/default/deploy/jboss-web.deployer/ROOT.war <br />
&nbsp;&nbsp;&nbsp; 3、测试： <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; http://127.0.0.1/jmx-console <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; http://127.0.0.1/web-console <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; http://127.0.0.1/status <script type="text/javascript"><!-- google_ad_client="pub-4348265167276910" ;
/* 468x60, 个人博客 */ google_ad_slot="2046406163" ; google_ad_width="468;
google_ad_height" = 60;
//-->
</script><script src="http://pagead2.googlesyndication.com/pagead/show_ads.js" type="text/javascript">
</script><script src="http://pagead2.googlesyndication.com/pagead/expansion_embed.js"></script><script src="http://googleads.g.doubleclick.net/pagead/test_domain.js"></script><script src="http://pagead2.googlesyndication.com/pagead/render_ads.js"></script><script>google_protectAndRun("render_ads.js::google_render_ad", google_handleError, google_render_ad);</script>
<img src ="http://www.blogjava.net/luluyanglu/aggbug/318533.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/luluyanglu/" target="_blank">大鱼</a> 2010-04-16 16:38 <a href="http://www.blogjava.net/luluyanglu/archive/2010/04/16/318533.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>JBOSS4 性能优化设置</title><link>http://www.blogjava.net/luluyanglu/archive/2010/04/16/318532.html</link><dc:creator>大鱼</dc:creator><author>大鱼</author><pubDate>Fri, 16 Apr 2010 08:35:00 GMT</pubDate><guid>http://www.blogjava.net/luluyanglu/archive/2010/04/16/318532.html</guid><wfw:comment>http://www.blogjava.net/luluyanglu/comments/318532.html</wfw:comment><comments>http://www.blogjava.net/luluyanglu/archive/2010/04/16/318532.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/luluyanglu/comments/commentRss/318532.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/luluyanglu/services/trackbacks/318532.html</trackback:ping><description><![CDATA[<p><strong>JVM</strong><strong><span style="font-family: 宋体">优化</span></strong></p>
<p>vi /usr/jboss/bin/run.conf</p>
<p><span style="font-family: 宋体">原文</span></p>
<p>if [ "x$JAVA_OPTS" = "x" ]; then</p>
<p>&nbsp;&nbsp; JAVA_OPTS="-Xms128m -Xmx512m -Dsun.rmi.dgc.client.gcInterval=3600000 -Dsun.rmi.dgc.server.gcInterval=3600000"</p>
<p>fi</p>
<p><span style="font-family: 宋体">修改为</span></p>
<p>if [ "x$JAVA_OPTS" = "x" ]; then</p>
<p>&nbsp;&nbsp; JAVA_OPTS="-Xms1600m -Xmx1600m -XX:PermSize=128m -XX:MaxPermSize=1024m -XX:+UseParallelGC -XX:+UseParallelOldGC -Dsun.rmi.dgc.client.gcInterval=3600000 -Dsun.rmi.dgc.server.gcInterval=3600000"</p>
<p>fi</p>
<p>-Xms1600m -Xmx1600m <span style="font-family: 宋体">使用</span>1600M<span style="font-family: 宋体">内存</span> <span style="font-family: 宋体">最大最小相同</span> <span style="font-family: 宋体">避免每次垃圾回收完成后重新分配内存</span></p>
<p>-XX:+UseParallelGC <span style="font-family: 宋体">并行垃圾回收</span> <span style="font-family: 宋体">避免长时间的服务中断</span></p>
<p>-XX:+UseParallelOldGC <span style="font-family: 宋体">并行回收年老代</span>(<span style="font-family: 宋体">从</span>JDK6.0<span style="font-family: 宋体">开始支持</span>)</p>
<p>-XX:PermSize=128m -XX:MaxPermSize=1024m <span style="font-family: 宋体">持久代大小</span> <span style="font-family: 宋体">需要根据实际情况配置</span> hibernate,seam,spring<span style="font-family: 宋体">等项目需要设置大些</span></p>
<p>-Dclient.encoding.override=GBK&nbsp;&nbsp; <span style="font-family: 宋体">设置字符集</span></p>
<p>-Djava.awt.headless=true&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="font-family: 宋体">好像和处理页面显示图片等有关</span></p>
<p>-XX:SurvivorRatio=16&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="font-family: 宋体">将</span> Java <span style="font-family: 宋体">堆划分为旧对象（长生命周期对象）区域和新对象区域。新对象区域进一步细分为两部分，第一部分用于分配给新对象（初始区域），第二部分存放那些经过其前几次垃圾回收之后、但在被提升为旧对象之前仍在使用中的新对象（幸存者空间）。幸存者比率是堆的新对象区域中初始区域与幸存者空间的比率。增大此设置将针对</span> <span style="font-family: 宋体">需要创建大量对象但仅保留少量对象的应用程序优化</span> JVM<span style="font-family: 宋体">。</span></p>
<p>-Xnoclassgc&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="font-family: 宋体">禁用类垃圾收集</span></p>
<p><strong><span style="font-family: 宋体">修改</span>server.xml</strong><strong><span style="font-family: 宋体">文件</span></strong></p>
<p>&nbsp;&lt;Connector port="8080" address="0.0.0.0"&nbsp;&nbsp;&nbsp; </p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; maxThreads="250" maxHttpHeaderSize="8192"</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; emptySessionPath="true" protocol="HTTP/1.1"</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; enableLookups="false" redirectPort="8443" acceptCount="100"</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; connectionTimeout="20000" disableUploadTimeout="true" </p>
<p>&nbsp;/&gt;</p>
<p><span style="font-family: 宋体">修改后</span></p>
<p>&nbsp;&lt;Connector port="8080" address="0.0.0.0"&nbsp;&nbsp;&nbsp; </p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; maxThreads="250" maxHttpHeaderSize="8192"</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; emptySessionPath="true" protocol="HTTP/1.1"</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; enableLookups="false" redirectPort="8443" acceptCount="100"</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; connectionTimeout="20000" disableUploadTimeout="true" </p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; compression="on" compressableMimeType="text/html,text/xml,text/plain,text/css,text/javascript,application/xhtml+xml,application/x-javascript,application/javascript,text/xhtml"&nbsp;/&gt;</p>
<p>compression="on" compressableMimeType=""<span style="font-family: 宋体">用来启用</span>GZIP<span style="font-family: 宋体">压缩</span></p>
<p><strong><span style="font-family: 宋体">日志修改</span></strong></p>
<p>server/default/conf/jboss-log4j.xml</p>
<p><span style="font-family: 宋体">查找</span></p>
<p>&lt;param name="Append" value="false"/&gt;</p>
<p><span style="font-family: 宋体">改为</span></p>
<p>&lt;param name="Append" value="true"/&gt;</p>
<p>&lt;param name="Threshold" value="ERROR"/&gt;&nbsp;//<span style="font-family: 宋体">此行为自己添加</span></p>
<p>&nbsp;&lt;root&gt;</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;appender-ref ref="CONSOLE"/&gt;&nbsp;&lt;---<span style="font-family: 宋体">删除此行</span>---&gt;</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;appender-ref ref="FILE"/&gt;</p>
<p>&nbsp;&nbsp; &lt;/root&gt;</p>
<p>Append<span style="font-family: 宋体">设置为</span>true <span style="font-family: 宋体">重启服务不覆盖日志</span></p>
<p><span style="font-family: 宋体">添加</span>&lt;param name="Threshold" value="ERROR"/&gt; <span style="font-family: 宋体">只有</span>ERROR<span style="font-family: 宋体">级别以上才记录日志</span></p>
<p><span style="font-family: 宋体">删除</span>&lt;appender-ref ref="CONSOLE"/&gt; <span style="font-family: 宋体">不在控制台输出日志</span></p>
<p><strong><span style="font-family: 宋体">连接池修改</span></strong></p>
<p>&lt;min-pool-size&gt;30&lt;/min-pool-size&gt;&lt;!-- 30 --&gt;&nbsp;<span style="font-family: 宋体">连接池保持最小连接数</span></p>
<p>&lt;max-pool-size&gt;500&lt;/max-pool-size&gt;&lt;!-- 100 --&gt; <span style="font-family: 宋体">连接池保持最大连接数</span></p>
<p>&lt;idle-timeout-minutes&gt;3&lt;/idle-timeout-minutes&gt;&nbsp;&nbsp;&nbsp; &lt;!-- <span style="font-family: 宋体">数据库连接空闲时间，单位为分钟，如果负载较大，可以设为</span>5<span style="font-family: 宋体">，如果一般，可以设为</span>3 --&gt;</p>
<p><strong><span style="font-family: 宋体">关闭系统不需要的服务</span></strong></p>
<p>#setup&nbsp;&nbsp; <span style="font-family: 宋体">选择系统服务</span></p>
<p>anacron&nbsp;&nbsp;&nbsp; (<span style="font-family: 宋体">系統</span>)<span style="font-family: 宋体">與循環型的工作排程</span> cron <span style="font-family: 宋体">有關，可在排程過期後還可以喚醒來繼續執行，</span> <span style="font-family: 宋体">設定檔在</span> /etc/anacrontab<span style="font-family: 宋体">。</span></p>
<p>apmd&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (<span style="font-family: 宋体">系統</span>)<span style="font-family: 宋体">設定檔在</span> /etc/sysconfig/apmd <span style="font-family: 宋体">，也是電源管理模組啦！</span> <span style="font-family: 宋体">可偵測電池電量，當電池電力不足時，可以自動關機以保護電腦主機。</span></p>
<p>autofs&nbsp;&nbsp;&nbsp; (<span style="font-family: 宋体">系統</span>)<span style="font-family: 宋体">可用來自動掛載來自網路上的其他伺服器所提供的網路磁碟機</span> (<span style="font-family: 宋体">一般是</span> NFS)<span style="font-family: 宋体">。</span> <span style="font-family: 宋体">不過我們是單機系統，所以目前還沒必要這個服務。</span></p>
<p>avahi-daemon&nbsp;(<span style="font-family: 宋体">系統</span>)<span style="font-family: 宋体">也是一個用戶端的服務，可以透過</span> Zeroconf <span style="font-family: 宋体">自動的分析與管理網路。</span> Zeroconf <span style="font-family: 宋体">較常用在筆記型電腦與行動裝置上，所以我們可以先關閉他啦！</span></p>
<p>bluetooth&nbsp;&nbsp;&nbsp; (<span style="font-family: 宋体">系統</span>)<span style="font-family: 宋体">用在藍芽裝置的搜尋上，如果</span> Linux <span style="font-family: 宋体">是當作伺服器使用時，</span> <span style="font-family: 宋体">這個服務可以暫時關閉也沒關係！</span></p>
<p>cups&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (<span style="font-family: 宋体">網路</span>)<span style="font-family: 宋体">用來管理印表機的服務，可以提供網路連線的功能，有點類似列印伺服器的功能哩！</span> <span style="font-family: 宋体">你可以在</span> Linux <span style="font-family: 宋体">本機上面以瀏覽器的</span> http://localhost:631 <span style="font-family: 宋体">來管理印表機喔！由於我們目前沒有印表機，所以可以暫時關閉他。</span></p>
<p>firstboot&nbsp;&nbsp; (<span style="font-family: 宋体">系統</span>)<span style="font-family: 宋体">還記得系統第一次進入圖形介面還需要進行一些額外的設定嗎？</span> <span style="font-family: 宋体">就是這個服務的幫忙啦！既然已經安裝妥當，現在你可以將這個服務關閉囉。</span></p>
<p>hidd&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (<span style="font-family: 宋体">系統</span>)<span style="font-family: 宋体">也是藍芽服務的功能啦！可以提供鍵盤、滑鼠等藍芽裝置的偵測哩！</span> <span style="font-family: 宋体">須搭配</span> bluetooth<span style="font-family: 宋体">。伺服器環境倒是不需要此項服務</span></p>
<p>hplip&nbsp;&nbsp;&nbsp;&nbsp; (<span style="font-family: 宋体">系統</span>)<span style="font-family: 宋体">主要是針對</span> HP <span style="font-family: 宋体">的印表機功能所開發的腳本服務，如果你的環境中並沒有</span> HP <span style="font-family: 宋体">相關設備，這個服務就給他關閉吧！</span></p>
<p>ip6tables&nbsp;&nbsp; (<span style="font-family: 宋体">網路</span>)<span style="font-family: 宋体">是針對本機的防火牆功能！這個防火牆主要是針對</span> IPv6 <span style="font-family: 宋体">的版本，</span> <span style="font-family: 宋体">如果你的網路環境並沒有</span> IPv6 <span style="font-family: 宋体">的設備，那麼這個服務是可以關閉的。</span></p>
<p>isdn&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (<span style="font-family: 宋体">網路</span>)ISDN <span style="font-family: 宋体">是一種寬頻設備</span> (<span style="font-family: 宋体">數據機的一種</span>) <span style="font-family: 宋体">，但是在台灣我們比較常使用</span> ADSL <span style="font-family: 宋体">及光纖設備，</span> <span style="font-family: 宋体">所以這個服務是可以關閉啦。</span></p>
<p>lm_sensors&nbsp;&nbsp;&nbsp; (<span style="font-family: 宋体">系統</span>)<span style="font-family: 宋体">這個服務可以幫你偵測主機板的相關偵測晶片，舉例來說，</span> <span style="font-family: 宋体">某些主機板會主動的偵測</span> CPU <span style="font-family: 宋体">溫度、頻率、電壓等，這個</span> lm_sensors <span style="font-family: 宋体">能夠將這些溫度、頻率等數據顯示出來喔！不過你得要先設定過就是了。</span></p>
<p>pcscd&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (<span style="font-family: 宋体">系統</span>)<span style="font-family: 宋体">智慧卡偵測的服務，可以關閉他啦。</span></p>
<p>%%%%%%%%%%%%%<strong><span style="font-size: 16pt; font-family: 宋体">未修改部分</span></strong>%%%%%%%%%%%%</p>
<p><strong><span style="font-family: 宋体">安全</span></strong></p>
<p>&nbsp;&nbsp;&nbsp; 1<span style="font-family: 宋体">、关闭</span>jmx-console</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="font-family: 宋体">删除</span>server/default/deploy/jmx-console.war<span style="font-family: 宋体">和</span>server/default/deploy/management</p>
<p>&nbsp;&nbsp;&nbsp; 2<span style="font-family: 宋体">、关闭</span>web-console<span style="font-family: 宋体">和</span>status<span style="font-family: 宋体">统计</span></p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="font-family: 宋体">删除</span>server/default/deploy/jboss-web.deployer/ROOT.war </p>
<p><strong>Jboss</strong><strong><span style="font-family: 宋体">部署目录优化：</span></strong></p>
<p>&nbsp;&nbsp;&nbsp;&nbsp; <span style="font-family: 宋体">去掉和应用无关的部署，加快</span>jboss<span style="font-family: 宋体">运行速度</span></p>
<p>bsh-deployer.xml</p>
<p>client-deployer-service.xml&nbsp;</p>
<p>ear-deployer.xml</p>
<p>ejb-deployer.xml</p>
<p>http-invoker.sar</p>
<p>jboss-bean.deployer</p>
<p>jboss-ws4ee.sar</p>
<p>jms</p>
<p>jsr88-service.xml&nbsp;&nbsp; </p>
<p>schedule-manager-service.xml</p>
<p>scheduler-service.xml</p>
<p>sqlexception-service.xml</p>
<p>uuid-key-generator.sar</p>
<br />
待续。。。。<br />
注：后面好像有错。。。。小心使用。<br />
<img src ="http://www.blogjava.net/luluyanglu/aggbug/318532.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/luluyanglu/" target="_blank">大鱼</a> 2010-04-16 16:35 <a href="http://www.blogjava.net/luluyanglu/archive/2010/04/16/318532.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>JBOSS4.2.2　EJB　WEB 群集配置与部署全过程</title><link>http://www.blogjava.net/luluyanglu/archive/2010/04/14/318270.html</link><dc:creator>大鱼</dc:creator><author>大鱼</author><pubDate>Wed, 14 Apr 2010 08:33:00 GMT</pubDate><guid>http://www.blogjava.net/luluyanglu/archive/2010/04/14/318270.html</guid><wfw:comment>http://www.blogjava.net/luluyanglu/comments/318270.html</wfw:comment><comments>http://www.blogjava.net/luluyanglu/archive/2010/04/14/318270.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/luluyanglu/comments/commentRss/318270.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/luluyanglu/services/trackbacks/318270.html</trackback:ping><description><![CDATA[1. 修改虚拟机的参数run.bat或run..conf 文件中的jvm堆大小，如果是用Sun或HP的JDK需要设置MaxPermSize<br />
如：<br />
set JAVA_OPTS=%JAVA_OPTS% -Xms256m -Xmx1024m -XX:MaxPermSize=128m<br />
2. 启动执行$JBOSS_HOME\bin\run.sh 或run.bat<br />
执行 run.bat &#8211;h 显示帮助<br />
usage: run.bat <br />
<br />
options:<br />
-h, --help Show this help message<br />
-V, --version Show version information<br />
-- Stop processing options<br />
-D<name>[=<value>] Set a system property<br />
-d, --bootdir=
<dir>Set the boot patch directory; Must be absolute or url<br />
-p, --patchdir=
<dir>Set the patch directory; Must be absolute or url<br />
-n, --netboot=<url> Boot from net with the given url as base<br />
-c, --configuration=<name> Set the server configuration name <br />
-B, --bootlib=<filename> Add an extra library to the front bootclasspath<br />
-L, --library=<filename> Add an extra library to the loaders classpath<br />
-C, --classpath=<url> Add an extra url to the loaders classpath<br />
-P, --properties=<url> Load system properties from the given url<br />
-b, --host=<host or ip> Bind address for all JBoss services<br />
-g, --partition=<name> HA Partition name (default=DefaultDomain) <br />
-u, --udp=<ip> UDP multicast address<br />
-l, --log=<log4j|jdk> Specify the logger plugin type<br />
<br />
如启动所有配置并绑定IP为192.168.101.20<br />
run.sh &#8211;c all &#8211;b 192.168.101.20<br />
3. 停止执行$JBOSS_HOME\bin\ shutdown.sh 或shutdown.bat<br />
shutdown.sh -S<br />
4. 配置控制台安全5. 数据库连接池将$JBOSS_HOME \docs\examples\jca\oracle-ds.xml复制为$JBOSS_HOME\server\default\deploy\trms-ds.xml并修改连接参数。<br />
如下:<br />
<?xml version="1.0" encoding="UTF-8"  ?><br />
<datasources><br />
<local-tx-datasource><br />
<jndi-name>rmsdatasource</jndi-name><br />
<connection-url>jdbc:oracle:thin:@192.168.100.54:1529:trms</connection-url><br />
<driver-class>oracle.jdbc.driver.OracleDriver</driver-class><br />
<user-name>rms</user-name><br />
<password>rms</password>
<br />
<!-- Uses the pingDatabase method to check a connection is still valid before handing it out from the pool --><br />
<!--valid-connection-checker-class-name>org.jboss.resource.adapter.jdbc.vendor.OracleValidConnectionChecker</valid-connection-checker-class-name--><br />
<!-- Checks the Oracle error codes and messages for fatal errors --><br />
<exception-sorter-class-name>org.jboss.resource.adapter.jdbc.vendor.OracleExceptionSorter</exception-sorter-class-name><br />
<br />
<!-- corresponding type-mapping in the standardjbosscmp-jdbc.xml (optional) --><br />
<!-- The minimum connections in a pool/sub-pool. Pools are lazily constructed on first use --><br />
<min-pool-size>5</min-pool-size><br />
<br />
<!-- The maximum connections in a pool/sub-pool --><br />
<max-pool-size>20</max-pool-size><br />
<br />
<!-- The time before an unused connection is destroyed --><br />
<!-- NOTE: This is the check period. It will be destroyed somewhere between 1x and 2x this timeout after last use --><br />
<!-- TEMPORARY FIX! - Disable idle connection removal, HSQLDB has a problem with not reaping threads on closed connections --><br />
<idle-timeout-minutes>0</idle-timeout-minutes><br />
<metadata /><br />
<type-mapping>Oracle9i</type-mapping><br />
</metadata>
<br />
</local-tx-datasource><br />
<br />
</datasources><br />
6. 配置服务器日志$JBOSS_HOME\server\default\conf\jboss-log4j.xml<br />
<br />
注释按日期滚动的日志<br />
<!-- A time/date based rolling appender<br />打开按文件大小滚动的日志<br />   <!-- A size based file rolling appender --><br />
<appender class="org.jboss.logging.appender.RollingFileAppender" name="FILE"><br />
<errorhandler class="org.jboss.logging.util.OnlyOnceErrorHandler" /><br />
<param name="File" value="${jboss.server.log.dir}/server.log" /><br />
<param name="Append" value="false" /><br />
<param name="MaxFileSize" value="10240KB" /><br />
<param name="MaxBackupIndex" value="10" /><br />
<param name="Threshold" value="INFO" /><br />
<layout class="org.apache.log4j.PatternLayout"><br />
<param name="ConversionPattern" value="%d %-5p [%c] %m%n" /><br />
</layout><br />
</appender><br />
7. 配置服务端lib包将应用程序的包复制到$JBOSS_HOME \server\default\lib下，并下删与JBOSS冲突的应用包<br />
<br />
antlr-2.7.6.jar<br />
cglib-nodep-2.1_3.jar<br />
commons-collections-3.2.jar<br />
commons-logging-1.1.jar<br />
dom4j-1.6.1.jar<br />
junit-4.1.jar<br />
quartz-1.5.2.jar<br />
<br />
r<br />
8. 配置EJB调用从容器外能够正常调用EJB，但是web 应用中spring bean调用EJB出现下面异常 <bean class="org.springframework.ejb.access.SimpleRemoteStatelessSessionProxyFactoryBean" id="secuContainerBo">
<property name="jndiName" value="oss.service.security.business.SecuContainerBo"></property>
<property name="businessInterface" value="oss.service.security.business.ISecuContainerBo"></property>
<property name="lookupHomeOnStartup" value="false"></property>
</bean><br />
RemoteProxyFailureException: No matching RMI stub method found for: public abstract <br />
从JSP页面直接调用EJB <%     Hashtable   hs   =   new   Hashtable();      hs.put("java.naming.factory.initial","org.jnp.interfaces.NamingContextFactory");     hs.put("java.naming.provider.url","jnp://localhost:1099");      hs.put("java.naming.factory.url.pkgs","org.jboss.naming:org.jnp.interfaces");     Context   iniCtx   =   new   InitialContext(hs);     Object   ref   =   iniCtx.lookup("oss.service.security.business.SecuContainerBo");        oss.service.security.business.SecuContainerBoEJBHome     ejbHomeObject   =   (oss.service.security.business.SecuContainerBoEJBHome)   PortableRemoteObject.narrow(ref,   oss.service.security.business.SecuContainerBoEJBHome.class);      out.print((ejbHomeObject.create()).loadAllAuth(new oss.service.security.domain.SysStaffMember()));     %>java.rmi.ServerException: EJBException:; nested exception is: javax.ejb.EJBException: Invalid invocation, check your deployment packaging, method=public abstract<br />
<br />
解决办法：<br />
1.修改 conf/jboss-service.xml 中NamingService 的CallByValue 参数值为'true' <br />
<mbean name="jboss:service=Naming" code="org.jboss.naming.NamingService" xmbean-dd="resource:xmdesc/NamingService-xmbean.xml"><!-- The call by value mode. true if all lookups are unmarshalled using          the caller's TCL, false if in VM lookups return the value by reference.       --><attribute name="CallByValue">true</attribute> <!-- The listening port for the bootstrap JNP service. Set this to -1          to run the NamingService without the JNP invoker listening port.       --><br />
2.修改 deploy/ear-deployer.xml,中的Isloated和CallByValue 为 true<br />
<server><!-- EAR deployer, remove if you are not using ear deployments --><mbean name="jboss.j2ee:service=EARDeployer" code="org.jboss.deployment.EARDeployer"><!-- A flag indicating if ear deployments should have their own scoped       class loader to isolate their classes from other deployments.       --><attribute name="Isolated">true</attribute> <!-- A flag indicating if the ear components should have in VM call       optimization disabled.       --><attribute name="CallByValue">true</attribute> <!-- A flag the enables the default behavior of the ee5 library-directory. If true,       the lib contents of an ear are assumed to be the default value for library-directory       in the absence of an explicit library-directory. If false, there must be an       explicit library-directory.       --><attribute name="EnablelibDirectoryByDefault">true</attribute> </mbean></server><br />
3.修改 deploy\jboss-web.deployer\META-INF\jboss-service.xml中的Java2ClassLoadingCompliance 和 UseJbossWebLoader为true<br />
<!-- Get the flag indicating if the normal Java2 parent first class            loading model should be used over the servlet 2.3 web container first            model.       --><attribute name="Java2ClassLoadingCompliance">true</attribute> <!-- A flag indicating if the JBoss Loader should be used. This loader            uses a unified class loader as the class loader rather than the tomcat            specific class loader.            The default is false to ensure that wars have isolated class loading            for duplicate jars and jsp files.       --><attribute name="UseJBossWebLoader">true</attribute> <br />
<br />
9. 应用部署将EJB的jar包和WEB的 war 复制到$JBOSS_HOME\server\default\deplay<br />
如果是集群环境则复制到$JBOSS_HOME\server\default\farm<br />
<br />
10. 客户端调用l 将$JBOSS_HOME\client\jbossall-client.jar复制到lib目录下<br />
l 修改jndi.properties内容为<br />
<br />
java.naming.factory.initial=org.jnp.interfaces.NamingContextFactory<br />
java.naming.factory.url.pkgs=org.jboss.naming:org.jnp.interfaces<br />
java.naming.provider.url=localhost:1099<br />
11. JBOSS集群 <br />
EJB集群的结构图<br />
<br />
Web负载均衡集群结构图<br />
<br />
11.1. 部署JBOSS集群服务<br />
用 $JBOSS_HOME \server\all的配置来部署集群则不需这一步，只有下面1、2两步是default配置要多做的工作。<br />
<br />
1． 将$JBOSS_HOME \server\all\deploy 下的cluster-service.xml和jboss-web-cluster.sar复制到$JBOSS_HOME \server\default\deploy<br />
2． 将$JBOSS_HOME \server\all\lib 下的jgroups.jar、jbossha.jar复制到$JBOSS_HOME \server\default\lib<br />
<br />
11.2. 配置Jboss节点<br />
session复制配置<br />
jboss session复制是jboss session同步的一种实现。原理是在各Jboss节点间建立横向联系，每个节点都将本节点的session变化同步到其他所有节点上。<br />
jboss的session复制与HTTP集群是相互配合、相互独立的两个系统。session复制是节点间的横向联系，HTTP集群是负载均衡器与节点的纵向联系。<br />
<br />
l $JBOSS_HOME/ server/default/deploy/jboss-web-cluster.sar /META-INF/jboss-service.xml和　$JBOSS_HOME/ server/default/deploy/cluster-service.xml <br />
注意：集群的各节点需要在同一网段.<br />
两个文件都要修改，前者是web session复制的，后者是jboss　EJB等集群<br />
找到<config><udp,将><config>到</config>全部注释掉. jboss session复制有UDP和TCP两种方式.UDP采用多播方式,但问题比较多,所以采用TCP方式。<br />
找到<config> <tcp,将><config>到</config>生效.并对该部分进行以下修改：<br />
将全部down_thread和up_thread的false都改为true. <br />
在<tcp bind_addr="&#8221;"  ${jboss.bind.address}&#8221;> <br />
在<tcpping initial_hosts="&#8221;后填入本机和集群其他全部Jboss节点的IP[7810],比如<tcpping"  ${jboss.bind.address} [7810],192.168.101.20[7810]&#8221;></tcpping> <br />
<br />
l $JBOSS_HOME/ server/default/deploy/jboss-web-cluster.sar /META-INF/jboss-service.xm中的其他参数<br />
ClusterName是集群名称 在同一局域网内,可以存在多个jboss集群,根据集群名称区分它们.所以,集群中各节点配置的集群名称必须一致,而机器IP则没有特殊要求,只要它们能相互连通. 理论上,可以在一台机器上安装多个Jboss实例,分属于不同的集群.但这会极大地增加复杂度,是不好的配置方式.严重不建议给自己找麻烦。<br />
IsolationLevel是隔离等级. 可选值包括：SERIALIZABLE, REPEATABLE_READ, READ_COMMITTED, READ_UNCOMMITTED, 和 NONE。这里的隔离级别和数据库的隔离级别有同样的含义，对于大多数WEB应用程序来讲通常设置为REPEATABLE_READ。<br />
CacheMode是缓存模式。 由于session复制是通过缓存实现的,所以实际上是复制模式.可选值包括：REPL_SYNC 和REPL_ASYNC，确定改变是应该同步还是异步复制。缺省值是REPL_ASYNC.使用同步复制，确保在请求完成之前传播改变，session同步没有滞后,但效率低。<br />
<br />
11.3. 配置应用程序<br />
在应用程序的web.xml的<web-app>段中增加<distributable />。<br />
在jboss-web.xml中增加以下内容：<br />
<?xml version="1.0"  ?><br />
<jboss-web><br />
<context-root>trms</context-root><br />
<br />
<replication-config><br />
<replication-trigger>SET_AND_NON_PRIMITIVE_GET</replication-trigger> <br />
<replication-granularity>SESSION</replication-granularity> <br />
<replication-field-batch-mode>true</replication-field-batch-mode> <br />
</replication-config><br />
<br />
</jboss-web><br />
<br />
<br />
l 客户端jndi.properties内容为<br />
<br />
java.naming.factory.initial=org.jnp.interfaces.NamingContextFactory<br />
java.naming.factory.url.pkgs=org.jboss.naming:org.jnp.interfaces<br />
java.naming.provider.url=192.168.101.19:1099, 192.168.101.20:1099<br />
<br />
<br />
11.4. Apache负载均衡<br />
11.4.1. 下载mod_jk<br />
<a href="http://apache.mirror.phpchina.com/tomcat/tomcat-connectors/jk/binaries/" target="_blank">http://apache.mirror.phpchina.com/tomcat/tomcat-connectors/jk/binaries/</a> 到%apache%\modules 下<br />
11.4.2. 修改%apache%\conf\httpd.conf <br />
在文件末尾添加: Include conf/mod_jk2.conf<br />
11.4.3. 在%apache%\conf下新建文件mod_jk2.conf <br />
文件内容如下：<br />
# Load mod_jk module. Specify the filename<br />
# of the mod_jk lib you&#8217;ve downloaded and<br />
# installed in the previous section<br />
LoadModule jk_module modules/mod_jk.so<br />
# Where to find workers.properties<br />
JkWorkersFile conf/workers2.properties<br />
# Where to put jk logs<br />
JkLogFile logs/mod_jk.log<br />
# Set the jk log level <br />
JkLogLevel info<br />
# Select the log format<br />
JkLogStampFormat "[%a %b %d %H:%M:%S %Y] "<br />
# JkOptions indicate to send SSL KEY SIZE,<br />
JkOptions +ForwardKeySize +ForwardURICompat -ForwardDirectories<br />
# JkRequestLogFormat set the request format<br />
JkRequestLogFormat "%w %V %T"<br />
JkMount /* router<br />
<br />
其中JkMount /* router的意思是，把所有的请求都发给router处理。可以通过修改url来控制发送某些request。<br />
<br />
11.4.4. 在%apache%\conf下新建文件workers2.properties <br />
其内容为：<br />
# The advanced router LB worker<br />
worker.list=router<br />
<br />
<br />
# Define the first node...<br />
worker.server1.port=8009<br />
worker.server1.host=192.168.101.19<br />
worker.server1.type=ajp13<br />
worker.server1.lbfactor=1<br />
worker.server1.redirect=server2<br />
<br />
# Define the first node...<br />
worker.server2.port=8009<br />
worker.server2.host=192.168.101.20<br />
worker.server2.type=ajp13<br />
worker.server2.lbfactor=1<br />
# Define prefered failover node for server1<br />
worker.server2.redirect=server1<br />
<br />
# Now we define the load-balancing behaviour<br />
worker.router.type=lb<br />
worker.router.balance_workers=server2,server1<br />
worker.router.sticky_session=0<br />
<br />
# Add the status worker to the worker list<br />
worker.list=jkstatus<br />
# Define a 'jkstatus' worker using status<br />
worker.jkstatus.type=status<br />
# Add the jkstatus mount point<br />
JkMount /jkmanager/* jkstatus <br />
# Enable the JK manager access from localhost only<br />
<location jkmanager /><br />
JkMount jkstatus<br />
Order deny,allow<br />
Deny from all<br />
Allow from 127.0.0.1<br />
</location><br />
<br />
其中对于node的命名规则是worker.节点名.xxxx。所以上述文件定义了两个节点：server1和server2。8009端口是jboss默认的ajp端口，另外需要注意的是worker.server2.lbfactor参数，它是节点的负载加权，它的值越大，获得负载的机会就越大。可以根据node的硬件性能进行调整。worker. router.sticky_session参数是指定是否使用粘性session。配置了http session复制就可以不需要粘性session。上面配置的是不使用粘性session。worker.server1.redirect=为failover转移到哪个worker<br />
<br />
11.4.5. 配置JBOSS支持粘性mod_jk<br />
修改$JBOSS_HOME/ server/default/deploy/jboss-web.deployer/META-INF/jboss-service.xml<br />
<attribute name="UseJK">false</attribute> 改为ture<br />
11.4.6. 配置JBOSS支持粘性session<br />
修改$JBOSS_HOME/ server/default/deploy/jboss-web.deployer/META-INF/jboss-service.xml<br />
<br />
<engine　name="jboss.web" defaulthost="localhost">　改为<br />
<engine　name="jboss.web" 　 <br defaulthost="localhost" jvmroute="server1"  />
注意：jvmRoute的值必须和mod_jk中的节点名字正确对应，否则无法正确路由<br />
<br />
<br />
<br />
1. 修改虚拟机的参数... 1 <br />
2. 启动... 1 <br />
3. 停止... 2 <br />
4. 配置控制台安全... 2 <br />
5. 数据库连接池... 2 <br />
6. 配置服务器日志... 3 <br />
7. 配置服务端lib包... 4 <br />
8. 配置EJB调用... 4 <br />
9. 应用部署... 6 <br />
10. 客户端调用... 6 <br />
11. JBOSS集群... 6 <br />
11.1. 部署JBOSS集群服务... 8 <br />
11.2. 配置Jboss节点... 8 <br />
11.3. 配置应用程序... 10 <br />
11.4. Apache负载均衡... 10 <br />
11.4.1. 下载mod_jk. 10 <br />
11.4.2. 修改%apache%\conf\httpd.conf10 <br />
11.4.3. 在%apache%\conf下新建文件mod_jk2.conf11 <br />
11.4.4. 在%apache%\conf下新建文件workers2.properties. 11 <br />
11.4.5. 配置JBOSS支持粘性mod_jk. 12 <br />
11.4.6. 配置JBOSS支持粘性session. 12-<br />
</dir></dir>
<img src ="http://www.blogjava.net/luluyanglu/aggbug/318270.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/luluyanglu/" target="_blank">大鱼</a> 2010-04-14 16:33 <a href="http://www.blogjava.net/luluyanglu/archive/2010/04/14/318270.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>jboss性能优化</title><link>http://www.blogjava.net/luluyanglu/archive/2010/02/23/313712.html</link><dc:creator>大鱼</dc:creator><author>大鱼</author><pubDate>Tue, 23 Feb 2010 06:08:00 GMT</pubDate><guid>http://www.blogjava.net/luluyanglu/archive/2010/02/23/313712.html</guid><wfw:comment>http://www.blogjava.net/luluyanglu/comments/313712.html</wfw:comment><comments>http://www.blogjava.net/luluyanglu/archive/2010/02/23/313712.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/luluyanglu/comments/commentRss/313712.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/luluyanglu/services/trackbacks/313712.html</trackback:ping><description><![CDATA[<div class="blog_content">
<p>为了优化jboss的性能，对jboss服务器做了如下改动。</p>
<p><br />
设置jvm 参数</p>
<p>安装jboss-native <br />
降低jboss输出日志的等级 <br />
起用了jboss内的tomcat对传输数据的压缩功能 <br />
使用ehcache做hibernate的二级缓存 </p>
<p>下面就以上的各改动做详细说明，为了表述方便&lt;jboss&gt;代表jboss的安装目录：</p>
<p><br />
设置 jvm 参数</p>
<p>编辑&lt;jboss&gt;/bin/run.conf,&nbsp; 在文件的底部找到对参数JAVA_OPTS进行设置的地方。这个参数会最后传到jvm里。其中</p>
<p><br />
-Xms512m 代表jvm最少用 512m内存 <br />
-Xmx1024m 代表jvm最多使用 1024m内存 </p>
<p>修改这个两参数，给jvm分配适当的内存，一般为服务器的3/4内存量，推荐至少使用4G内存。<br />
另外添加两个参数 -XX:+UseParallelGC -XX:+UseParallelOldGC 这两个让服务并行回收内存空间。修改完成后，大致为 JAVA_OPTS = &#8220;-Xms4096m -Xmx8192m -XX:+UseParallelGC -XX:+UseParallelOldGC -Dsum&#8230;&#8230;.</p>
<p><br />
安装jbossNative</p>
<p>jboss的web container使用的 apache tomcat (<a href="http://www.apache.org/"><font color="#006600">http://www.apache.org</font></a>)。 apache tomcat 有一个扩展包，使tomcat可以通过 java native interface 使用 apache portable runtime (APR)，而APR则是大名顶顶的apache httpd 网络服务器的运行时环境。用了这个扩展之后，就使得tomcat可以借助于apache httpd的力量，性能得以提升，尤其是处理静态文件时效率更高。Jboss native，实际上就是tomcat的这个native的扩展，只不过被jboss又添进了一些为了和jboss更好协作而加进去的东西。<br />
要安装jboss native, 按以下步骤进行</p>
<p><br />
请到jboss的网站上下载，地址是 <a href="http://www.jboss.org/jbossweb/downloads/jboss-native/?action=a&amp;amp;windowstate=maximized"><font color="#006600">http://www.jboss.org/jbossweb/downloads/jboss-native/?action=a&amp;windowstate=maximized</font></a>, 依据服务器环境选择合适的版本。 目前我们用的版本是JBoss Native 2.0.4 Linux x86 。 <br />
解压下载后的压缩包到某个目录，比如 jbossNative目录 <br />
将jbossNative/bin/META-INF/bin/linux2/x86/openssl 复制到&lt;jboss&gt;/bin <br />
在&lt;jboss&gt;/bin目录里建一个文件夹，名为 native <br />
把jbossNative/bin/META-INF/lib/linux2/x86/ 目录下所有内容复制到上一步建好的&lt;jboss&gt;/bin/native目录下 </p>
<p>&nbsp;</p>
<p><br />
降低jboss输出日志的等级</p>
<p>打开 &lt;jboss&gt;/server/default/conf/jboss-log4j.xml ，这是一个log4j的配置文件。log4j的详细配置说明请参看&nbsp; <a href="http://logging.apache.org/log4j/1.2/index.html"><font color="#006600">http://logging.apache.org/log4j/1.2/index.html</font></a>&nbsp; 。日志输出的太多，会导致服务器性能降低，所以减少不必要的日志输出。方法大体如下：</p>
<p><br />
找到 name=&#8221;org.jboss&#8221; 的category 元素，设置里面的priority元素为 &lt;priority value=&#8221;INFO&#8221; /&gt; <br />
建一个新的category，内容为 &lt;category name=&#8221;javax.faces&#8221;&gt;&lt;priority value=&#8221;INFO&#8221; /&gt;&lt;/category&gt; </p>
<p><br />
log4j 还能够将不同的日志输入到不同的地方，为了以后维护方便，应该将不同 category的日志输入到不同的文件里。详细方法参看上面的网站里的说明。</p>
<p>&nbsp;</p>
<p>起用了jboss内的tomcat对传输数据的压缩功能</p>
<p>合同管理里用了大量的javascript. css等，为了减少传输时间，可以起用压缩功能。方法是：</p>
<p><br />
打开&lt;jboss&gt;/server/default/deploy/jboss-web.deployer/server.xml <br />
找到 protocol=&#8221;HTTP/1.1&#8243;的 Connector元素，添加属性 URIEncoding=&#8221;utf-8&#8243; compression=&#8221;on&#8221; compressionMinSize=&#8221;2048&#8243; noCompressionUserAgents=&#8221;gozilla, traviata&#8221; compressableMimeType=&#8221;text/html,text/xml,text/javascript, text/css, text/plain,application/xhtml+xml,application/x-javascript,application/javascript,text/xhtml&#8221; </p>
<p>添加完后类似于：<br />
&lt;Connector port=&#8221;8080&#8243; address=&#8221;${jboss.bind.address}&#8221;&nbsp;&nbsp; <br />
maxThreads=&#8221;250&#8243; maxHttpHeaderSize=&#8221;8192&#8243;<br />
emptySessionPath=&#8221;true&#8221; protocol=&#8221;HTTP/1.1&#8243;<br />
enableLookups=&#8221;false&#8221; redirectPort=&#8221;8443&#8243; acceptCount=&#8221;100&#8243;<br />
connectionTimeout=&#8221;20000&#8243; disableUploadTimeout=&#8221;true&#8221; URIEncoding=&#8221;utf-8&#8243; compression=&#8221;on&#8221; compressionMinSize=&#8221;2048&#8243; noCompressionUserAgents=&#8221;gozilla, traviata&#8221; compressableMimeType=&#8221;text/html,text/xml,text/javascript, text/css, text/plain,application/xhtml+xml,application/x-javascript,application/javascript,text/xhtml&#8221;/&gt;</p>
<p><br />
使用ehcache做hibernate的二级缓存</p>
<p>起用二级缓存，可以大大提高hibernate的运行效率。</p>
<p><br />
到<a href="http://ehcache.sourceforge.net/"><font color="#006600">http://ehcache.sourceforge.net/</font></a> 网站下载 ehcache-1.4.1.tgz <br />
解压到某个目录，例如ehcache目录 <br />
复制 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到 &lt;jboss&gt;/server/default/lib目录 </p>
</div>
<script. type="text/javascript."><!-- google_ad_client="pub-4348265167276910" ;
/* 468x60, 个人博客 */ google_ad_slot="2046406163" ; google_ad_width="468;
google_ad_height" = 60;
//--></script. type="text/javascript." src="http://pagead2.googlesyndication.com/pagead/show_ads.js" 
<SCRIPT. SCRIPT. <>
</script. src="http://googleads.g.doubleclick.net/pagead/test_domain.js" 
<SCRIPT.>
</script. src="http://pagead2.googlesyndication.com/pagead/render_ads.js" 
<SCRIPT.>
</script. <SCRIPT.>
google_protectAndRun("render_ads.js::google_render_ad", google_handleError, google_render_ad);</script.>
<br />
<img src ="http://www.blogjava.net/luluyanglu/aggbug/313712.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/luluyanglu/" target="_blank">大鱼</a> 2010-02-23 14:08 <a href="http://www.blogjava.net/luluyanglu/archive/2010/02/23/313712.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>