1. 如何加大tomcat連接數
在tomcat配置文件server.xml中的<Connector ... />配置中,和連接數相關的參數有:
maxThreads : tomcat起動的最大線程數,即同時處理的任務個數,默認值為200。
minProcessors:最小空閑連接線程數,用于提高系統處理性能,默認值為10 。
maxProcessors:最大連接線程數,即:并發處理的最大請求數,默認值為75 。
acceptCount: 當tomcat起動的線程數達到最大時,接受排隊的請求個數,默認值為100。
minSpareThreads :Tomcat初始化時創建的線程數。
maxSpareThreads :一旦創建的線程超過這個值,Tomcat就會關閉不再需要的socket線程。
enableLookups:是否反查域名,取值為:true或false。 缺省值為false,表示使用客戶端主機名的DNS解析功能,被ServletRequest.getRemoteHost方法調用。
connectionTimeout:網絡連接超時,單位:毫秒。設置為0表示永不超時,這樣設置有隱患的。通常可設置為30000毫秒。
其中和最大連接數相關的參數為maxProcessors和acceptCount。如果要加大并發連接數,應同時加大這兩個參數。
web server允許的最大連接數還受制于操作系統的內核參數設置,通常Windows是2000個左右,Linux是1000個左右。
Unix中如何設置這些參數,請參閱Unix常用監控和管理命令
tomcat5中的配置示例:
<Connector port="8090" maxHttpHeaderSize="8169" maxThreads="1000" minSpareThreads="75" maxSpareThreads="300" enableLookups="false" redirectPort="8649" acceptCount="100" connectionTimeout="50000" disableUploadTimeout="true" URIEncoding="GBK"/>
<Connector className="org.apache.coyote.tomcat4.CoyoteConnector" port="8080" minProcessors="10" maxProcessors="1024" enableLookups="false" redirectPort="8443" acceptCount="1024" debug="0" connectionTimeout="30000" />
對于其他端口的偵聽配置,以此類推。
2. tomcat中如何禁止列目錄下的文件
在{tomcat_home}/conf/web.xml中,把listings參數設置成false即可,如下:
<servlet> ... <init-param> <param-name>listings</param-name> <param-value>false</param-value> </init-param> ... </servlet>
3. 如何加大tomcat可以使用的內存
tomcat默認可以使用的內存為128MB,在較大型的應用項目中,這點內存是不夠的,需要調大。
Unix下,在文件{tomcat_home}/bin/catalina.sh的前面,增加如下設置:
JAVA_OPTS='-Xms【初始化內存大小】 -Xmx【可以使用的最大內存】' 需要把這個兩個參數值調大。
例如: JAVA_OPTS='-Xms256m -Xmx512m' 表示初始化內存為256MB,可以使用的最大內存為512MB 。
export JAVA_HOME='/home/ftpuser/xjSheetHome/java/jdk1.5.0_22/'
JAVA_OPTS="-Xms1500m -Xmx1500m -Xss1024K -XX:PermSize=128m -XX:MaxPermSize=256m -Dfile.encoding=GBK"
參數說明:
-Xms 是指設定程序啟動時占用內存大小。一般來講,大點,程序會啟動的 快一點,但是也可能會導致機器暫時間變慢。
-Xmx 是指設定程序運行期間最大可占用的內存大小。如果程序運行需要占 用更多的內存,超出了這個設置值,就會拋出OutOfMemory 異常。
-Xss 是指設定每個線程的堆棧大小。這個就要依據你的程序,看一個線程 大約需要占用多少內存,可能會有多少線程同時運行等。
-XX:PermSize設置非堆內存初始值,默認是物理內存的1/64 。
-XX:MaxPermSize設置最大非堆內存的大小,默認是物理內存的1/4。
<Context path="/Sheet" defaultSessionTimeOut="3600" docBase="/home/user/Sheet" >
<Resource name="jdbc/app" auth="Container"
type="javax.sql.DataSource"
username="SHEET" password="SHEET"
driverClassName="oracle.jdbc.driver.OracleDriver"
url="jdbc:oracle:thin:@136.24.248.106:1521:kf"
maxActive="1000" maxIdle="75"/>
<ResourceLink name="UserTransaction"
global="UserTransaction"
type="javax.transaction.UserTransaction"/>
</Context>
參數說明:
defaultSessionTimeOut:設置會話時間 單位為秒
maxActive : 連接池的最大數據庫連接數。設為0表示無限制。
maxIdle :可以同時閑置在連接池中的連接的最大數
maxWait : 最大超時時間,以毫秒計