亚洲中字慕日产2020,大陆极品少妇内射AAAAAA,无码av大香线蕉伊人久久,久久精品国产亚洲av麻豆网站

資訊專欄INFORMATION COLUMN

帶大家一起深入Tomcat容器架構剖析

IT那活兒 / 659人閱讀
帶大家一起深入Tomcat容器架構剖析
一、web容器簡介


1
     概念       

1)服務器:安裝了服務器軟件的計算機

2)服務器軟件:接收用戶的請求,處理請求,做出響應

3)web服務器軟件:在web服務器軟件中,可以部署web項目,讓用戶通過瀏覽器來訪問這些項目

2
常見Web服務器軟件

1) webLogic:oracle公司,大型的JavaEE服務器,支持所有的JavaEE規(guī)范,收費的。

2) webSphere:IBM公司,大型的JavaEE服務器,支持所有的JavaEE規(guī)范,收費的。

3) JBOSS:JBOSS公司的,大型的JavaEE服務器,支持所有的JavaEE規(guī)范,收費的。

4) Tomcat:Apache基金組織,中小型的JavaEE服務器,僅僅支持少量的JavaEE規(guī)范servlet/jsp。開源的,免費的。


二、HTTP協(xié)議必知必會
1
HTTP 和 HTML 有什么區(qū)別?

HTTP是協(xié)議規(guī)范HTML是超文本標記語言用來規(guī)范顯示格式。

2
  http工作原理  


3
   http協(xié)議   


三、Tomcat系統(tǒng)架構


1
Tomcat總體架構

Tomcat 的2 個核心功能:

1) 處理Socket 連接,負責網(wǎng)絡字節(jié)流與Request 和Response 對象的轉化。

加載和管理Servlet,以及具體處理Request 請求。

2) Tomcat設計了兩個核心組件連接器(Connector)和容器(Container)來分別做這兩件事情。連接器負責對外交流,容器負責內(nèi)部處理。

2
  連接器  

我們可以把連接器的功能需求進一步細化,比如:

監(jiān)聽網(wǎng)絡端口。

接受網(wǎng)絡連接請求。

讀取請求網(wǎng)絡字節(jié)流。

根據(jù)具體應用層協(xié)議(HTTP/AJP)解析字節(jié)流,生成統(tǒng)一的Tomcat Request對象。

將Tomcat Request對象轉成標準的ServletRequest。

調(diào)用Servlet 容器,得到ServletResponse。

將ServletResponse轉成TomcatResponse 對象。

將TomcatResponse 轉成網(wǎng)絡字節(jié)流。

將響應字節(jié)流寫回給瀏覽器


---->綜上得到三個高內(nèi)聚的功能

1.網(wǎng)絡通信。

2.應用層協(xié)議解析。

3.Tomcat Request/Response與ServletRequest/ServletResponse的轉化

3
   容器   

4
tomcat打破雙親委派加載機制

5
Tomcat類加載器的層次結構

6
請求定位Servlet的過程


1)首先,根據(jù)協(xié)議和端口號選定Service 和Engine

2)然后,根據(jù)域名選定Host

3)之后,根據(jù)URL 路徑找到Context 組件

4)最后,根據(jù)URL 路徑找到Wrapper(Servlet)


四、性能優(yōu)化
  • 清理你的tomcat

  • 清理不必要的Web應用

  • 清理XML配置文件

  • 清理JAR文件(web lib目錄不應該出現(xiàn)servlet或者tomcat自身的jar包 provided

  • 清理其他文件(比如log日志,work目錄下的class)

  • 禁止 Tomcat TLD 掃描  

  • 關閉 WebSocket 支持

  • 關閉 JSP 支持

  • 禁止 Servlet 注解掃描

  • 并行啟動多個 Web 應用


CMSvs G1,G1的兩大特點:

(1)G1可以并發(fā)完成大部分GC的工作,這期間不會“Stop-The-World”。

(2)G1使用非連續(xù)空間,這使G1 能夠有效地處理非常大的堆。此外,G1可以同時收集年輕代和年老代。G1并沒有將Java堆分成三個空間(Eden、Survivor和Old),而是將堆分成許多(通常是幾百個)非常小的區(qū)域。這些區(qū)域是固定大小的(默認情況下大約為2MB)。每個區(qū)域都分配給一個空間。G1 收集器的Java 堆如下圖所示


問題:

1.什么是內(nèi)存泄漏

2.什么是內(nèi)存溢出(java.lang.OutOfMemoryError:Java heap space)

1)內(nèi)存泄漏

2)配置問題

3)過度使用finalize


gc問題的分析與解決

1. 使用jstat命令觀察gc的過程

2. 通過GCViewer 工具查看GC 日志,用GCViewer 打開程序指定輸出的gc.log,會看到這樣的圖:

3. 為了找到內(nèi)存泄漏點,我們通過jmap 工具生成Heap Dump:

jmap -dump:live,format=b,file=94223.bin94223

4. 用Eclipse MemoryAnalyzer 打開Dump文件,通過內(nèi)存泄漏分析,得到這樣一個分析報告:

從報告中可以看到,JVM內(nèi)存中有一個長度為4000 萬的List,至此我們也就找到了泄漏點。


END



文章版權歸作者所有,未經(jīng)允許請勿轉載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉載請注明本文地址:http://www.ezyhdfw.cn/yun/129960.html

相關文章

  • 【備戰(zhàn)春招/秋招系列】Java程序員必備書單

    摘要:相關推薦,豆瓣評分,人評價本書介紹了在編程中條極具實用價值的經(jīng)驗規(guī)則,這些經(jīng)驗規(guī)則涵蓋了大多數(shù)開發(fā)人員每天所面臨的問題的解決方案。實戰(zhàn)高并發(fā)程序設計推薦豆瓣評分,書的質(zhì)量沒的說,推薦大家好好看一下。 該文已加入開源文檔:JavaGuide(一份涵蓋大部分Java程序員所需要掌握的核心知識)。地址:https://github.com/Snailclimb... 【強烈推薦!非廣告!】...

    saucxs 評論0 收藏0
  • 深度剖析Spring Boot自動裝配機制實現(xiàn)原理

    摘要:所以,所謂的自動裝配,實際上就是如何自動將裝載到容器中來。實際上在版本中,模塊驅動注解的出現(xiàn),已經(jīng)有了一定的自動裝配的雛形,而真正能夠實現(xiàn)這一機制,還是在版本中,條件注解的出現(xiàn)。,我們來看一下的自動裝配是怎么一回事。在前面的分析中,Spring Framework一直在致力于解決一個問題,就是如何讓bean的管理變得更簡單,如何讓開發(fā)者盡可能的少關注一些基礎化的bean的配置,從而實現(xiàn)自動裝...

    不知名網(wǎng)友 評論0 收藏0
  • Java學習必備書籍推薦終極版!

    摘要:實戰(zhàn)高并發(fā)程序設計推薦豆瓣評分書的質(zhì)量沒的說,推薦大家好好看一下。推薦,豆瓣評分,人評價本書介紹了在編程中條極具實用價值的經(jīng)驗規(guī)則,這些經(jīng)驗規(guī)則涵蓋了大多數(shù)開發(fā)人員每天所面臨的問題的解決方案。 很早就想把JavaGuide的書單更新一下了,昨晚加今天早上花了幾個時間對之前的書單進行了分類和補充完善。雖是終極版,但一定還有很多不錯的 Java 書籍我沒有添加進去,會繼續(xù)完善下去。希望這篇...

    Steve_Wang_ 評論0 收藏0
  • 深入剖析 Laravel 服務容器

    摘要:劃下重點,服務容器是用于管理類的依賴和執(zhí)行依賴注入的工具。類的實例化及其依賴的注入,完全由服務容器自動的去完成。 本文首發(fā)于 深入剖析 Laravel 服務容器,轉載請注明出處。喜歡的朋友不要吝嗇你們的贊同,謝謝。 之前在 深度挖掘 Laravel 生命周期 一文中,我們有去探究 Laravel 究竟是如何接收 HTTP 請求,又是如何生成響應并最終呈現(xiàn)給用戶的工作原理。 本章將帶領大...

    abson 評論0 收藏0

發(fā)表評論

0條評論

IT那活兒

|高級講師

TA的文章

閱讀更多
最新活動
閱讀需要支付1元查看
<