原文轉自:http://www.quiee.com.cn/archives/2131
背景說明
併發訪問量大的應用,容易發生服務器崩掉的情況,針對這種情況,我們在部署時,能做一些什麼優化呢?看下面的配置。
應用舉例
從以下三處來優化應用配置:
1 tomcat的jvm的初始內存大小;
2 應用的數據源連接配置:reportApp.xml;
3 應用的報表配置文件:reportConfig.xml;
1、Windows下,
在文件/bin/catalina.bat,Unix下,在文件/bin/catalina.sh的前面,增加如下設置:
JAVA_OPTS=’-Xms【初始化內存大小】 -Xmx【可以使用的最大內存】’
需要把這個兩個參數值調大。例如:
JAVA_OPTS=’-Xms1024m -Xmx1024m’
2、newRoleReport.xml中的配置項:
maxActive=”100″
maxIdle=”30″
maxWait=”-1″
參數說明:
maxActive:同時能夠從連接池中被分配的可用實例的最大數;
maxIdle:可以同時閒置在連接池中的連接的最大數;
maxWait:最大超時時間,以毫秒計,-1表示無限制;
3、reportConfig.xml中的配置項:
alwaysReloadDefine:no;cachedReportTimeout:60;maxConcurrentForReport:1000;maxWaitForReport:2000;maxWaitTimeForReport:10;maxCellNum:100000;
<config>
<name>alwaysReloadDefine</name>
<value>no</value>
</config>
<config>
<name>cachedParamsTimeout</name>
<value>60</value>
</config>
<config>
<name>cachedReportTimeout</name>
<value>60</value>
</config>
<config>
<name>maxCellNum</name>
<value>100000</value>
</config>
<config>
<name>maxConcurrentForReport</name>
<value>1000</value>
</config>
<config>
<name>maxWaitForReport</name>
<value>2000</value>
</config>
<config>
<name>maxWaitTimeForReport</name>
<value>10</value>
</config>
參數說明:
(1) alwaysReloadDefine實時載入報表,應用製作好後,設置爲no;在開發模式下,設置爲yes,可以在頁面上看到報表實時修改後的效果。
(2) cachedParamsTimeout表示提交給報表的參數在緩存中保存的時間,以分鐘爲單位。如果不設此參數,缺省值是120分。
(3) cachedReportTimeout表示報表緩存保存的時間,以分鐘爲單位。如果不設此參數,缺省值是120分。此值應根據實際內存大小、緩存文件夾空間大小來調節,一般在1-3小時之間。
(4) maxCellNum 當前報表系統能運算的最大單元格數,能夠動態控制併發數。該數值的大小取決於硬件的配置,一般來說內存越大,這些數值可以設得越大,但最多建議不要超過2000000。
(5) maxConcurrentForReport表示報表WEB應用中服務器可以同時計算的報表的個數,以便有效控制服務器的內存使用量。該數值的大小取決於硬件的配置,一般來說內存越大,這些數值可以設得越大,但最多建議不要超過1000。
(6) maxWaitForReport表示報表WEB應用中服務器可以等待計算的報表的個數,以便有效控制服務器的內存使用量。該數值的大小取決於硬件的配置,一般來說內存越大,這個數值可以設得越大,但最多建議不要超過2000。
(7) maxWaitTimeForReport表示內存溢出後,最長等待多久才允許新任務訪問,以秒爲單位,一般建議爲10