Tomcat优化之配置线程池
生活随笔
收集整理的這篇文章主要介紹了
Tomcat优化之配置线程池
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
轉(zhuǎn)載自https://bbs.aliyun.com/read/307481.html?spm=a2c4e.11155515.0.0.ixL9fh
簡介?
?
線程池作為提高程序處理數(shù)據(jù)能力的一種方案,應用非常廣泛。大量的服務器都或多或少的使用到了線程池技術(shù),不管是用Java還是C++實現(xiàn),線程池都有如下的特點:線程池一般有三個重要參數(shù):
來 看一下線程池究竟是怎么一回事?其實線程池的原理很簡單,類似于操作系統(tǒng)中的緩沖區(qū)的概念,它的流程如下:先啟動若干數(shù)量的線程,并讓這些線程都處于睡眠 狀態(tài),當客戶端有一個新請求時,就會喚醒線程池中的某一個睡眠線程,讓它來處理客戶端的這個請求,當處理完這個請求后,線程又處于睡眠狀態(tài)。可能你也許會 問:為什么要搞得這么麻煩,如果每當客戶端有新的請求時,我就創(chuàng)建一個新的線程不就完了?這也許是個不錯的方法,因為它能使得你編寫代碼相對容易一些,但 你卻忽略了一個重要的問題??性能!就拿我所在的單位來說,我的單位是一個省級數(shù)據(jù)大集中的銀行網(wǎng)絡中心,高峰期每秒的客戶端請求并發(fā)數(shù)超過100,如果 為每個客戶端請求創(chuàng)建一個新線程的話,那耗費的CPU時間和內(nèi)存將是驚人的,如果采用一個擁有200個線程的線程池,那將會節(jié)約大量的的系統(tǒng)資源,使得更 多的CPU時間和內(nèi)存用來處理實際的商業(yè)應用,而不是頻繁的線程創(chuàng)建與銷毀。 ?
?
配置 ?
?
?
使用線程池,用較少的線程處理較多的訪問,可以提高tomcat處理請求的能力。使用方式: ?
首先。打開/conf/server.xml,增加 ?
復制代碼
?
name: 線程名稱namePrefix: 線程前綴maxThreads : 最大并發(fā)連接數(shù),不配置時默認200,一般建議設置500~ 800 ,要根據(jù)自己的硬件設施條件和實際業(yè)務需求而定。 ?
minSpareThreads:Tomcat啟動初始化的線程數(shù),默認值25prestartminSpareThreads:在tomcat初始化的時候就初始化minSpareThreads的值, 不設置true時minSpareThreadsmaxQueueSize: 最大的等待隊列數(shù),超過則拒絕請求minSpareThreads:線程最大空閑時間60秒。 ?
然后,修改<connector ...="" style="box-sizing: border-box;">節(jié)點,增加executor屬性,如: ?
?
?
復制代碼
?
?
port:連接端口。protocol:連接器使用的傳輸方式。 ?
Tomcat 8 設置 nio2 更好:org.apache.coyote.http11.Http11Nio2Protocolprotocol, Tomcat 6、7 設置 nio 更好:org.apache.coyote.http11.Http11NioProtocol ?
注:每個web客戶端請求對于服務器端來說就一個單獨的線程,客戶端的請求數(shù)量增多將會導致線程數(shù)就上去了,CPU就忙著 跟線程切換。 ?
?
?
而NIO則是使用單線程(單個CPU)或者只使用少量的多線程(多CPU)來接受Socket,而由線程池來處理堵塞在pipe 或者隊 列里的請求.這樣的話,只要OS可以接受TCP的連接,web服務器就可以處理該請求,大大提高了web服務器的可伸縮性。 ?
?
?
executor: 連接器使用的線程池名稱enableLookups:禁用DNS 查詢acceptCount:指定當所有可以使用的處理請求的線程數(shù)都被使用時,可以放到處理隊列中的請求數(shù),超過這個數(shù)的請求將不予處理,默認設置 100 。maxPostSize:限制 以FORM URL 參數(shù)方式的POST請求的內(nèi)容大小,單位字節(jié),默認是 2097152(2兆),10485760 為 10M。 ?
?
?
如果要禁用限制,則可以設置為 -1。acceptorThreadCount: 用于接收連接的線程的數(shù)量,默認值是1。一般這個指需要改動的時候是因為該服務器是一個多核CPU,如果是多核 CPU 一般配置為 2。 ?
?
?
compression:傳輸時是壓縮。compressionMinSize:壓縮的大小noCompressionUserAgents:不啟用壓縮的瀏覽器 ?
?
?
提示:壓縮會增加Tomcat負擔,最好采用Nginx + Tomcat 或者 Apache + Tomcat 方式,壓縮交由Nginx/Apache 去做。 ?
?
?
Tomcat 的壓縮是在客戶端請求服務器對應資源后,從服務器端將資源文件壓縮,再輸出到客戶端,由客戶端的瀏覽器負責解壓縮并瀏覽。相對于普通的 瀏覽過程 HTML、CSS、Javascript和Text,它可以節(jié)省40% 左右的流量。更為重要的是,它可以對動態(tài)生成的,包括CGI、PHP、JSP、ASP、Servlet,SHTML等輸出的網(wǎng)頁也能進行壓縮,壓縮效率也很高。 ?
總結(jié)
以上是生活随笔為你收集整理的Tomcat优化之配置线程池的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 使用SSH密钥对给你的阿里云ECS加把安
- 下一篇: GTS--阿里巴巴分布式事务全新解决方案