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