Tomcat 參數配置相關

来源:https://www.cnblogs.com/shouke/archive/2019/01/01/10204444.html
-Advertisement-
Play Games

Tomcat參數配置相關 by:授客 QQ:1033553122 目的: 對Tomcat配置的點滴學習總結,主要目的在於分析Tomcat與性能相關的一些參數設置,以便性能調優時選擇最優配置 環境: Server version: Apache Tomcat/9.0.0.M1 Java8 配置文件說明 ...


Tomcat參數配置相關

by:授客 QQ:1033553122

目的:

對Tomcat配置的點滴學習總結,主要目的在於分析Tomcat與性能相關的一些參數設置,以便性能調優時選擇最優配置

 

環境:

Server version: Apache Tomcat/9.0.0.M1

Java8

 

配置文件說明

1. server.xml

<?xml version='1.0' encoding='utf-8'?>

    <!--connectors可使用一個共用的executor(執行器),可定義一個、多個命名的線程池-->

    <!--

    <Executor name="tomcatThreadPool" namePrefix="catalina-exec-"

        maxThreads="150" minSpareThreads="4"/>

-->

主要屬性說明:

name:供server.xml中其它位置引用。Name必填且唯一。

namePrefix:為每個由executor線程創建的線程的名稱首碼。單個線程的線程名稱為namePrefix+threadNumber

maxThreads:線程池中活動線程的最大數量,預設200

minSpareThreads:始終打開的最小不活躍線程數,預設是25。(The minimum number of threads always kept alive, default is 25)

maxIdleTime:設置超過多久關閉空閑線程(idle thread),預設值60000ms(1分鐘)。僅在活動線程數超過minSpareThreads時才會關閉空閑線程。

maxQueueSize:排隊等待執行的最大可執行任務數。預設值為Integer.MAX_VALUE。超過該值則拒絕新的任務

prestartminSpareThreads:是否在開啟執行器Executor時,就生成minSpareThreads個線程,預設false。(WhetherminSpareThreads should be started when starting the Executor or not)

threadRenewalDelay:如果配置了ThreadLocalLeakPreventionListener,將通知該執行器context已停止相關信息。在停止context後,將線上程池重建線程。為了避免同一時間重建所有線程,該選項在設置了每兩次重建線程的時間間隔。單位ms,預設值1000ms。如果值為負數,不重新新建線程。

    <!-- "Connector" 代表了請求接收端和響應返回端(A "Connector" represents an endpoint by which requests are received)。以下在埠8080,定義了一個非SSL/TLS HTTP/1.1的連接器

-->

參考連接:http://tomcat.apache.org/tomcat-9.0-doc/config/executor.html

 

    <!-- 配置"Connector"使用的共用線程池-->

    <!--

    <Connector executor="tomcatThreadPool"

               port="8080" protocol="HTTP/1.1"

               connectionTimeout="20000"

               redirectPort="8443"

               compression="on"   

      compressionMinSize="50"

               noCompressionUserAgents="gozilla, traviata"                                       

               compressableMimeType="text/plain,application/x-javascript,text/css,

text/javascript,application/json"

/>

-->

主要屬性說明(針對HTTP/1.1):

executor:指定Executor的名稱。如果Executor存在,那麼connector(連接器)將使用該執行器,並且所有其它的線程屬性都會被忽略。註意,如果沒有為連接器指定共用執行器,那麼連接器將使用一個內部私有的,執行器來提供線程池。

port:Connector用於監聽新連接請求並創建服務端socket的TCP埠。操作系統僅允許一個服務端應用在同一個指定IP上監聽指定埠。如果設置port值為0,那麼Tomcat將為該連接器隨機查詢一個空閑埠。

protocol:設置協議。預設HTTP/1.1

connectionTimeout:設置Connector等待連接超時時間,單位毫秒。設置-1,則表示無限等待。預設值60000,即60分鐘,但是Tomcat會把標準server.xml設置為2000。除非disableUploadTimeout設置為false,否則,該超時時間也會用於讀取請求體的超時時間(如果有必要的話)

redirectPort:如果Connector支持非SSL請求,且收到一個匹配 <security-constraint>約束,要求SSL傳輸的請求,那麼,Catalina會自動把請求重定向到這個指定的埠。

註:以下欄位在預設配置中未體現

 compression:Connector可能使用HTTP/1.1 GZIP壓縮,以減少伺服器帶寬。可選值:off|on|force|整數,off-禁用壓縮,on-開啟壓縮,這會導致text文本數據被要鎖, force-所有情況下都進行壓縮,整數-等同on,不同的是指定了最少壓縮數據量,即數據大小超過指定數量的數據才進行壓縮。如果content-length未知,且compression 設置為"on"或者其它非off值,將會壓縮請求輸出,即請求體。如果不指定,屬性將被設置為off。

註意: 在使用compression(節約帶寬)和使用sendfile功能(節約cpu)之間有個權衡,如果connector支持sendfile功能,比如NIO connector,那麼將優先使用sendfile,結果是超過48k的靜態文件將不壓縮直接發送。可通過設置connector的useSendfile 屬性值來關閉sendfile。或者在 DefaultServlet預設conf/web.xml、web應用的web.xml中修改sendfile閾值配置。

 

compressionMinSize:如果compression設置為on,該屬性用於指定最小起壓數據量,即超過compressionMinSize指定值才進行壓縮。 預設值 "2048"。

 

noCompressionUserAgents:該值為正則表達式(使用java.util.regex),匹配http客戶端user-agent頭,如果匹配則不使用compression,也就是說設置哪些客戶端發出的請求不做壓縮處理。因為一些客戶端自身已經實現了這個功能。參考網路資料,通常設置為"gozilla, traviata"。預設值為空字元串(禁用正則表達式匹配)

 

compressableMimeType:設置使用那種HTTP壓縮,逗號分隔。預設值為text/html,text/xml,text/plain,text/css,text/javascript,application/javascript。

 

acceptCount:當所有可能用於處理請求的線程都在使用中時,進到伺服器的連接請求的最大隊列長度。當請求隊列已滿時,接受到的任意請求都被拒絕。最大請求隊列長度值預設: 100。

 

maxThreads:由Connector創建的用於處理請求的最大線程數,這決定了同時可以處理的最大請求數。預設的,該值為200.如果該connector和某個executor相關聯,那麼connector將忽略該屬性,並使用executor的執行任務,而非採用內部線程的。

 

更多資料,參考連接:http://tomcat.apache.org/tomcat-9.0-doc/config/http.html

 

2. web.xml

  <!-- ==================== 預設的會話配置================= -->

  <!-- 可以通過修改以下的值來為所有新建的會話設置預設的會話超時時間,單位 分鐘-->

    <session-config>

        <session-timeout>30</session-timeout>

</session-config>

 

3. 記憶體配置

linux修改TOMCAT_HOME/bin/catalina.sh,在前面加入

JAVA_OPTS="-Xms512m -Xmx1024m -Duser.timezone=Asia/Shanghai"

 

windows修改TOMCAT_HOME/bin/catalina.bat,在前面加入

set JAVA_OPTS=-Xms512m -Xmx1024m

 

註意:記憶體配置做法來自網路資料,未驗證

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 通過多態製作一個簡單的計算器 Operation類: 1 public class Operation 2 { 3 private double _numberA = 0; 4 private double _numberB = 0; 5 public double NumberA 6 { 7 ge ...
  • 很久沒用過EF了,最近換了公司,用的是EF框架,的確已經忘記了EF很多東西,雖說EF這東西性能不太好,但是可以滿足我們的快速開發,在新的項目中我遇到了操作中間表的問題,我記得大學的時候用過,但是年代久矣,那時候又沒有寫博客的習慣,現在就寫下來,以防又忘記了。 言歸正傳: EF中間表是隱藏起來的,在E ...
  • Intro 最近編譯類庫項目的時候發現總是有個 licenseUrl 的警告,警告信息如下: 本文針對的是使用新版項目文件打包的方式, .nuspec 官方文檔詳細,在此不多說。 新版的官方文檔里基本沒有提及,不過 Github 有個 "samples 項目" ,可以參考。 新版項目文件的 nuge ...
  • 1 固定映射 1.1 數據結構 linux高端記憶體中的臨時記憶體區為固定記憶體區的一部分, 對於固定記憶體在linux內核中有下麵描述 x86| arm| arm64 | | "arch/x86/include/asm/fixmap.h?v=4.7, line 67" | "arch/arm/includ ...
  • 今天稍微瞭解了LVS 的原理和使用,在網路上找到不少好文章,稍微加以處理併在這裡備份: 原理介紹:Linux Virtual Server 關於:http://www.linuxvirtualserver.org/about.html The mission of the Linux Virtual ...
  • 簡述 Supervisor是用Python開發的一套通用的進程管理程式,能將一個普通的命令行進程變為後臺daemon,並監控進程狀態,異常退出時能自動重啟。 它是通過fork/exec的方式把這些被管理的進程當作supervisor的子進程來啟動,這樣只要在supervisor的配置文件中,把要管理 ...
  • 之前有研究過linux,後來一段時間沒有操作了,現在有點陌生,而且當初也沒有記錄學習內容。現在想從新開始包括虛擬機安裝到部署Javaweb項目,把這之間所需要的全都記錄下來,以便後邊學習參考使用。 虛擬機 一種特殊的軟體,他可以在電腦平臺和終端用戶之間創建一種環境,而終端用戶則是基於這個軟體所創建 ...
  • 方法一: 一、安裝inotify-tools(客戶端),實現數據屬實備份 1、檢查目錄是否有如下文檔,沒有表示操作系統不支持 ls -l /proc/sys/fs/inotify 2、安裝inotify-tools軟體 yum install inotify-tools -y 如果安裝失敗,可能是源 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...