tomcat預設的連線是執行緒阻塞的,即protocol配置為"http/1.1"。那麼tomcat的最大連線數就受maxthreads和account的限制,
maxthreads是最大的執行緒數,account是執行緒等待數,當連線數量達到maxthreads時,就把多餘的連線放入account中。當連線數大於maxthreads+account時,連線被拒絕。maxthreads的預設值是200,account的預設值是100。
通過修改maxthreads和account的值可以增加tomcat的最大連線數。但是這個數值還受限於系統的最大控制代碼數。要是專案需要的併發量超過了系統的最大控制代碼數,那就只能修改系統的最大控制代碼數。linux的預設最大控制代碼數是1024.
tomcat的執行緒連線還可以設定為執行緒非阻塞,即protocol="org.apache.coyote.http11.http11nioprotocol"
那麼tomcat的最大連線數就是系統的最大控制代碼數。當配置為nio時,不要加上maxthreads account等屬性,否則會報錯!
tomcat從5.5版本開始,支援以下四種connector的配置分別為:
我們姑且把上面四種connector按照順序命名為 nio, http, pool, niop
為了不讓其他因素影響測試結果,我們只對乙個很簡單的jsp頁面進行測試,這個頁面僅僅是輸出乙個hello world。假設位址是 http://tomcat1/test.jsp
我們依次對四種connector進行測試,測試的客戶端在另外一台機器上用ab命令來完成,測試命令為: ab -c 900 -n 2000 http://tomcat1/test.jsp,最終的測試結果如下表所示(單位:平均每秒處理的請求數):
由這五組資料不難看出,http的效能是很穩定,但是也是最差的,而這種方式就是tomcat的預設配置。nio方式波動很大,但沒有低於280 的,niop是在nio的基礎上加入執行緒池,可能是程式處理更複雜了,因此效能不見得比nio強;而pool方式則波動很大,測試期間和http方式一 樣,不時有停滯。
由於linux的核心預設限制了最大開啟檔案數目是1024,因此此次併發數控制在900。
提高Tomcat併發量的幾種方法
1 apache tomcat 結合起來用apache負責靜態頁面,tomcat負責動態頁面,同時減少connectiontimeout的時間,以應對併發量大執行緒 來不及的情況。2 壓力過大的問題,可以做負載均衡,乙個tomcat無論如何也不可能擔當如此多的執行緒負載,而且jvm過大,其記憶體管理...
吞吐量 併發量
併發數 吞吐量的概念最初用來衡量網路裝置的效能,後來推廣到伺服器及業務上評估系統的整體效能。一 網路裝置的併發數 吞吐量 併發數 concurrency 也叫併發連線數,指網路裝置所能處理的最大會話數量。這裡的會話數是指請求 響應一次會話。吞吐量 throughput 使用者請求是由乙個個資料報組成...
統計併發量
需求 需要統計 的併發量,並繪圖。只需要寫出shell指令碼即可,不用關心zabbix配置。假設日誌路徑 data logs www.aaa.com access.log 日誌格式如下 112.107.15.12 07 nov 2018 09 59 01 0800 www.aaa.com api l...