undertow服务器分析_进入Undertow Web服务器
undertow服務器分析
隨著Java EE 7的到來以及處理諸如Web Sockets API和HTTP升級(例如EJB over HTTP)之類的高級功能的要求,WildFly開發(fā)團隊已經(jīng)做出了重要決定。 在長期致力于JBoss Web服務器(Apache Tomcat的一個分支)之后,新版本的應用程序服務器現(xiàn)在基于名為Undertow的新Web服務器。
Undertow是一種基于Java的靈活,快速的Web服務器,它基于J2SE 新輸入輸出(NIO) API。 Undertow是圍繞基于組合的體系結構設計的,該體系結構允許您通過組合稱為處理程序的小型單個組件來構建功能全面的Web服務器。 這些處理程序鏈接在一起以形成功能齊全的Java EE servlet 3.1容器或嵌入在代碼中的更簡單的HTTP Process處理程序。
從下圖中可以看到,一個處理程序鏈由幾個單獨的處理程序組成,這些處理程序最終會產(chǎn)生Servlet響應或錯誤,例如在找不到請求的Path的情況下:
Undertow Web服務器還可以靈活地在非阻塞異步處理程序之間進行選擇,以處理任務,或將請求委托給由線程池支持的阻塞處理程序。
現(xiàn)在,我們將了解Web服務器的配置,因此只需打開您的配置文件(任何獨立的配置文件或domain.xml ),然后移動到默認情況下如下所示的“ undertow ”子系統(tǒng)即可:
<subsystem xmlns="urn:jboss:domain:undertow:1.0"><buffer-caches><buffer-cache name="default" buffer-size="1024" buffers-per-region="1024" max-regions="10" /></buffer-caches><server name="default-server"><http-listener name="default" max-post-size="10485760" socket-binding="http" /><host name="default-host" alias="localhost"><location name="/" handler="welcome-content" /></host></server><servlet-container name="default" default-buffer-cache="default" stack-trace-on-error="local-only"><jsp-config /><persistent-sessions path="persistent-web-sessions" relative-to="jboss.server.data.dir" /></servlet-container><handlers><file name="welcome-content" path="${jboss.home.dir}/welcome-content" directory-listing="true" /></handlers> </subsystem>Undertow配置的關鍵要素之一是緩沖區(qū)緩存 。 緩沖區(qū)本質上是一個內存塊,您可以在其中寫入數(shù)據(jù),然后可以在以后再次讀取。 該內存塊包裝在NIO Buffer對象中,該對象提供了一組方法,可以更輕松地使用該內存塊。 使用緩沖區(qū)的明顯優(yōu)勢是內存訪問比物理訪問快得多。
除了Java NIO外,WildFly還大量使用XNIO( http://www.jboss.org/xnio ),它是一個低級I / O層,可在任何地方使用以簡化NIO API的使用。 它解決了使用選擇器的一些復雜性,以及對多播套接字和非套接字I / O(例如串行端口)缺乏NIO支持,同時仍保留了NIO中提供的所有功能。
為了管理Undertow Web服務器,請從管理控制臺中選擇Profile選項卡,然后移至Web面板。 其中包含一組標簽,例如:
- Web服務 :用于指定一些核心Web服務設置,例如WSDL主機和端口
- Servlets :用于指定是否使用開發(fā)模式(默認為false),該模式允許即時重新加載JSP。
- HTTP :用于配置Undertow HTTP連接器。 例如,您將從此處將Web服務器與IO資源池相關聯(lián)
- Undertow Core :用于將處理程序和過濾器與HTTP連接關聯(lián)。
配置Web服務器池
如果您來自JBoss AS 7環(huán)境,則這是您配置的一部分,將進行更改。 在應用程序服務器的早期版本中,您曾經(jīng)引用??線程執(zhí)行器來調整Web服務器的線程池。 另一方面,對于WildFly 8,您需要引用一個需要在IO子系統(tǒng)中創(chuàng)建的Worker元素。 讓我們來看看如何做。 從左樹菜單中展開“ 核心”選項,然后選擇“ IO ”,如下圖所示:
需要從主面板中選擇“ Worker ”面板。 如您所見,“默認”工作程序已經(jīng)存在。 您可以隨時單擊相應的按鈕來創(chuàng)建或刪除新的。 但是,現(xiàn)在我們將單擊“ 編輯 ”鏈接,以便我們自定義默認工作線程中要使用的線程數(shù)。 單擊鏈接后,我們將編輯以下屬性:
第一個參數(shù), 堆棧大小對應于Web服務器線程堆棧大小。 使用更大的線程堆棧大小,Web服務器將消耗更多資源,因此可以支持更少的用戶。 任務keepalive (默認值為60)控制等待來自同一連接上的同一客戶端的下一個請求的秒數(shù)。 使用Keep-Alives,瀏覽器可以在第一個請求之后消除每個請求的完整往返,通常將整個頁面的加載時間減少了一半。
Io線程數(shù)與可用的Web服務器線程數(shù)相對應。 這是一個重要的調整參數(shù),對于流量較高的Web應用程序,需要增加此參數(shù)。 任務最大線程數(shù)可以控制并發(fā)請求的最大數(shù)量。 如果您對IO Worker的配置滿意,請單擊“ 保存” 。
現(xiàn)在我們已經(jīng)定義了Worker,我們將需要從Web服務器端引用它。 為此,從左側的樹菜單中展開Web子系統(tǒng),然后選擇HTTP選項。 在那里,您將能夠配置一些HTTP服務器特有的屬性:
單擊表中包含的“ 默認 ”元素,并檢查Worker元素是否與您的IO Worker關聯(lián)。 工作人員也需要啟用才能使用。 接下來,我們需要將HTTP偵聽器與套接字綁定相關聯(lián)(請從“常規(guī)配置”左側菜單中選擇“套接字綁定”選項,以檢查您的配置可用的套接字綁定)。 最后,HTTP服務器也綁定到Java NIO 緩沖池實現(xiàn),這將在下一節(jié)中討論。
完成HTTP的工作程序配置后,Web服務器將使用其工作程序線程,這些線程根據(jù)以下條件命名: [工作程序名稱]-[工作程序ID]。 從下圖中可以看到,用戶定義了一個名為“ custom ”的工作程序,該工作程序已通過JConsole實用程序的Threads部分進行監(jiān)視(作為JDK標準版的一部分包含在內):
配置Web服務器緩沖池
正如我們所說,Undertow基于Java NIO API,并利用了J2SE的池
需要緩沖時,請使用java.nio.ByteBuffer 。
緩沖區(qū)是一個對象,其中包含一些要寫入或剛剛讀取的數(shù)據(jù)。 在NIO中添加Buffer對象標志著新庫和原始I / O之間最顯著的差異之一。 在面向流的I / O中,您曾經(jīng)將數(shù)據(jù)直接寫入Stream對象 ,或直接從Stream對象讀取數(shù)據(jù)。 在NIO庫中,所有數(shù)據(jù)都由Buffers處理。 讀取數(shù)據(jù)時,會將其直接讀取到緩沖區(qū)中。 寫入數(shù)據(jù)時,會將其寫入緩沖區(qū)。 每當您在NIO中訪問數(shù)據(jù)時,您就將其拉出緩沖區(qū)。
可以通過選擇“ 核心” |“底層”來配置Undertow IO緩沖池。 IO左側菜單,以及“ 緩沖池”選項,如下圖所示:
單擊“ 默認 ”緩沖池行,您將可以在其中配置以下元素:
| 每片緩沖區(qū) | 此參數(shù)定義每個分片分配多少緩沖區(qū)。 切片用于處理大緩沖區(qū)的子部分,從而避免了處理整個緩沖區(qū)的開銷。 ? |
| 直接緩沖區(qū) | 通過此選項,您可以選擇是否將緩沖區(qū)設置為直接緩沖區(qū)。 直接緩沖區(qū)的特征是它們是在Java堆之外分配的。 因此,一旦分配,它們的內存地址在緩沖區(qū)的生命周期內是固定的。 擁有固定的內存地址會導致內核可以安全地直接訪問它們,因此,可以在I / O操作中更有效地使用直接緩沖區(qū) |
| 緩沖區(qū)大小 | 此選項使您可以定義java.nio.ByteBuffer的大小。 假設正在使用直接緩沖區(qū),則如果需要最高性能,則默認的16kb緩沖區(qū)是最佳的(因為這對應于Linux上的默認套接字緩沖區(qū)大小)。 |
此摘錄摘自“ Wildfly 8 Book ”,這是一本實用且易于理解的指南,討論了最流行的開源Java應用程序服務器: JBoss Wildfily (從JBoss AS重命名)。 本書涵蓋了這個新的令人興奮的應用服務器版本的管理和管理方面的所有細節(jié)。 該書專門針對應用服務器的管理工具,為您介紹了所有最新的體系結構和性能更改。 您將從基本的服務器配置過渡到更高級的群集,JDBC連接,日志記錄等技術。
翻譯自: https://www.javacodegeeks.com/2014/01/entering-undertow-web-server.html
undertow服務器分析
總結
以上是生活随笔為你收集整理的undertow服务器分析_进入Undertow Web服务器的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 台州备案价查询(台州备案价)
- 下一篇: 功能强大的ddos攻击脚本有哪些(功能强