日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

Tomcat入门

發(fā)布時(shí)間:2024/9/30 编程问答 66 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Tomcat入门 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

1.Tomcat基礎(chǔ)入門

1.1 tomcat是什么

Tomcat 是由 Apache 開(kāi)發(fā)的一個(gè) Servlet 容器,實(shí)現(xiàn)了對(duì) Servlet 和 JSP 的支持,并提供了作為Web服務(wù)器的一些特有功能,如Tomcat管理和控制平臺(tái)、安全域管理和Tomcat閥等。

由于 Tomcat 本身也內(nèi)含了一個(gè) HTTP 服務(wù)器,它也可以被視作一個(gè)單獨(dú)的 Web 服務(wù)器

1.2 基礎(chǔ)目錄

  • /bin - Tomcat 腳本存放目錄(如啟動(dòng)、關(guān)閉腳本)。 *.sh 文件用于 Unix 系統(tǒng); *.bat 文件用于 Windows 系統(tǒng)。

  • /conf - Tomcat 配置文件目錄。

  • /logs - Tomcat 默認(rèn)日志目錄。

  • /webapps - webapp 運(yùn)行的目錄。在手動(dòng)拷貝war包到此目錄下啟動(dòng)時(shí),war包的名稱就是啟動(dòng)項(xiàng)目的上下文

    |-- webapp # 站點(diǎn)根目錄 META-INF 目錄用于存放工程自身相關(guān)的一些信息,元文件信息,通常由開(kāi)發(fā)工具,環(huán)境自動(dòng)生成。|-- META-INF # META-INF 目錄| `-- MANIFEST.MF # 配置清單文件|-- WEB-INF # WEB-INF 目錄| |-- classes # class文件目錄| | |-- *.class # 程序需要的 class 文件| | `-- *.xml # 程序需要的 xml 文件| |-- lib # 庫(kù)文件夾| | `-- *.jar # 程序需要的 jar 包

1.3 安裝

  • window安裝:tomcat8.5要求JDK1.7以上,進(jìn)入tomcat官方網(wǎng)站下載,解壓到本地即可使用。

  • linux安裝

    # 下載解壓到本地wget http://mirrors.hust.edu.cn/apache/tomcat/tomcat-8/v8.5.24/bin/apache-tomcat-8.5.24.tar.gztar -zxf apache-tomcat-8.5.24.tar.gz# 啟動(dòng) Tomcat./apache-tomcat-8.5.24/bin/startup.sh

啟動(dòng)后,訪問(wèn) http://localhost:8080 ,可以看到 Tomcat 安裝成功的測(cè)試頁(yè)面

1.4 配置文件解析

./conf/servre.xml是tomcat的主要配置文件,下面對(duì)里面的一些主要配置進(jìn)行解釋:

  • server
    server 元素表示整個(gè) Catalina servlet 容器。因此,它必須是 conf/server.xml 配置文件中的根元素。它的屬性代表了整個(gè) servlet 容器的特性。

    | 屬性 | 描述 | 備注 |
    | :------| ------: | :------: |
    | className | 這個(gè)類必須實(shí)現(xiàn)org.apache.catalina.Service接口 | 默認(rèn) org.apache.catalina.core.StandardService |
    | address | 服務(wù)器等待關(guān)機(jī)命令的TCP / IP地址。如果沒(méi)有指定地址,則使用localhost。 | |
    | port | 服務(wù)器等待關(guān)機(jī)命令的TCP / IP端口號(hào)。設(shè)置為-1以禁用關(guān)閉端口。|
    | shutdown | 必須通過(guò)TCP / IP連接接收到指定端口號(hào)的命令字符串,以關(guān)閉Tomcat|

  • service
    Service元素表示一個(gè)或多個(gè)連接器組件的組合,這些組件共享一個(gè)用于處理傳入請(qǐng)求的引擎組件。Server 中可以有多個(gè) Service。
    其中name表示此服務(wù)的顯示名稱,如果您使用標(biāo)準(zhǔn) Catalina 組件,將包含在日志消息中。與特定服務(wù)器關(guān)聯(lián)的每個(gè)服務(wù)的名稱必須是唯一的。

<!-- A "Service" is a collection of one or more "Connectors" that sharea single "Container" Note: A "Service" is not itself a "Container",so you may not define subcomponents such as "Valves" at this level.Documentation at /docs/config/service.html--> <?xml version="1.0" encoding="UTF-8"?> <Server port="8080" shutdown="SHUTDOWN"><Service name="xxx">...</Service> </Server>
  • Executor
    表示在Tomcat中組件之間共享的線程池。
屬性描述備注
className這個(gè)類必須實(shí)現(xiàn)org.apache.catalina.Executor接口默認(rèn) org.apache.catalina.core.StandardService
name線程池名稱要求唯一, 供Connector元素的executor屬性使用
namePrefix線程名稱前綴
maxThreads最大活躍線程數(shù)默認(rèn)200
minSpareThreads最小活躍線程數(shù)默認(rèn)25
maxIdleTime當(dāng)前活躍線程大于minSpareThreads時(shí),空閑線程關(guān)閉的等待最大時(shí)間默認(rèn)60000ms
maxQueueSize線程池滿情況下的請(qǐng)求排隊(duì)大小默認(rèn)Integer.MAX_VALUE
<!--The connectors can use a shared executor, you can define one or more named thread pools--> <Service name="xxx"><Executor name="tomcatThreadPool" namePrefix="catalina-exec-" maxThreads="300" minSpareThreads="25"/> </Service>
  • connector
    Connector代表連接組件。Tomcat 支持三種協(xié)議:HTTP/1.1、HTTP/2.0、AJP。
屬性描述備注
asyncTimeoutServlet3.0規(guī)范中的異步請(qǐng)求超時(shí)默認(rèn)30s
port請(qǐng)求連接的TCP Port設(shè)置為0,則會(huì)隨機(jī)選取一個(gè)未占用的端口號(hào)
protocol協(xié)議. 一般情況下設(shè)置為 HTTP/1.1,這種情況下連接模型會(huì)在NIO和APR/native中自動(dòng)根據(jù)配置選擇
URIEncoding對(duì)URI的編碼方式如果設(shè)置系統(tǒng)變量org.apache.catalina.STRICT_SERVLET_COMPLIANCE為true,使用 ISO-8859-1編碼;如果未設(shè)置此系統(tǒng)變量且未設(shè)置此屬性, 使用UTF-8編碼
useBodyEncodingForURI是否采用指定的contentType而不是URIEncoding來(lái)編碼URI中的請(qǐng)求參數(shù)

以下屬性在標(biāo)準(zhǔn)的Connector(NIO, NIO2 和 APR/native)中有效:

屬性描述備注
acceptCount當(dāng)最大請(qǐng)求連接maxConnections滿時(shí)的最大排隊(duì)大小默認(rèn)100,注意此屬性和Executor中屬性maxQueueSize的區(qū)別.這個(gè)指的是請(qǐng)求連接滿時(shí)的堆棧大小,Executor的maxQueueSize指的是處理線程滿時(shí)的堆棧大小
connectionTimeout請(qǐng)求連接超時(shí)默認(rèn)60000ms
executor指定配置的線程池名稱
keepAliveTimeoutkeeAlive超時(shí)時(shí)間默認(rèn)值為connectionTimeout配置值.-1表示不超時(shí)
maxConnections最大連接數(shù)連接滿時(shí)后續(xù)連接放入最大為acceptCount的隊(duì)列中. 對(duì) NIO和NIO2連接,默認(rèn)值為10000;對(duì) APR/native,默認(rèn)值為8192
maxThreads如果指定了Executor, 此屬性忽略;否則為Connector創(chuàng)建的內(nèi)部線程池最大值默認(rèn)200
minSpareThreads如果指定了Executor, 此屬性忽略;否則為Connector創(chuàng)建線程池的最小活躍線程數(shù)默認(rèn)10
processorCache協(xié)議處理器緩存Processor對(duì)象的大小-1表示不限制.當(dāng)不使用servlet3.0的異步處理情況下: 如果配置Executor,配置為Executor的maxThreads;否則配置為Connnector的maxThreads. 如果使用Serlvet3.0異步處理, 取maxThreads和maxConnections的最大值

1.5 開(kāi)啟遠(yuǎn)程調(diào)試模式

我們常常會(huì)遇到,本地項(xiàng)目運(yùn)行一切正常,在測(cè)試服務(wù)器上出問(wèn)題,可是日志信息并不能方便的查看出原因。我們可以通過(guò)遠(yuǎn)程調(diào)試模式來(lái)查看項(xiàng)目運(yùn)行信息。現(xiàn)在介紹在tomcat8.5下的開(kāi)啟遠(yuǎn)程調(diào)試方式:

  • 1.5.1 tomcat開(kāi)啟遠(yuǎn)程調(diào)試模式
    開(kāi)啟遠(yuǎn)程調(diào)試模式需要JDPA方式啟動(dòng)tomcat,tomcat8.5已經(jīng)添加JDPA的配置
if not ""%1"" == ""jpda"" goto noJpda set JPDA=jpda if not "%JPDA_TRANSPORT%" == "" goto gotJpdaTransport set JPDA_TRANSPORT=dt_socket :gotJpdaTransport if not "%JPDA_ADDRESS%" == "" goto gotJpdaAddress set JPDA_ADDRESS=localhost:8000 :gotJpdaAddress if not "%JPDA_SUSPEND%" == "" goto gotJpdaSuspend set JPDA_SUSPEND=n :gotJpdaSuspend if not "%JPDA_OPTS%" == "" goto gotJpdaOpts set JPDA_OPTS=-agentlib:jdwp=transport=%JPDA_TRANSPORT%,address=%JPDA_ADDRESS%,server=y,suspend=%JPDA_SUSPEND% :gotJpdaOpts shift :noJpda

如圖,默認(rèn)端口為8000,且只能在本機(jī)進(jìn)行調(diào)試,我們可以去掉localhost和修改需要的端口號(hào)。
然后在bin目錄下修改startup.bat文件,在最后一行添加jdpa

rem call "%EXECUTABLE%" start %CMD_LINE_ARGS% call "%EXECUTABLE%" jpda start %CMD_LINE_ARGS%

然后雙擊startup.bat啟動(dòng)tomcat即可。

  • 1.5.2 客戶端遠(yuǎn)程連接
    我們打開(kāi)IDE開(kāi)發(fā)工具,選擇remote連接

    ,然后填寫連接信息即可。

    端口號(hào)即為上面配置的JPDA_ADDRESS,然后debug啟動(dòng),控制臺(tái)打印以下信息,說(shuō)明連接成功。

    接下來(lái)就可以愉快的打斷點(diǎn)進(jìn)行調(diào)試了。
    問(wèn)題:其中tomcat7需要手動(dòng)添加JPDA_OPTS設(shè)置,非tomcat8.5版本開(kāi)啟遠(yuǎn)程調(diào)試模式會(huì)與本文有所不同。
    還有在idea中通過(guò)配置tomcat啟動(dòng)項(xiàng)目時(shí),無(wú)法正確的連接,暫時(shí)還沒(méi)找到原因,只能通過(guò)bin目錄手動(dòng)雙擊startup.bat啟動(dòng)tomcat。

1.6 將tomcat注冊(cè)成window服務(wù)

1.7 tomcat調(diào)優(yōu)

通常tomcat的默認(rèn)配置在生產(chǎn)環(huán)境下不能滿足要求,我們需要修改配置提高性能和穩(wěn)定性,可以通過(guò)以下幾種方式:

1.7.1 修改JVM參數(shù)

Tomcat 啟動(dòng)命令行中的優(yōu)化參數(shù),就是 JVM 的優(yōu)化 。Tomcat 首先跑在 JVM 之上的,因?yàn)樗膯?dòng)其實(shí)也只是一個(gè) java 命令行,首先我們需要對(duì)這個(gè) JAVA 的啟動(dòng)命令行進(jìn)行調(diào)優(yōu)。不管是 YGC 還是 Full GC,GC 過(guò)程中都會(huì)對(duì)導(dǎo)致程序運(yùn)行中中斷,正確的選擇不同的 GC 策略,調(diào)整 JVM、GC 的參數(shù),可以極大的減少由于 GC 工作,而導(dǎo)致的程序運(yùn)行中斷方面的問(wèn)題,進(jìn)而適當(dāng)?shù)奶岣?Java 程序的工作效率。
Tomcat 的啟動(dòng)參數(shù)位于安裝目錄 ${JAVA_HOME}/bin目錄下,Linux 操作系統(tǒng)就是 catalina.sh 文件。JAVA_OPTS,就是用來(lái)設(shè)置 JVM 相關(guān)運(yùn)行參數(shù)的變量,還可以在 CATALINA_OPTS 變量中設(shè)置。關(guān)于這 2 個(gè)變量,還是多少有些區(qū)別的:
JAVA_OPTS:用于當(dāng) Java 運(yùn)行時(shí)選項(xiàng)“start”、“stop”或“run”命令執(zhí)行。
CATALINA_OPTS:用于當(dāng) Java 運(yùn)行時(shí)選項(xiàng)“start”或“run”命令執(zhí)行。

為什么有兩個(gè)不同的變量?它們之間都有什么區(qū)別呢?
首先,在啟動(dòng) Tomcat 時(shí),任何指定變量的傳遞方式都是相同的,可以傳遞到執(zhí)行“start”或“run”命令中,但只有設(shè)定在 JAVA_OPTS 變量里的參數(shù)被傳遞到“stop”命令中。對(duì)于 Tomcat 運(yùn)行過(guò)程,可能沒(méi)什么區(qū)別,影響的是結(jié)束程序,而不是啟動(dòng)程序。
第二個(gè)區(qū)別是更微妙,其他應(yīng)用程序也可以使用 JAVA_OPTS 變量,但只有在 Tomcat 中使用 CATALINA_OPTS 變量。如果你設(shè)置環(huán)境變量為只使用 Tomcat,最好你會(huì)建議使用 CATALINA_OPTS 變量,而如果你設(shè)置環(huán)境變量使用其它的 Java 應(yīng)用程序,例如 JBoss,你應(yīng)該把你的設(shè)置放在JAVA_OPTS 變量中。
32 位系統(tǒng)下 JVM 對(duì)內(nèi)存的限制:不能突破 2GB ,那么這時(shí)你的 Tomcat 要優(yōu)化,就要講究點(diǎn)技巧了,而在 64 位操作系統(tǒng)上無(wú)論是系統(tǒng)內(nèi)存還是 JVM 都沒(méi)有受到 2GB 這樣的限制。

針對(duì)于 JMX 遠(yuǎn)程監(jiān)控也是在這里設(shè)置,以下為 64 位系統(tǒng)環(huán)境下的配置,內(nèi)存加入的參數(shù)如下:

CATALINA_OPTS=" -server -Xms6000M -Xmx6000M -Xss512k -XX:NewSize=2250M -XX:MaxNewSize=2250M -XX:PermSize=128M -XX:MaxPermSize=256M -XX:+AggressiveOpts -XX:+UseBiasedLocking -XX:+DisableExplicitGC -XX:+UseParNewGC -XX:+UseConcMarkSweepGC -XX:MaxTenuringThreshold=31 -XX:+CMSParallelRemarkEnabled -XX:+UseCMSCompactAtFullCollection -XX:LargePageSizeInBytes=128m -XX:+UseFastAccessorMethods -XX:+UseCMSInitiatingOccupancyOnly -Duser.timezone=Asia/Shanghai -Djava.awt.headless=true"

為了看著方便,將每個(gè)參數(shù)單獨(dú)寫一行。上面參數(shù)好多啊,可能有人寫到現(xiàn)在都沒(méi)見(jiàn)過(guò)一個(gè)在 Tomcat 的啟動(dòng)命令里加了這么多參數(shù),當(dāng)然,這些參數(shù)只是我機(jī)器上的,不一定適合你,尤其是參數(shù)后的 value(值)是需要根據(jù)你自己的實(shí)際情況來(lái)設(shè)置的。

上述這樣的配置,基本上可以達(dá)到:

系統(tǒng)響應(yīng)時(shí)間增快;

JVM回收速度增快同時(shí)又不影響系統(tǒng)的響應(yīng)率;

JVM內(nèi)存最大化利用;

線程阻塞情況最小化。

JVM 常用參數(shù)詳解:

-server:一定要作為第一個(gè)參數(shù),在多個(gè) CPU 時(shí)性能佳,還有一種叫 -client 的模式,特點(diǎn)是啟動(dòng)速度比較快,但運(yùn)行時(shí)性能和內(nèi)存管理效率不高,通常用于客戶端應(yīng)用程序或開(kāi)發(fā)調(diào)試,在 32 位環(huán)境下直接運(yùn)行 Java 程序默認(rèn)啟用該模式。Server 模式的特點(diǎn)是啟動(dòng)速度比較慢,但運(yùn)行時(shí)性能和內(nèi)存管理效率很高,適用于生產(chǎn)環(huán)境,在具有 64 位能力的 JDK 環(huán)境下默認(rèn)啟用該模式,可以不配置該參數(shù)。

-Xms:表示 Java 初始化堆的大小,-Xms 與-Xmx 設(shè)成一樣的值,避免 JVM 反復(fù)重新申請(qǐng)內(nèi)存,導(dǎo)致性能大起大落,默認(rèn)值為物理內(nèi)存的 1/64,默認(rèn)(MinHeapFreeRatio參數(shù)可以調(diào)整)空余堆內(nèi)存小于 40% 時(shí),JVM 就會(huì)增大堆直到 -Xmx 的最大限制。

-Xmx:表示最大 Java 堆大小,當(dāng)應(yīng)用程序需要的內(nèi)存超出堆的最大值時(shí)虛擬機(jī)就會(huì)提示內(nèi)存溢出,并且導(dǎo)致應(yīng)用服務(wù)崩潰,因此一般建議堆的最大值設(shè)置為可用內(nèi)存的最大值的80%。如何知道我的 JVM 能夠使用最大值,使用 java -Xmx512M -version 命令來(lái)進(jìn)行測(cè)試,然后逐漸的增大 512 的值,如果執(zhí)行正常就表示指定的內(nèi)存大小可用,否則會(huì)打印錯(cuò)誤信息,默認(rèn)值為物理內(nèi)存的 1/4,默認(rèn)(MinHeapFreeRatio參數(shù)可以調(diào)整)空余堆內(nèi)存大于 70% 時(shí),JVM 會(huì)減少堆直到-Xms 的最小限制。

-Xss:表示每個(gè) Java 線程堆棧大小,JDK 5.0 以后每個(gè)線程堆棧大小為 1M,以前每個(gè)線程堆棧大小為 256K。根據(jù)應(yīng)用的線程所需內(nèi)存大小進(jìn)行調(diào)整,在相同物理內(nèi)存下,減小這個(gè)值能生成更多的線程,但是操作系統(tǒng)對(duì)一個(gè)進(jìn)程內(nèi)的線程數(shù)還是有限制的,不能無(wú)限生成,經(jīng)驗(yàn)值在 3000~5000 左右。一般小的應(yīng)用, 如果棧不是很深, 應(yīng)該是128k 夠用的,大的應(yīng)用建議使用 256k 或 512K,一般不易設(shè)置超過(guò) 1M,要不然容易出現(xiàn)out ofmemory。這個(gè)選項(xiàng)對(duì)性能影響比較大,需要嚴(yán)格的測(cè)試。

-XX:NewSize:設(shè)置新生代內(nèi)存大小。

-XX:MaxNewSize:設(shè)置最大新生代新生代內(nèi)存大小

-XX:PermSize:設(shè)置持久代內(nèi)存大小

-XX:MaxPermSize:設(shè)置最大值持久代內(nèi)存大小,永久代不屬于堆內(nèi)存,堆內(nèi)存只包含新生代和老年代。

-XX:+AggressiveOpts:作用如其名(aggressive),啟用這個(gè)參數(shù),則每當(dāng) JDK 版本升級(jí)時(shí),你的 JVM 都會(huì)使用最新加入的優(yōu)化技術(shù)(如果有的話)。

-XX:+UseBiasedLocking:啟用一個(gè)優(yōu)化了的線程鎖,我們知道在我們的appserver,每個(gè)http請(qǐng)求就是一個(gè)線程,有的請(qǐng)求短有的請(qǐng)求長(zhǎng),就會(huì)有請(qǐng)求排隊(duì)的現(xiàn)象,甚至還會(huì)出現(xiàn)線程阻塞,這個(gè)優(yōu)化了的線程鎖使得你的appserver內(nèi)對(duì)線程處理自動(dòng)進(jìn)行最優(yōu)調(diào)配。

-XX:+DisableExplicitGC:在 程序代碼中不允許有顯示的調(diào)用“System.gc()”。每次在到操作結(jié)束時(shí)手動(dòng)調(diào)用 System.gc() 一下,付出的代價(jià)就是系統(tǒng)響應(yīng)時(shí)間嚴(yán)重降低,就和關(guān)于 Xms,Xmx 里的解釋的原理一樣,這樣去調(diào)用 GC 導(dǎo)致系統(tǒng)的 JVM 大起大落。

-XX:+UseConcMarkSweepGC:設(shè)置年老代為并發(fā)收集,即 CMS gc,這一特性只有 jdk1.5
后續(xù)版本才具有的功能,它使用的是 gc 估算觸發(fā)和 heap 占用觸發(fā)。我們知道頻頻繁的 GC 會(huì)造面 JVM
的大起大落從而影響到系統(tǒng)的效率,因此使用了 CMS GC 后可以在 GC 次數(shù)增多的情況下,每次 GC 的響應(yīng)時(shí)間卻很短,比如說(shuō)使用了 CMS
GC 后經(jīng)過(guò) jprofiler 的觀察,GC 被觸發(fā)次數(shù)非常多,而每次 GC 耗時(shí)僅為幾毫秒。

-XX:+UseParNewGC:對(duì)新生代采用多線程并行回收,這樣收得快,注意最新的 JVM 版本,當(dāng)使用 -XX:+UseConcMarkSweepGC 時(shí),-XX:UseParNewGC 會(huì)自動(dòng)開(kāi)啟。因此,如果年輕代的并行 GC 不想開(kāi)啟,可以通過(guò)設(shè)置 -XX:-UseParNewGC 來(lái)關(guān)掉。

-XX:MaxTenuringThreshold:設(shè)置垃圾最大年齡。如果設(shè)置為0的話,則新生代對(duì)象不經(jīng)過(guò) Survivor 區(qū),直接進(jìn)入老年代。對(duì)于老年代比較多的應(yīng)用(需要大量常駐內(nèi)存的應(yīng)用),可以提高效率。如果將此值設(shè)置為一 個(gè)較大值,則新生代對(duì)象會(huì)在 Survivor 區(qū)進(jìn)行多次復(fù)制,這樣可以增加對(duì)象在新生代的存活時(shí)間,增加在新生代即被回收的概率,減少Full GC的頻率,這樣做可以在某種程度上提高服務(wù)穩(wěn)定性。該參數(shù)只有在串行 GC 時(shí)才有效,這個(gè)值的設(shè)置是根據(jù)本地的 jprofiler 監(jiān)控后得到的一個(gè)理想的值,不能一概而論原搬照抄。

-XX:+CMSParallelRemarkEnabled:在使用 UseParNewGC 的情況下,盡量減少 mark 的時(shí)間。

-XX:+UseCMSCompactAtFullCollection:在使用 concurrent gc 的情況下,防止 memoryfragmention,對(duì) live object 進(jìn)行整理,使 memory 碎片減少。

-XX:LargePageSizeInBytes:指定 Java heap 的分頁(yè)頁(yè)面大小,內(nèi)存頁(yè)的大小不可設(shè)置過(guò)大, 會(huì)影響 Perm 的大小。

-XX:+UseFastAccessorMethods:使用 get,set 方法轉(zhuǎn)成本地代碼,原始類型的快速優(yōu)化。

-XX:+UseCMSInitiatingOccupancyOnly:只有在 oldgeneration 在使用了初始化的比例后 concurrent collector 啟動(dòng)收集。

-Duser.timezone=Asia/Shanghai:設(shè)置用戶所在時(shí)區(qū)。

-Djava.awt.headless=true:這個(gè)參數(shù)一般我們都是放在最后使用的,這全參數(shù)的作用是這樣的,有時(shí)我們會(huì)在我們的 J2EE 工程中使用一些圖表工具如:jfreechart,用于在 web 網(wǎng)頁(yè)輸出 GIF/JPG 等流,在 winodws 環(huán)境下,一般我們的 app server 在輸出圖形時(shí)不會(huì)碰到什么問(wèn)題,但是在linux/unix 環(huán)境下經(jīng)常會(huì)碰到一個(gè) exception 導(dǎo)致你在 winodws 開(kāi)發(fā)環(huán)境下圖片顯示的好好可是在 linux/unix 下卻顯示不出來(lái),因此加上這個(gè)參數(shù)以免避這樣的情況出現(xiàn)。

-Xmn:新生代的內(nèi)存空間大小,注意:此處的大小是(eden+ 2 survivor space)。與 jmap -heap 中顯示的 New gen 是不同的。整個(gè)堆大小 = 新生代大小 + 老生代大小 + 永久代大小。在保證堆大小不變的情況下,增大新生代后,將會(huì)減小老生代大小。此值對(duì)系統(tǒng)性能影響較大,Sun官方推薦配置為整個(gè)堆的 3/8。

-XX:CMSInitiatingOccupancyFraction:當(dāng)堆滿之后,并行收集器便開(kāi)始進(jìn)行垃圾收集,例如,當(dāng)沒(méi)有足夠的空間來(lái)容納新分配或提升的對(duì)象。對(duì)于 CMS 收集器,長(zhǎng)時(shí)間等待是不可取的,因?yàn)樵诓l(fā)垃圾收集期間應(yīng)用持續(xù)在運(yùn)行(并且分配對(duì)象)。因此,為了在應(yīng)用程序使用完內(nèi)存之前完成垃圾收集周期,CMS 收集器要比并行收集器更先啟動(dòng)。因?yàn)椴煌膽?yīng)用會(huì)有不同對(duì)象分配模式,JVM 會(huì)收集實(shí)際的對(duì)象分配(和釋放)的運(yùn)行時(shí)數(shù)據(jù),并且分析這些數(shù)據(jù),來(lái)決定什么時(shí)候啟動(dòng)一次 CMS 垃圾收集周期。這個(gè)參數(shù)設(shè)置有很大技巧,基本上滿足(Xmx-Xmn)(100-CMSInitiatingOccupancyFraction)/100 >= Xmn 就不會(huì)出現(xiàn) promotion failed。例如在應(yīng)用中 Xmx 是6000,Xmn 是 512,那么 Xmx-Xmn 是 5488M,也就是老年代有 5488M,CMSInitiatingOccupancyFraction=90 說(shuō)明老年代到 90% 滿的時(shí)候開(kāi)始執(zhí)行對(duì)老年代的并發(fā)垃圾回收(CMS),這時(shí)還 剩 10% 的空間是 548810% = 548M,所以即使 Xmn(也就是新生代共512M)里所有對(duì)象都搬到老年代里,548M 的空間也足夠了,所以只要滿足上面的公式,就不會(huì)出現(xiàn)垃圾回收時(shí)的 promotion failed,因此這個(gè)參數(shù)的設(shè)置必須與 Xmn 關(guān)聯(lián)在一起。

-XX:+CMSIncrementalMode:該標(biāo)志將開(kāi)啟 CMS 收集器的增量模式。增量模式經(jīng)常暫停 CMS 過(guò)程,以便對(duì)應(yīng)用程序線程作出完全的讓步。因此,收集器將花更長(zhǎng)的時(shí)間完成整個(gè)收集周期。因此,只有通過(guò)測(cè)試后發(fā)現(xiàn)正常 CMS 周期對(duì)應(yīng)用程序線程干擾太大時(shí),才應(yīng)該使用增量模式。由于現(xiàn)代服務(wù)器有足夠的處理器來(lái)適應(yīng)并發(fā)的垃圾收集,所以這種情況發(fā)生得很少,用于但 CPU情況。

-XX:NewRatio:年輕代(包括 Eden 和兩個(gè) Survivor 區(qū))與年老代的比值(除去持久代),-XX:NewRatio=4 表示年輕代與年老代所占比值為 1:4,年輕代占整個(gè)堆棧的 1/5,Xms=Xmx 并且設(shè)置了 Xmn 的情況下,該參數(shù)不需要進(jìn)行設(shè)置。
-XX:SurvivorRatio:Eden 區(qū)與 Survivor 區(qū)的大小比值,設(shè)置為 8,表示 2 個(gè) Survivor 區(qū)(JVM 堆內(nèi)存年輕代中默認(rèn)有 2 個(gè)大小相等的 Survivor 區(qū))與 1 個(gè) Eden 區(qū)的比值為 2:8,即 1 個(gè) Survivor 區(qū)占整個(gè)年輕代大小的 1/10。

-XX:+UseSerialGC:設(shè)置串行收集器。
-XX:+UseParallelGC:設(shè)置為并行收集器。此配置僅對(duì)年輕代有效。即年輕代使用并行收集,而年老代仍使用串行收集。
-XX:+UseParallelOldGC:配置年老代垃圾收集方式為并行收集,JDK6.0 開(kāi)始支持對(duì)年老代并行收集。

-XX:ConcGCThreads:早期 JVM 版本也叫-XX:ParallelCMSThreads,定義并發(fā) CMS 過(guò)程運(yùn)行時(shí)的線程數(shù)。比如 value=4 意味著 CMS 周期的所有階段都以 4 個(gè)線程來(lái)執(zhí)行。盡管更多的線程會(huì)加快并發(fā) CMS 過(guò)程,但其也會(huì)帶來(lái)額外的同步開(kāi)銷。因此,對(duì)于特定的應(yīng)用程序,應(yīng)該通過(guò)測(cè)試來(lái)判斷增加 CMS 線程數(shù)是否真的能夠帶來(lái)性能的提升。如果還標(biāo)志未設(shè)置,JVM 會(huì)根據(jù)并行收集器中的 -XX:ParallelGCThreads 參數(shù)的值來(lái)計(jì)算出默認(rèn)的并行 CMS 線程數(shù)。

-XX:ParallelGCThreads:配置并行收集器的線程數(shù),即:同時(shí)有多少個(gè)線程一起進(jìn)行垃圾回收,此值建議配置與 CPU 數(shù)目相等。
-XX:OldSize:設(shè)置 JVM 啟動(dòng)分配的老年代內(nèi)存大小,類似于新生代內(nèi)存的初始大小 -XX:NewSize。

以上就是一些常用的配置參數(shù),有些參數(shù)是可以被替代的,配置思路需要考慮的是 Java 提供的垃圾回收機(jī)制。虛擬機(jī)的堆大小決定了虛擬機(jī)花費(fèi)在收集垃圾上的時(shí)間和頻度。收集垃圾能夠接受的速度和應(yīng)用有關(guān),應(yīng)該通過(guò)分析實(shí)際的垃圾收集的時(shí)間和頻率來(lái)調(diào)整。假如堆的大小很大,那么完全垃圾收集就會(huì)很慢,但是頻度會(huì)降低。假如您把堆的大小和內(nèi)存的需要一致,完全收集就很快,但是會(huì)更加頻繁。調(diào)整堆大小的的目的是最小化垃圾收集的時(shí)間,以在特定的時(shí)間內(nèi)最大化處理客戶的請(qǐng)求。在基準(zhǔn)測(cè)試的時(shí)候,為確保最好的性能,要把堆的大小設(shè)大,確保垃圾收集不在整個(gè)基準(zhǔn)測(cè)試的過(guò)程中出現(xiàn)。

假如系統(tǒng)花費(fèi)很多的時(shí)間收集垃圾,請(qǐng)減小堆大小。一次完全的垃圾收集應(yīng)該不超過(guò) 3-5 秒。假如垃圾收集成為瓶頸,那么需要指定代的大小,檢查垃圾收集的周詳輸出,研究垃圾收集參數(shù)對(duì)性能的影響。當(dāng)增加處理器時(shí),記得增加內(nèi)存,因?yàn)榉峙淠軌虿⑿羞M(jìn)行,而垃圾收集不是并行的。

常見(jiàn)的 Java 內(nèi)存溢出有以下三種

(1) java.lang.OutOfMemoryError: Java heap space —-JVM Heap(堆)溢出
JVM 在啟動(dòng)的時(shí)候會(huì)自動(dòng)設(shè)置 JVM Heap 的值,其初始空間(即-Xms)是物理內(nèi)存的1/64,最大空間(-Xmx)不可超過(guò)物理內(nèi)存。可以利用 JVM提供的 -Xmn -Xms -Xmx 等選項(xiàng)可進(jìn)行設(shè)置。Heap 的大小是 Young Generation 和 Tenured Generaion 之和。在 JVM 中如果 98% 的時(shí)間是用于 GC,且可用的 Heap size 不足 2% 的時(shí)候?qū)伋龃水惓P畔ⅰ?br /> 解決方法:手動(dòng)設(shè)置 JVM Heap(堆)的大小。

(2) java.lang.OutOfMemoryError: PermGen space —- PermGen space溢出。
PermGen space 的全稱是 Permanent Generation space,是指內(nèi)存的永久保存區(qū)域。為什么會(huì)內(nèi)存溢出,這是由于這塊內(nèi)存主要是被 JVM 存放Class 和 Meta 信息的,Class 在被 Load 的時(shí)候被放入 PermGen space 區(qū)域,它和存放 Instance 的 Heap 區(qū)域不同,sun 的 GC 不會(huì)在主程序運(yùn)行期對(duì) PermGen space 進(jìn)行清理,所以如果你的 APP 會(huì)載入很多 CLASS 的話,就很可能出現(xiàn) PermGen space 溢出。
解決方法: 手動(dòng)設(shè)置 MaxPermSize 大小

(3) java.lang.StackOverflowError —- 棧溢出
棧溢出了,JVM 依然是采用棧式的虛擬機(jī),這個(gè)和 C 與 Pascal 都是一樣的。函數(shù)的調(diào)用過(guò)程都體現(xiàn)在堆棧和退棧上了。調(diào)用構(gòu)造函數(shù)的 “層”太多了,以致于把棧區(qū)溢出了。通常來(lái)講,一般棧區(qū)遠(yuǎn)遠(yuǎn)小于堆區(qū)的,因?yàn)楹瘮?shù)調(diào)用過(guò)程往往不會(huì)多于上千層,而即便每個(gè)函數(shù)調(diào)用需要 1K 的空間(這個(gè)大約相當(dāng)于在一個(gè) C 函數(shù)內(nèi)聲明了 256 個(gè) int 類型的變量),那么棧區(qū)也不過(guò)是需要 1MB 的空間。通常棧的大小是 1-2MB 的。
通常遞歸也不要遞歸的層次過(guò)多,很容易溢出。
解決方法:修改程序。
轉(zhuǎn)自IDONGXU博客

1.7.2 線程池的優(yōu)化

默認(rèn)配置下,Tomcat 會(huì)為每個(gè)連接器創(chuàng)建一個(gè)綁定的線程池(最大線程數(shù) 200),服務(wù)啟動(dòng)時(shí),默認(rèn)創(chuàng)建了 5 個(gè)空閑線程隨時(shí)等待用戶請(qǐng)求。
首先,打開(kāi) ${TOMCAT_HOME}/conf/server.xml,搜索【<Executor name=“tomcatThreadPool”】,開(kāi)啟并調(diào)整為

<Executor name="tomcatThreadPool" namePrefix="catalina-exec-"maxThreads="500" minSpareThreads="20" maxSpareThreads="50" maxIdleTime="60000"/>

然后在connect里指定使用的executor,

<Connector executor="tomcatThreadPool"port="8080" protocol="HTTP/1.1"URIEncoding="UTF-8"connectionTimeout="30000"enableLookups="false"disableUploadTimeout="false"connectionUploadTimeout="150000"acceptCount="300"keepAliveTimeout="120000"maxKeepAliveRequests="1"compression="on"compressionMinSize="2048"compressableMimeType="text/html,text/xml,text/javascript,text/css,text/plain,image/gif,image/jpg,image/png" redirectPort="8443" />

maxThreads :Tomcat 使用線程來(lái)處理接收的每個(gè)請(qǐng)求,這個(gè)值表示 Tomcat 可創(chuàng)建的最大的線程數(shù),默認(rèn)值是 200

minSpareThreads:最小空閑線程數(shù),Tomcat 啟動(dòng)時(shí)的初始化的線程數(shù),表示即使沒(méi)有人使用也開(kāi)這么多空線程等待,默認(rèn)值是 10。

maxSpareThreads:最大備用線程數(shù),一旦創(chuàng)建的線程超過(guò)這個(gè)值,Tomcat 就會(huì)關(guān)閉不再需要的 socket 線程。

上邊配置的參數(shù),最大線程 500(一般服務(wù)器足以),要根據(jù)自己的實(shí)際情況合理設(shè)置,設(shè)置越大會(huì)耗費(fèi)內(nèi)存和 CPU,因?yàn)?CPU 疲于線程上下文切換,沒(méi)有精力提供請(qǐng)求服務(wù)了,最小空閑線程數(shù) 20,線程最大空閑時(shí)間 60 秒,當(dāng)然允許的最大線程連接數(shù)還受制于操作系統(tǒng)的內(nèi)核參數(shù)設(shè)置,設(shè)置多大要根據(jù)自己的需求與環(huán)境。當(dāng)然線程可以配置在“tomcatThreadPool”中,也可以直接配置在“Connector”中,但不可以重復(fù)配置。

URIEncoding:指定 Tomcat 容器的 URL 編碼格式,語(yǔ)言編碼格式這塊倒不如其它 WEB 服務(wù)器軟件配置方便,需要分別指定。

connnectionTimeout: 網(wǎng)絡(luò)連接超時(shí),單位:毫秒,設(shè)置為 0 表示永不超時(shí),這樣設(shè)置有隱患的。通常可設(shè)置為 30000 毫秒,可根據(jù)檢測(cè)實(shí)際情況,適當(dāng)修改。

enableLookups: 是否反查域名,以返回遠(yuǎn)程主機(jī)的主機(jī)名,取值為:true 或 false,如果設(shè)置為false,則直接返回IP地址,為了提高處理能力,應(yīng)設(shè)置為 false。

disableUploadTimeout:上傳時(shí)是否使用超時(shí)機(jī)制。

connectionUploadTimeout:上傳超時(shí)時(shí)間,畢竟文件上傳可能需要消耗更多的時(shí)間,這個(gè)根據(jù)你自己的業(yè)務(wù)需要自己調(diào),以使Servlet有較長(zhǎng)的時(shí)間來(lái)完成它的執(zhí)行,需要與上一個(gè)參數(shù)一起配合使用才會(huì)生效。

acceptCount:指定當(dāng)所有可以使用的處理請(qǐng)求的線程數(shù)都被使用時(shí),可傳入連接請(qǐng)求的最大隊(duì)列長(zhǎng)度,超過(guò)這個(gè)數(shù)的請(qǐng)求將不予處理,默認(rèn)為100個(gè)。

keepAliveTimeout:長(zhǎng)連接最大保持時(shí)間(毫秒),表示在下次請(qǐng)求過(guò)來(lái)之前,Tomcat 保持該連接多久,默認(rèn)是使用 connectionTimeout 時(shí)間,-1 為不限制超時(shí)。

maxKeepAliveRequests:表示在服務(wù)器關(guān)閉之前,該連接最大支持的請(qǐng)求數(shù)。超過(guò)該請(qǐng)求數(shù)的連接也將被關(guān)閉,1表示禁用,-1表示不限制個(gè)數(shù),默認(rèn)100個(gè),一般設(shè)置在100~200之間。

compression:是否對(duì)響應(yīng)的數(shù)據(jù)進(jìn)行 GZIP 壓縮,off:表示禁止壓縮;on:表示允許壓縮(文本將被壓縮)、force:表示所有情況下都進(jìn)行壓縮,默認(rèn)值為off,壓縮數(shù)據(jù)后可以有效的減少頁(yè)面的大小,一般可以減小1/3左右,節(jié)省帶寬。

compressionMinSize:表示壓縮響應(yīng)的最小值,只有當(dāng)響應(yīng)報(bào)文大小大于這個(gè)值的時(shí)候才會(huì)對(duì)報(bào)文進(jìn)行壓縮,如果開(kāi)啟了壓縮功能,默認(rèn)值就是2048。

compressableMimeType:壓縮類型,指定對(duì)哪些類型的文件進(jìn)行數(shù)據(jù)壓縮。

noCompressionUserAgents=“gozilla, traviata”: 對(duì)于以下的瀏覽器,不啟用壓縮。

如果已經(jīng)對(duì)代碼進(jìn)行了動(dòng)靜分離,靜態(tài)頁(yè)面和圖片等數(shù)據(jù)就不需要 Tomcat 處理了,那么也就不需要配置在 Tomcat 中配置壓縮了。

1.7.3 數(shù)據(jù)庫(kù)性能調(diào)優(yōu)

Tomcat性能在等待數(shù)據(jù)庫(kù)查詢被執(zhí)行期間會(huì)降低。如今大多數(shù)應(yīng)用程序都是使用可能包含“命名查詢”的關(guān)系型數(shù)據(jù)庫(kù)。如果是那樣的話,Tomcat會(huì)在啟動(dòng)時(shí)默認(rèn)加載命名查詢,這個(gè)可能會(huì)提升性能。另一件重要事是確保所有數(shù)據(jù)庫(kù)連接正確地關(guān)閉。給數(shù)據(jù)庫(kù)連接池設(shè)置正確值也是十分重要的。我所說(shuō)的值是指Resource要素的最大空閑數(shù)(maxIdle),最大連接數(shù)(maxActive),最大建立連接等待時(shí)間(maxWait)屬性的值。因?yàn)榕渲靡蕾嚺c應(yīng)用要求,我也不能在本文指定正確的值。你可以通過(guò)調(diào)用數(shù)據(jù)庫(kù)性能測(cè)試來(lái)找到正確的值。

1.7.4 其他
  • 開(kāi)啟瀏覽器緩存
  • 一般https會(huì)比http請(qǐng)求慢,當(dāng)然為了安全,我們肯定要選擇https

總結(jié)

以上是生活随笔為你收集整理的Tomcat入门的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。

天堂av观看 | 9999亚洲 | 日韩黄色在线电影 | 五月开心激情 | 久久激情视频 久久 | 久久视频精品在线观看 | 亚洲成人午夜在线 | 欧美日韩一级久久久久久免费看 | 深夜免费小视频 | 香蕉视频在线免费 | 高清不卡毛片 | 国产黄色成人 | 久久精品免费观看 | 在线不卡中文字幕播放 | 欧美性护士 | 成人aⅴ视频 | 黄色a级片在线观看 | 亚洲精品国产区 | 91精品视频在线 | 欧美一级激情 | 97精品国自产拍在线观看 | 午夜黄色大片 | 日韩中文字幕网站 | 狠狠操狠狠干天天操 | 精品国产一区二 | 久久久久人人 | 国产亚洲人成网站在线观看 | 91av在| 国产精品一区二区在线观看免费 | 色偷偷97 | 高清国产一区 | 狠狠综合久久 | 在线黄色国产 | 亚洲va韩国va欧美va精四季 | 狠狠干,狠狠操 | 中文字幕一区二区三 | 日韩美在线观看 | av片子在线观看 | 亚洲日本在线视频观看 | 最近免费观看的电影完整版 | 午夜婷婷网 | 欧美天堂久久 | 欧美日韩大片在线观看 | 天堂中文在线播放 | 日色在线视频 | 777奇米四色 | 婷婷5月色 | 五月婷婷在线视频观看 | 国产色黄网站 | 国产黄色精品视频 | 一区二区三区国 | 在线观看视频色 | 婷婷色站 | 国产午夜一级毛片 | 日韩一区二区三区免费电影 | 丝袜美腿av| 免费黄色av片 | 狠狠干夜夜操 | 麻豆传媒视频在线免费观看 | 五月天天在线 | 国产区精品视频 | 狠狠色丁香婷婷综合视频 | 日韩中文在线观看 | 久久午夜视频 | 久久精品一二三 | 亚洲综合色网站 | 中文字幕一区二区三区精华液 | 99视频在线观看免费 | www,黄视频| 高清在线观看av | 五月天狠狠操 | 国产资源在线视频 | 国产精品12 | 在线看av网址 | 欧美九九九| 九九久久成人 | 国产精品99久久久久久久久久久久 | 日韩一级黄色片 | 日韩成人av在线 | 午夜91在线 | 一区二区精品在线 | av导航福利| 99热这里精品 | 久久亚洲私人国产精品va | 久久精品小视频 | 丁香婷婷深情五月亚洲 | 91在线看黄 | 成年人国产在线观看 | 在线看欧美 | 久草免费看 | 久久人人97超碰com | 欧美日韩一二三四区 | 日韩久久久久久久久久久久 | 粉嫩aⅴ一区二区三区 | 国产剧情一区二区在线观看 | 91精品国产综合久久婷婷香蕉 | 亚洲一区 av| 国产一级黄色av | 日韩特级毛片 | 国产精品门事件 | 毛片的网址 | 久久久91精品国产 | 欧美亚洲国产精品久久高清浪潮 | 日韩精品久久久免费观看夜色 | 美女视频a美女大全免费下载蜜臀 | 五月天天在线 | 日韩成人免费电影 | 国产精品入口66mio女同 | 亚洲国产视频a | 美女国产网站 | 色综合久久网 | 99精品在线免费观看 | 激情综合五月天 | 国精产品999国精产品视频 | 欧美在线观看禁18 | 国产精品美女久久久久久网站 | 99色| 狠狠狠干狠狠 | 成人av在线直播 | 91精品国产福利在线观看 | 成人一级在线 | 国产精品久久99精品毛片三a | 日本中文字幕电影在线免费观看 | 国产美腿白丝袜足在线av | 精品久久久久久久久久岛国gif | 日韩一区二区三 | www.888.av| 好看的国产精品视频 | 在线а√天堂中文官网 | 国产五月色婷婷六月丁香视频 | 久久成人国产精品 | 成人免费 在线播放 | 国产精品不卡在线观看 | 国产精品美女毛片真酒店 | 狠狠网亚洲精品 | 99免费看片 | 久久久国产精品网站 | 亚洲精品国偷拍自产在线观看蜜桃 | 欧美日韩国产一区二区在线观看 | 亚洲黄色大片 | 日韩高清一二区 | 国产一区在线播放 | 亚洲国产大片 | 欧美一二区视频 | 国产香蕉久久 | 国产精品久久久久久久电影 | 免费看一及片 | 97在线观看免费高清 | 色婷婷中文 | 又黄又爽又刺激的视频 | 嫩草伊人久久精品少妇av | 视频99爱 | 91资源在线观看 | 亚洲精品免费在线观看 | 色综合天 | 伊人国产在线播放 | 久草综合视频 | av 一区 二区 久久 | 色综合久久88色综合天天6 | 久久久国产精品麻豆 | 日本最大色倩网站www | 91亚洲精品久久久蜜桃借种 | 久久免费黄色 | 97电院网手机版 | 亚洲草视频 | 亚洲精品国产精品乱码在线观看 | 91桃色在线观看视频 | 人人爽人人爽人人片av | 欧美另类xxx| 最新av网站在线观看 | 色噜噜色噜噜 | 日韩久久精品一区 | 亚洲免费精品一区二区 | 特级西西444www大胆高清无视频 | 国产精品第10页 | 色婷在线| 亚洲精品视频免费 | 亚洲成年人在线播放 | 久久免费视频6 | 国产高清中文字幕 | 欧美性色黄大片在线观看 | av电影一区二区三区 | 免费国产在线精品 | 在线一级片 | 成人精品视频久久久久 | 色天天久久 | 91欧美精品 | 一区二区三区观看 | 成年人在线观看免费视频 | 色丁香综合 | 91av视屏| 国产精品第十页 | 深爱激情五月综合 | 久久99精品久久久久久三级 | 亚洲激情一区二区三区 | 成人黄色片免费 | 国产手机在线观看 | 久影院| 国产一区二区观看 | 免费网站在线 | 国产精品99蜜臀久久不卡二区 | 91在线精品秘密一区二区 | 国产精品久久久久久久久免费看 | 亚洲天天在线日亚洲洲精 | 久久永久视频 | 日韩激情视频在线观看 | 高潮毛片无遮挡高清免费 | 日韩大片在线免费观看 | 久久久久久网站 | av不卡在线看 | 色资源二区在线视频 | 国产在线日韩 | 在线日本看片免费人成视久网 | 99在线精品免费视频九九视 | 久久女同性恋中文字幕 | 人人澡人 | 免费看污片 | av网站地址| 国产91影院 | 国产高清福利在线 | 91大神精品视频在线观看 | 国产自产在线视频 | 国模吧一区 | 特级a毛片 | 亚洲欧洲国产视频 | 午夜精品成人一区二区三区 | 天天爱天天操 | 蜜臀aⅴ精品一区二区三区 久久视屏网 | 最新日韩在线观看视频 | 久久免费精品一区二区三区 | 亚洲国产精品成人av | 亚洲免费色 | 精品国产一区二区三区四区vr | 天天干中文字幕 | 国产精品久久久久久久久久99 | 国产一级电影在线 | 色在线亚洲 | 2022久久国产露脸精品国产 | 亚洲久草在线视频 | 久久黄网站 | 精品亚洲国产视频 | 日韩激情一二三区 | 色婷婷激情 | 9在线观看免费高清完整版 玖玖爱免费视频 | www免费 | 99久久久国产精品免费99 | 夜又临在线观看 | 国产一级淫片免费看 | 99久久婷婷国产 | 最近日本韩国中文字幕 | av成人动漫 | 午夜精品中文字幕 | 色在线网站 | 色姑娘综合网 | 激情电影影院 | 国产精品原创av片国产免费 | 国产丝袜一区二区三区 | 亚洲乱亚洲乱亚洲 | 人人爱人人做人人爽 | 天天色 天天 | 一区二区三区日韩视频在线观看 | 国产精品v欧美精品 | 国产精品精品国产色婷婷 | 中文字幕日韩精品有码视频 | 五月视频 | 草久久精品| 一本大道久久精品懂色aⅴ 五月婷社区 | 成人网中文字幕 | 超碰国产在线播放 | 日韩www在线| 天天色综合1 | 精品中文字幕在线观看 | 综合久久久久久 | 国产高清专区 | 国产精品va在线观看入 | 欧美一级激情 | 国产爽妇网| 国产精品久久久久久久久久妇女 | 日韩在线国产精品 | 日韩久久精品一区二区三区下载 | 欧美精品一区二区性色 | 久久久久国产精品一区 | 亚洲国产中文在线 | 最近最新中文字幕视频 | 97久久精品午夜一区二区 | 色窝资源 | 久久视频在线观看中文字幕 | 久久成人国产 | 久久精品福利视频 | 夜夜骑日日操 | 丁香六月五月婷婷 | 久久综合九色综合欧美狠狠 | 久久免费美女视频 | www.色午夜| 97超碰在线久草超碰在线观看 | 亚洲成 人精品 | 亚洲h在线播放在线观看h | 高清av免费看 | 91精品夜夜| 在线视频久久 | 免费成人在线网站 | 91久久精品一区二区二区 | av一级久久 | 成人午夜剧场在线观看 | av高清免费在线 | 免费看的黄色 | 五月婷婷,六月丁香 | 在线观看日本高清mv视频 | 国产精品自拍在线 | 日韩久久精品一区二区 | 中文字幕国产 | 日韩有色| 中文字幕日本在线观看 | 欧美天天综合网 | 视频一区在线免费观看 | 国产精品久久久久久久久毛片 | 在线观看播放av | 国产福利91精品 | 亚洲综合成人婷婷小说 | 在线日本看片免费人成视久网 | 91久久电影 | 91夫妻自拍| 天天弄天天操 | 一区二区三区韩国免费中文网站 | 欧美日韩高清一区二区 国产亚洲免费看 | 久久久一本精品99久久精品66 | www.天天射.com | 在线观看日本韩国电影 | 日韩免费电影网 | 国产精品6999成人免费视频 | 中文字幕大全 | 在线日本看片免费人成视久网 | 狠狠操欧美 | 人人精品| 夜夜躁狠狠躁 | 中文字幕日韩电影 | 欧美一区二区三区免费观看 | 国产精品久久久av久久久 | 日韩av免费一区二区 | 国产在线观看h | 日韩av快播电影网 | 69精品在线 | 久久精品国产免费 | 亚洲aⅴ一区二区三区 | 97香蕉超级碰碰久久免费软件 | 亚洲va天堂va欧美ⅴa在线 | 日韩在线免费高清视频 | 丁香导航 | 人人添人人 | 日日碰狠狠添天天爽超碰97久久 | 天无日天天操天天干 | 激情网五月婷婷 | 美腿丝袜av| 久久综合色一综合色88 | 99视频在线免费观看 | 日本久久高清视频 | 久草在线最新 | 色网站在线观看 | 亚洲最新av在线网站 | 狠狠久久综合 | 高清中文字幕 | 免费观看国产视频 | 国产成人精品电影久久久 | 成人国产精品电影 | 色在线网站| 日韩欧美电影在线观看 | 999久久精品 | 欧美日本一二三 | 国内精品久久久久 | avcom在线 | 国产精品久久嫩一区二区免费 | 一区二区三区四区精品视频 | 99久久日韩精品免费热麻豆美女 | 国产亚洲精品久久久久久电影 | 日韩国产精品久久 | 欧美一级小视频 | 久久精品视频在线播放 | 久久综合射 | 国产夫妻性生活自拍 | av高清一区二区三区 | 亚洲丁香日韩 | 免费视频xnxx com| 91九色老| 日批视频国产 | 欧美一区在线看 | 成人影片在线免费观看 | 人人插人人费 | 日韩专区一区二区 | www.久久91 | 国产午夜精品免费一区二区三区视频 | 免费色网站 | 美女网站在线免费观看 | 久久久久久久电影 | av电影不卡| 九色视频自拍 | 国产乱视频 | av先锋中文字幕 | 免费看的黄色片 | 免费精品国产va自在自线 | 久久99久久精品国产 | 免费视频 你懂的 | 97精品在线视频 | 午夜视频在线网站 | 中文字幕av免费观看 | 日日干,天天干 | 国产高清一 | 国产精品自产拍 | 在线精品视频免费播放 | 亚洲欧美日韩一级 | 最近日本韩国中文字幕 | 日本中文字幕视频 | 色综合天天天天做夜夜夜夜做 | 国产在线传媒 | av三区在线 | 天天插日日射 | 日韩高清免费在线 | 91视频久久久久 | 亚洲视频 中文字幕 | 成人黄色在线视频 | 在线观看自拍 | 国产久草在线 | 狠狠狠色丁香婷婷综合久久五月 | 婷婷综合视频 | 日韩婷婷 | 久久国产成人午夜av影院宅 | 亚洲欧美怡红院 | 免费日韩av片 | 伊人午夜视频 | 免费日韩 精品中文字幕视频在线 | 欧美视频在线观看免费网址 | 在线观看你懂的网站 | 福利一区在线 | 亚洲国产综合在线 | 精品视频久久久 | 精品999国产 | www99精品| 99色人| 国产精品一区免费观看 | 久久久久久久久久久成人 | 伊人中文网 | 久久不卡免费视频 | 91精品国产乱码久久 | 午夜av影院| 一区在线观看 | 精品国产1区二区 | 天天躁日日躁狠狠 | 亚洲最新av| 国产不卡精品 | 国产不卡毛片 | 日本中文一级片 | 日韩欧美高清不卡 | 91久久精品一区二区二区 | 视频成人 | 色大片免费看 | 狠狠操狠狠干天天操 | 国产成人精品一区二 | av在线免费播放 | 成人三级av | 久热av| 欧美日韩中文国产 | 日韩毛片精品 | 午夜免费在线观看 | 精品久久久久久亚洲综合网站 | 国产美女精品久久久 | 五月激情av | 97色在线| 久久久久久毛片精品免费不卡 | 美女黄色网在线播放 | 超碰在97 | 亚洲日韩欧美一区二区在线 | 精品国产一区二区三区久久久 | 天天操天天干天天操天天干 | 久久99久久99 | 国产精品免费久久久久影院仙踪林 | 麻豆免费在线视频 | 中字幕视频在线永久在线观看免费 | 亚洲黄色在线播放 | 亚洲视频在线观看网站 | 精品久久久久久久久久久久 | www天天干com| 天天操天天吃 | 黄在线免费观看 | 久久久久久久久久免费 | 久久婷婷影视 | 在线a视频免费观看 | 免费激情在线电影 | 天天躁天天操 | 亚洲黄色在线观看 | 国产成人一区二区三区在线观看 | 激情网在线观看 | 国产剧情久久 | 久久久久一区 | 婷婷电影在线观看 | 99视频在线 | 国产黄色免费看 | 99视频一区 | 久久永久免费视频 | 久久99精品国产99久久 | 久久综合爱 | 亚洲每日更新 | 超碰资源在线 | 亚洲精品 在线视频 | www.色午夜.com | 二区在线播放 | 国产黄色片免费在线观看 | 999久久久免费视频 午夜国产在线观看 | 国产在线观看免费 | 在线观看视频亚洲 | 在线免费视频一区 | 日韩理论在线 | 欧美日在线 | 99精品视频精品精品视频 | 国产中文字幕一区 | 在线观看小视频 | 成人免费在线观看av | 国产精品久久久久婷婷二区次 | 九色精品 | 久久99视频| 久久艹影院 | 免费观看www视频 | av网站播放 | 成人免费视频网站在线观看 | 日本精品一区二区三区在线观看 | 五月激情综合婷婷 | 国产福利91精品 | 久久国内免费视频 | 在线观看一区视频 | 亚州精品在线视频 | 欧美日韩高清一区二区 国产亚洲免费看 | 人人爱人人舔 | 天天干.com | 中文字幕在线不卡国产视频 | 欧美日韩二区三区 | 狠狠色丁香久久婷婷综合丁香 | 久久视频免费在线 | 久久www免费人成看片高清 | v片在线播放| 欧美一区日韩精品 | 伊人天天| 五月婷婷爱 | 日日夜夜网站 | 亚洲精品国产欧美在线观看 | 国产精品免费久久 | 日韩av电影中文字幕 | 日韩电影一区二区在线观看 | 成人av一二三区 | 日韩伦理片一区二区三区 | 日韩国产在线观看 | 在线亚洲播放 | 久久综合久久综合这里只有精品 | 探花视频网站 | 免费久久久久久 | 青青河边草手机免费 | 欧美性免费 | 国产69精品久久久久99尤 | 日本xxxx裸体xxxx17 | 久久久精品一区二区 | 久久永久免费 | 欧美精品免费在线 | 亚洲激情久久 | 五月香婷| 玖玖视频免费在线 | 精品亚洲视频在线 | 日韩最新中文字幕 | 91丨九色丨国产在线观看 | 激情婷婷在线 | 精品一二区 | 国产精品高潮呻吟久久久久 | 欧美黑人猛交 | 又色又爽又黄 | 日韩在线观看视频免费 | 欧美日韩免费网站 | 中文字幕一区二区三区四区 | 天天射,天天干 | 五月天视频网 | 伊人色综合网 | 99久久www| 国产精品9999| av成人在线网站 | www免费看| 天天操综合网站 | 国产日韩精品一区二区三区 | 国产在线精品二区 | 免费在线观看av不卡 | 在线黄色免费av | www久久久| 97超碰国产精品 | 激情在线网站 | 亚洲成人精品国产 | 日韩有码第一页 | 99热精品在线观看 | 奇米网8888| 国产精品久久av | 国产h在线播放 | 中文字幕亚洲字幕 | 曰本免费av | 国产理论一区二区三区 | 国产精品麻豆免费版 | 不卡中文字幕在线 | 久久久久激情视频 | 久久99精品久久久久久三级 | 亚洲97在线| 精品国产乱子伦一区二区 | 欧美a性 | 久久久久久久国产精品 | 97国产电影 | 日韩欧美综合视频 | 免费a v在线 | 久久久久久久久久久久久影院 | 亚洲激情婷婷 | 亚洲午夜精品一区二区三区电影院 | 久久99久久久久久 | 久久精品久久久久电影 | 9ⅰ精品久久久久久久久中文字幕 | 亚洲精品黄色 | 激情自拍av | 免费av试看 | 日韩在线高清免费视频 | 国产中文字幕91 | www.色午夜.com | 99操视频| 天天干视频在线 | 国产91探花 | 黄色免费在线看 | 国产第一页在线播放 | 免费一级日韩欧美性大片 | 国产在线毛片 | 久久99久久久久 | 园产精品久久久久久久7电影 | 中文字幕在线看视频 | 国产免费观看久久黄 | 免费看一级片 | 国产精品高清av | 三级小视频在线观看 | 亚洲天堂色婷婷 | 久久久96| 久久经典视频 | www狠狠| 九九热在线观看视频 | 91精品天码美女少妇 | 丝袜美女在线观看 | www蜜桃视频| 国产精品刺激对白麻豆99 | 欧美亚洲久久 | 18性欧美xxxⅹ性满足 | 亚洲精品视频www | 日韩欧美一区二区在线观看 | 亚洲天堂网视频在线观看 | 国产一级片视频 | av大全在线看 | 最新免费av在线 | 亚洲2019精品 | 欧美日韩伦理在线 | www.操.com| 免费观看一区二区 | 午夜视频免费播放 | 国产高清视频 | 五月天综合色激情 | 亚洲女欲精品久久久久久久18 | 国产精品一区在线播放 | 一区二区视频免费在线观看 | 日韩色高清 | 天天色天天干天天色 | 久久国产视频网站 | 亚洲乱亚洲乱妇 | 亚洲激情中文 | 国产精品免费久久久 | 一级一片免费视频 | 日韩精品字幕 | 国产喷水在线 | 日韩手机视频 | 亚洲精品456在线播放乱码 | 在线观看一级 | 日韩精品高清视频 | 黄污网站在线观看 | 激情欧美一区二区三区免费看 | 久久免费一 | 一区二区丝袜 | 亚洲精品免费视频 | 婷婷丁香花| 久久综合九色99 | 中文字幕第 | 日本在线观看中文字幕 | www.久草视频 | 日韩亚洲精品电影 | 国产少妇在线观看 | 一区二三国产 | 亚洲人精品午夜 | 日日干狠狠操 | 国产在线专区 | 日韩精品一区二区三区高清免费 | 午夜12点| www.99久久.com | 亚州人成在线播放 | 麻豆视频免费在线播放 | 国产视频在线免费 | 婷婷色亚洲 | 一区二区三区不卡在线 | 免费黄色a网站 | 久久中文网| 久久99久久99精品中文字幕 | 亚洲视频免费在线 | 中文字幕高清免费日韩视频在线 | 亚洲国产精品日韩 | 99色免费 | 插久久| 欧美韩日精品 | 91在线操| 婷婷激情欧美 | 精品影院| 一级理论片在线观看 | 精品高清视频 | 久久精品99国产精品亚洲最刺激 | 亚洲最大激情中文字幕 | 久久久久久久久久久久久久av | 日韩在线第一 | 亚洲日本精品 | 欧美成人播放 | 日本午夜在线亚洲.国产 | 中文字幕国产在线 | 成人毛片a | 日韩精品免费在线播放 | 天天爱av导航 | 国产18精品乱码免费看 | 国产精品久久久久免费a∨ 欧美一级性生活片 | 天堂在线视频中文网 | 在线视频 日韩 | 在线成人看片 | 久久午夜剧场 | 成人午夜精品福利免费 | 国产1区2 | 一区二区三区av在线 | 国内精品久久久精品电影院 | 成人亚洲欧美 | 91网页版在线观看 | 91新人在线观看 | 国内精品久久久久久久久久久 | 91激情 | 免费看黄在线网站 | 操久久网 | av国产网站| 91在线精品视频 | 日本黄色免费电影网站 | 天堂av高清 | 操久| 正在播放 久久 | 69国产精品成人在线播放 | 久草免费新视频 | 麻豆免费视频网站 | 国产色黄网站 | 国内综合精品午夜久久资源 | 五月天丁香视频 | 麻豆视频国产 | 伊人www22综合色 | 在线观看一级片 | 久草在线最新 | 黄色av影院| 激情综合五月 | 天天激情综合网 | 啪啪精品| 九七视频在线 | 久久人人97超碰精品888 | av在线8| 久久国产免费看 | 99re6热在线精品视频 | 欧美,日韩 | 色综合久久88色综合天天6 | 欧美一级在线观看视频 | 97精品超碰一区二区三区 | 国产亚洲精品美女 | av在线影片 | 狠狠色伊人亚洲综合网站色 | 在线小视频你懂得 | 91伊人久久大香线蕉蜜芽人口 | 国产伦理久久精品久久久久_ | 国语精品免费视频 | 精品国产一区二区三区在线 | 色婷婷av国产精品 | 日本精品视频一区二区 | 中文字幕在线观看你懂的 | 久草在线免费资源 | 亚洲高清不卡av | 91高清视频 | 青青啪 | 日本特黄特色aaa大片免费 | 久久国产一二区 | 久久久久高清毛片一级 | 亚洲狠狠婷婷综合久久久 | 日韩视频免费观看高清完整版在线 | 一区在线播放 | 久久精国产 | 日本在线视频网址 | 夜夜爽88888免费视频4848 | 天天操夜操视频 | 97在线视| 狠狠88综合久久久久综合网 | 又黄又爽的免费高潮视频 | 久久久久 免费视频 | 国产精品 日韩精品 | 国产美女视频黄a视频免费 久久综合九色欧美综合狠狠 | 成人午夜在线电影 | 五月婷婷久 | 日本精油按摩3 | 在线免费黄色毛片 | 午夜视频在线观看网站 | 91亚洲永久精品 | 国产成人精品一区二区在线观看 | 成人在线免费观看网站 | 日韩在线播放欧美字幕 | 欧美久久久久久久久 | 久久99国产精品 | 超碰伊人网 | 免费看的国产视频网站 | а天堂中文最新一区二区三区 | 国产97视频在线 | 免费成人在线网站 | 一区二区伦理 | 精品一区二区免费在线观看 | 97超碰人人 | 在线看一级片 | 久久成人午夜视频 | 免费黄色网址大全 | 久久久电影 | 丁香六月久久综合狠狠色 | 亚洲视频在线观看网站 | 超碰成人免费电影 | 日女人免费视频 | 久久亚洲福利视频 | 国产精品免费观看久久 | av免费在线观看网站 | 色综合久久久久综合99 | 亚洲手机天堂 | 欧美淫视频| 亚洲精品网址在线观看 | 在线中文字幕观看 | 日韩在线三区 | 亚洲丁香日韩 | 天天射天天干天天爽 | 九九视频免费在线观看 | 日韩乱色精品一区二区 | 久久久久欧美精品999 | 波多野结衣综合网 | 天天操天天操天天干 | 免费黄a| 久久久久成人精品免费播放动漫 | 成人性生交视频 | 免费在线观看av不卡 | 午夜影视av | 99婷婷狠狠成为人免费视频 | 国产在线不卡视频 | av一级久久| 在线91视频| 丝袜一区在线 | 国产精品免费久久久久 | 日本中出在线观看 | 狠狠色丁婷婷日日 | 黄色特级片 | av中文字幕亚洲 | 天天干,天天射,天天操,天天摸 | 亚洲国产精品视频在线观看 | 亚洲日本一区二区在线 | 97色在线观看| 色婷婷综合久久久中文字幕 | 免费看一及片 | 国产成人在线观看免费 | 天天看天天操 | 亚洲极色| 色精品视频 | av国产在线观看 | 一级黄色片网站 | 久久草视频 | 国产精品自产拍在线观看桃花 | 日韩欧美精品在线视频 | 欧美乱大交 | 日日日天天天 | 午夜精品久久久久久99热明星 | 五月婷婷激情六月 | 久久久久免费精品 | 黄色电影在线免费观看 | 日韩激情在线视频 | 亚洲国产精品成人精品 | 成年免费在线视频 | www.888av| 国产网站色 | 亚洲精品国产精品99久久 | 亚洲免费av片| 亚洲国产wwwccc36天堂 | 337p西西人体大胆瓣开下部 | 国产精品免费在线 | 国产精品一级视频 | 亚洲国产成人在线观看 | 天天干亚洲 | 久久久.com| 亚洲波多野结衣 | 欧美成人影音 | 精品久久网 | 欧美激情视频一区二区三区免费 | 国产欧美综合在线观看 | 丁香婷婷激情 | 精品国产伦一区二区三区观看体验 | 免费开视频 | 国产精品自产拍在线观看蜜 | 精品久久久久亚洲 | 亚洲粉嫩av| 九七视频在线 | 91福利社区在线观看 | 国产黄色片免费 | 99视频精品视频高清免费 | 人人草人 | 国产精品a久久久久 | 999久久久久久久久 69av视频在线观看 | 欧美日韩免费一区 | 日韩中文字幕亚洲一区二区va在线 | 国产精品久久久久av福利动漫 | 亚洲夜夜网 | 欧美精品久久天天躁 | 成人久久久电影 | 在线观看视频你懂 | 狠狠干狠狠插 | 黄色免费网站 | 国产一区在线视频观看 | 久久久午夜剧场 | 午夜精品一区二区国产 | 六月色 | 黄av资源| 久久人人射 | 成人国产精品一区二区 | 日日夜夜网站 | 国产精品久久久久婷婷二区次 | 久久久久久久久久福利 | 日免费视频 | 在线观看网站黄 | 亚洲影视九九影院在线观看 | 欧美激情精品久久久久 | 521色香蕉网站在线观看 | 成人在线视频你懂的 | 国产一级精品视频 | 欧美日韩不卡一区二区 | 97中文字幕 | 久久伊人国产精品 | 亚洲黄色一级大片 | 97在线视频观看 | 国产精品午夜久久久久久99热 | 6699私人影院 | 成人av网站在线 | 在线观看日韩视频 | 国产一区二区三区久久久 | 国产精成人品免费观看 | 中文字幕在线观看国产 | av免费片| 欧美一级片免费 | 伊人手机在线 | 国产黄色免费电影 | 婷婷丁香狠狠爱 | 在线观看日韩av | 精品在线视频播放 | 成人app在线播放 | 99re视频在线观看 | 久久精品成人欧美大片古装 | 麻豆免费视频网站 | 免费观看性生活大片 | 丝袜足交在线 | 免费影视大全推荐 | 国产又粗又猛又黄又爽的视频 | 最近中文字幕免费视频 | 中文字幕 婷婷 | 97高清视频| 欧美在线91 | 激情五月婷婷综合网 | 久久嗨 | 日韩aa视频| 三级小视频在线观看 | 日韩在线一区二区免费 | av 一区二区三区四区 | 99国内精品 | 免费一级特黄毛大片 | 成人一级电影在线观看 | 久久精品99精品国产香蕉 | 国产精品免费视频观看 | 日p视频在线观看 | 在线观看激情av | 亚州成人av在线 | 成人免费看视频 | 国产麻豆视频免费观看 | 大胆欧美gogo免费视频一二区 | 日本99精品 | 九色自拍视频 | 国产精品福利无圣光在线一区 | 亚a在线 | 99这里精品 | 97在线观 | 超碰人人在线 | 久久国产精品一区二区三区 | 色a资源在线 | 国产成人高清在线 | 日本黄色免费大片 | 午夜国产一区二区三区四区 | 久久久久久欧美二区电影网 |