Tomcat最大連線數問題

weixin_34162629發表於2015-09-09

 

分類: 第三方外掛

Tomcat的server.xml中Context元素的以下引數應該怎麼配合適

<Connector port="8080"
maxThreads="150"
minSpareThreads="25"
maxSpareThreads="75"
acceptCount="100"
/>   
   

答曰:

maxThreads="150" 表示最多同時處理150個連線
minSpareThreads="25" 表示即使沒有人使用也開這麼多空執行緒等待
maxSpareThreads="75" 表示如果最多可以空75個執行緒,例如某時刻有80人訪問,之後沒有人訪問了,則tomcat不會保留80個空執行緒,而是關閉5個空的。

acceptCount="100" 當同時連線的人數達到maxThreads時,還可以接收排隊的連線,超過這個連線的則直接返回拒絕連線。

根據你的配置建議
maxThreads="500"
minSpareThreads="100" 如果你的網站經常訪問量都很大的話,預設就開比較大
maxSpareThreads="300"
acceptCount="100"
這只是說你的伺服器可以支援這麼多使用者,但還要看你安裝了哪些東西,還有你的程式是否足夠高效率。

(第二種方法)

tomcat中的幾點配置說明

如何加大tomcat連線數


在tomcat配置檔案server.xml中的配置中,和連線數相關的引數有:
minProcessors:最小空閒連線執行緒數,用於提高系統處理效能,預設值為10
maxProcessors:最大連線執行緒數,即:併發處理的最大請求數,預設值為75
acceptCount:允許的最大連線數,應大於等於maxProcessors,預設值為100
enableLookups:是否反查域名,取值為:true或false。為了提高處理能力,應設定為false
connectionTimeout:網路連線超時,單位:毫秒。設定為0表示永不超時,這樣設定有隱患的。通常可設定為30000毫秒。

其中和最大連線數相關的引數為maxProcessors和acceptCount。如果要加大併發連線數,應同時加大這兩個引數。


web server允許的最大連線數還受制於作業系統的核心引數設定,通常Windows是2000個左右,Linux是1000個左右。Unix中如何設定這些引數,請參閱Unix常用監控和管理命令

tomcat4中的配置示例:
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即可,如下:

...

listings
false


---------------------------------------------------------------




linux下tomcat設定最大連線數,設定最大記憶體

linux下tomcat設定最大連線數,設定最大記憶體,使用Jconsole監控
1. 新增tomcat管理員帳戶
新增管理員賬戶tomcat-users.xml
<?xml version='1.0' encoding='utf-8'?>
<tomcat-users>
<role rolename="tomcat"/>
<role rolename="role1"/>
<role rolename="manager"/>
<role rolename="admin"/>
<user username="tomcat" password="tomcat" roles="tomcat"/>
<user username="both" password="tomcat" roles="tomcat,role1"/>
<user username="role1" password="tomcat" roles="role1"/>
<user username="admin" password="admin123" roles="admin,manager"/>
</tomcat-users>

2. TOMCAT記憶體
基本原理:JAVA程式啟動時都會JVM 都會分配一個初始記憶體和最大記憶體給這個應用程式。這個初始記憶體和最大記憶體在一定程度都會影響程式的效能。比如說在應用程式用到最大記憶體的時候,JVM是要 先去做垃圾回收的動作,釋放被佔用的一些記憶體。 所以想調整Tomcat的啟動時初始記憶體和最大記憶體就需要向JVM宣告,一般的JAVA程式在執行都可以通過中-Xms -Xmx來調整應用程式的初始記憶體和最大記憶體:   如:java -Xms64m -Xmx128m application.jar.

方法1:如果是使用的tomcat_home/bin/catalina.sh(linux)或catalina.bat(win)啟動的:
修改相應檔案,加上下面這句:
JAVA_OPTS='$JAVA_OPTS -server -Xmx800m -Xms512m -XX:MaxNewSize=256m -XX:MaxPermSize=256m -Djava.awt.headless=true'--ms是最小記憶體,mx是最大記憶體。這裡設定最小記憶體為512M,最大記憶體為 800M。$JAVA_OPTS是保留先前設定。 CATALINA_OPTS似乎可以與JAVA_OPTS不加區別的使用。[對於catalina.bat則是如此設定: set   JAVA_OPTS=-Xms1024m   -Xmx1024m]

方法2:如果使用的winnt服務啟動:
在命令列鍵入regedit,找到 HKEY_LOCAL_MACHINE-->SOFTWARE-->Apache Software Foundation-->Procrun 2.0-->Tomcat5-->Parameters的Java,
修改Options的值,新新增屬性:
-Xms64m
-Xmx128m 或者直接修改JvmMx(最大記憶體)和JvmMs(最小記憶體)。

有人建議Xms和Xmx的值取成一樣比較好,說是可以加快記憶體回收速度。
修改完之後,可以訪問http://127.0.0.1:8080/manager/status檢視記憶體大小。

也可以編寫下面測試tomcat記憶體大小的jsp頁面:
<%
Runtime lRuntime = Runtime.getRuntime();
out.println("*** BEGIN MEMORY STATISTICS ***<br/>");
out.println("Free Memory: "+lRuntime.freeMemory()+"<br/>");
out.println("Max   Memory: "+lRuntime.maxMemory()+"<br/>");
out.println("Total Memory: "+lRuntime.totalMemory()+"<br/>");
out.println("Available Processors : "+lRuntime.availableProcessors()+"<br/>");
out.println("*** END MEMORY STATISTICS ***");
%>

3. 增加tomcat連線數
在tomcat配置檔案server.xml中的配置中,和連線數相關的引數有:
minProcessors:最小空閒連線執行緒數,用於提高系統處理效能,預設值為10
maxProcessors:最大連線執行緒數,即:併發處理的最大請求數,預設值為75
acceptCount:允許的最大連線數,應大於等於maxProcessors,預設值為100
enableLookups:是否反查域名,取值為:true或false。為了提高處理能力,應設定為false
connectionTimeout: 網路連線超時,單位:毫秒。設定為0表示永不超時,這樣設定有隱患的。通常可設定為30000毫秒。 其中和最大連線數相關的引數為maxProcessors和acceptCount。如果要加大併發連線數,應同時加大這兩個引數。 web server允許的最大連線數還受制於作業系統的核心引數設定,通常Windows是2000個左右,Linux是1000個左右。
如:
<Connector   port="8080"  
      maxThreads="150"    
      minSpareThreads="25"    
      maxSpareThreads="75"  
      acceptCount="100"  
      />  
maxThreads="150"     表示最多同時處理150個連線  
minSpareThreads="25"     表示即使沒有人使用也開這麼多空執行緒等待  
maxSpareThreads="75"     表示如果最多可以空75個執行緒,例如某時刻有80人訪問,之後沒有人訪問了,則tomcat不會保留80個空執行緒,而是關閉5個空的。  
   
acceptCount="100"   當同時連線的人數達到maxThreads時,還可以接收排隊的連線,超過這個連線的則直接返回拒絕連線。

4.使用Jconsole監控
在需要監控的tomcat_home/bin/catalina.sh(linux)檔案中新增下面語句:JAVA_OPTS="$JAVA_OPTS -Dcom.sun.management.jmxremote.port=8089
-Dcom.sun.management.jmxremote.ssl=false
-Dcom.sun.management.jmxremote.authenticate=false"
設定一個新的埠號。然後在本機dos下輸入Jconsole命令,彈出“JAVA 監視和管理控制檯”,如果是遠端監視,就輸入<hostname>:<port>,這個port就上上面配置的8089,然後再 輸入遠端主機的使用者名稱跟口令,就可以監控啦。
傳說這裡面還可以加一句話"-Djava.rmi.server.hostname=192.168.1.80" 沒有試過 ⊙﹏⊙b汗 先拷貝上一句話,留作記憶:

   再找找遠端tomcat的jmx配置,多了個引數-Djava.rmi.server.hostname=ip_or_hostname。然後我就加上了 伺服器的IP。然後再連線就可以了。對這樣的情況有點不解,再官方又沒有找任何這個引數的說明。回來後,再試用一下。在虛擬機器的開一個linux,然後配 上jmx引數(沒有java.rmi.server.hostname的)。結果可以連線。... 公司的為什麼不能連線呢?為什麼加了IP就行?懷疑多網路卡。然後在虛擬機器上再加一個網上,然後啟動 tomcat ,恩,不能連線(沒有server.hostname),然後再加上java.rmi.server.hostname啟動 tomcat ,結果或以連線。原來java.rmi.server.hostname是這個作用。

相關文章