tomcat配置優化

轉載:www.cnblogs.com/wangsenhtml

最近,看到一篇講述 Tomcat 調優的文章,寫得挺不錯的,因爲以前寫了好幾篇關於 Tomcat 的文章,這篇分享給各位讀者,作一下補充。java

原文以下。面試

1、描述apache

最近,在補充本身的短板,恰好整理到 Tomcat 調優這塊,基本上面試必問,因而就花了點時間去搜集一下 Tomcat 調優都調了些什麼,先記錄一下調優手段,更多詳細的原理和實現之後用到時候再來補充記錄,下面就來介紹一下,Tomcat 調優大體分爲兩大類。tomcat

一、Tomcat的自身調優服務器

採用動靜分離節約 Tomcat 的性能架構

調整 Tomcat 的線程池併發

調整 Tomcat 的鏈接器less

修改 Tomcat 的運行模式異步

禁用 AJP 鏈接器

二、JVM的調優

調優Jvm內存

2、Tomcat 自身調優

一、採用動靜分離

靜態資源若是讓 Tomcat 處理的話 Tomcat 的性能會被損耗不少,因此咱們通常都是採用:Nginx+Tomcat 實現動靜分離,讓 Tomcat 只負責 jsp 文件的解析工做,Nginx 實現靜態資源的訪問。

二、調優 Tomcat 線程池

打開tomcat的serve.xml,配置Executor,相關參數說明以下。

name:給執行器(線程池)起一個名字;

namePrefix:指定線程池中的每個線程的 name 前綴;

maxThreads:線程池中最大的線程數量,假設請求的數量超過了 750,這將不是意味着將 maxThreads 屬性值設置爲 750,它的最好解決方案是使用「Tomcat集羣」。也就是說,若是有 1000 請求,兩個 Tomcat 實例設置 maxThreads = 500,而不在單 Tomcat 實例的狀況下設置 maxThreads=1000。

minSpareThreads:線程池中容許空閒的線程數量(多餘的線程都殺死);

maxIdLeTime:一個線程空閒多久算是一個空閒線程;

其餘的配置其實閱讀官方文檔是最好的「見參考連接」。

三、調優 Tomcat 的鏈接器 Connector

打開 Tomcat 的 serve.xml,配置 Connector,參數說明以下。

executor:指定這個鏈接器所使用的執行器(線程池);

enableLookups=false:關閉 DNS 解析,減小性能損耗;

minProcessors:服務器啓動時建立的最少線程數;

maxProcessors:最大能夠建立的線程數;

acceptCount=1000:線程池中的線程都被佔用,容許放到隊列中的請求數;

maxThreads=3000:最大線程數;

minSpareThreads=20:最小空閒線程數,這裏是一直會運行的線程;

與壓縮有關係的配置:若是已經對代碼進行了動靜分離,靜態頁面和圖片等數據就不須要 Tomcat 處理了,那麼也就不須要配置在 Tomcat 中配置壓縮了;

一個完整的配置以下。

四、經過修改 Tomcat 的運行模式

BIO

Tomcat8 如下版本,默認使用的就是 BIO「阻塞式IO)」模式。

對於每個請求都要建立一個線程來進行處理,不適合高併發。

NIO

Tomcat8 以上版本,默認使用的就是NIO模式「非阻塞式 IO」。

APR

全稱 Apache Portable Runtime,是Tomcat生產環境運行的首選方式,若是操做系統未安裝 APR 或者 APR 路徑未指到 Tomcat 默承認識別的路徑,則 APR 模式沒法啓動,自動切換啓動 NIO 模式。因此必需要安裝 APR 和 Native,直接啓動就支持 APR,APR是從操做系統級別解決異步 IO 問題,APR 的本質就是使用 JNI 技術調用操做系統底層的 IO 接口,因此須要提早安裝所須要的依賴

提高 Tomcat 對靜態文件的處理性能,固然也能夠採用動靜分離。

五、禁用 AJP 鏈接器

AJP的全稱 Apache JServer Protocol,使用 Nginx+Tomca t的架構,因此用不着 AJP 協議,因此把AJP鏈接器禁用。

3、JVM 調優

Tomcat 是運行在 JVM 上的,因此對 JVM 的調優也是很是有必要的。

找到 catalina.sh;

添加;

參數設置;

JAVA_OPTS="-Djava.awt.headless=true -Dfile.encoding=UTF-8-server -Xms1024m -Xmx1024m -XX:NewSize=512m -XX:MaxNewSize=512m -XXermSize=512m -XX:MaxPermSize=512m -XX:+DisableExplicitGC"

調整堆大小的的目的是最小化垃圾收集的時間,以在特定的時間內最大化處理客戶的請求。

參考

https://tomcat.apache.org/tomcat-8.0-doc/config/executor.html

https://tomcat.apache.org/tomcat-8.0-doc/config/index.html

相關文章
相關標籤/搜索