undertow服务器分析_进入Undertow Web服务器

undertow服务器分析

随着Java EE 7的到来以及处理诸如Web Sockets API和HTTP升级(例如EJB over HTTP)之类的高级功能的要求,WildFly开发团队已经做出了重要决定。 在长期致力于JBoss Web服务器(Apache Tomcat的一个分支)之后,新版本的应用程序服务器现在基于名为Undertow的新Web服务器。

Undertow是一种基于Java的灵活,快速的Web服务器,它基于J2SE 新输入输出(NIO) API。 Undertow是围绕基于组合的体系结构设计的,该体系结构允许您通过组合称为处理程序的小型单个组件来构建功能全面的Web服务器。 这些处理程序链接在一起以形成功能齐全的Java EE servlet 3.1容器或嵌入在代码中的更简单的HTTP Process处理程序。

从下图中可以看到,一个处理程序链由几个单独的处理程序组成,这些处理程序最终会产生Servlet响应或错误,例如在找不到请求的Path的情况下:

1个

Undertow Web服务器还可以灵活地在非阻塞异步处理程序之间进行选择,以处理任务,或将请求委托给由线程池支持的阻塞处理程序。

现在,我们将了解Web服务器的配置,因此只需打开您的配置文件(任何独立的配置文件或domain.xml ),然后移动到默认情况下如下所示的“ undertow ”子系统即可:

<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配置的关键要素之一是缓冲区缓存 。 缓冲区本质上是一个内存块,您可以在其中写入数据,然后可以在以后再次读取。 该内存块包装在NIO Buffer对象中,该对象提供了一组方法,可以更轻松地使用该内存块。 使用缓冲区的明显优势是内存访问比物理访问快得多。

除了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 :用于指定是否使用开发模式(默认为false),该模式允许即时重新加载JSP。
  • HTTP :用于配置Undertow HTTP连接器。 例如,您将从此处将Web服务器与IO资源池相关联
  • Undertow Core :用于将处理程序和过滤器与HTTP连接关联。

配置Web服务器池

如果您来自JBoss AS 7环境,则这是您配置的一部分,将进行更改。 在应用程序服务器的早期版本中,您曾经引用​​线程执行器来调整Web服务器的线程池。 另一方面,对于WildFly 8,您需要引用一个需要在IO子系统中创建的Worker元素。 让我们来看看如何做。 从左树菜单中展开“ 核心”选项,然后选择“ IO ”,如下图所示:

2

需要从主面板中选择“ Worker ”面板。 如您所见,“默认”工作程序已经存在。 您可以随时单击相应的按钮来创建或删除新的。 但是,现在我们将单击“ 编辑 ”链接,以便我们自定义默认工作线程中要使用的线程数。 单击链接后,我们将编辑以下属性:

3

第一个参数, 堆栈大小对应于Web服务器线程堆栈大小。 使用更大的线程堆栈大小,Web服务器将消耗更多资源,因此可以支持更少的用户。 任务keepalive (默认值为60)控制等待来自同一连接上的同一客户端的下一个请求的秒数。 使用Keep-Alives,浏览器可以在第一个请求之后消除每个请求的完整往返,通常将整个页面的加载时间减少了一半。

Io线程数与可用的Web服务器线程数相对应。 这是一个重要的调整参数,对于流量较高的Web应用程序,需要增加此参数。 任务最大线程数可以控制并发请求的最大数量。 如果您对IO Worker的配置满意,请单击“ 保存”

现在我们已经定义了Worker,我们将需要从Web服务器端引用它。 为此,从左侧的树菜单中展开Web子系统,然后选择HTTP选项。 在那里,您将能够配置一些HTTP服务器特有的属性:

4

单击表中包含的“ 默认 ”元素,并检查Worker元素是否与您的IO Worker关联。 工作人员也需要启用才能使用。 接下来,我们需要将HTTP侦听器与套接字绑定相关联(请从“常规配置”左侧菜单中选择“套接字绑定”选项,以检查您的配置可用的套接字绑定)。 最后,HTTP服务器也绑定到Java NIO 缓冲池实现,这将在下一节中讨论。

完成HTTP的工作程序配置后,Web服务器将使用其工作程序线程,这些线程根据以下条件命名: [工作程序名称]-[工作程序ID]。 从下图中可以看到,用户定义了一个名为“ custom ”的工作程序,该工作程序已通过JConsole实用程序的Threads部分进行监视(作为JDK标准版的一部分包含在内):

5

配置Web服务器缓冲池

正如我们所说,Undertow基于Java NIO API,并利用了J2SE的池

需要缓冲时,请使用java.nio.ByteBuffer

缓冲区是一个对象,其中包含一些要写入或刚刚读取的数据。 在NIO中添加Buffer对象标志着新库和原始I / O之间最显着的差异之一。 在面向流的I / O中,您曾经将数据直接写入Stream对象 ,或直接从Stream对象读取数据。 在NIO库中,所有数据都由Buffers处理。 读取数据时,会将其直接读取到缓冲区中。 写入数据时,会将其写入缓冲区。 每当您在NIO中访问数据时,您就将其拉出缓冲区。

可以通过选择“ 核心” |“底层”来配置Undertow IO缓冲池 IO左侧菜单,以及“ 缓冲池”选项,如下图所示:

6

单击“ 默认 ”缓冲池行,您将可以在其中配置以下元素:

每片缓冲区 此参数定义每个分片分配多少缓冲区。 切片用于处理大缓冲区的子部分,从而避免了处理整个缓冲区的开销

 

直接缓冲区 通过此选项,您可以选择是否将缓冲区设置为直接缓冲区。 直接缓冲区的特征是它们是在Java堆之外分配的。 因此,一旦分配,它们的内存地址在缓冲区的生命周期内是固定的。 拥有固定的内存地址会导致内核可以安全地直接访问它们,因此,可以在I / O操作中更有效地使用直接缓冲区
缓冲区大小 此选项使您可以定义java.nio.ByteBuffer的大小。 假设正在使用直接缓冲区,则如果需要最高性能,则默认的16kb缓冲区是最佳的(因为这对应于Linux上的默认套接字缓冲区大小)。

http://www.itbuzzpress.com/ 此摘录摘自“ Wildfly 8 Book ”,这是一本实用且易于理解的指南,讨论了最流行的开源Java应用程序服务器: JBoss Wildfily (从JBoss AS重命名)。 本书涵盖了这个新的令人兴奋的应用服务器版本的管理和管理方面的所有细节。 该书专门针对应用服务器的管理工具,为您介绍了所有最新的体系结构和性能更改。 您将从基本的服务器配置过渡到更高级的群集,JDBC连接,日志记录等技术。

翻译自: https://www.javacodegeeks.com/2014/01/entering-undertow-web-server.html

undertow服务器分析

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/345532.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【渝粤题库】陕西师范大学165202 战略管理 作业(专升本)

战略管理作业 一、单项选择题 1、人们可以通过发展教育、努力学习、锻炼身体等积极行为&#xff0c;使自己获得更好的劳动能力&#xff0c;从而使人力资源得到强化。这表现出人力资源具有&#xff08; &#xff09;。 A 两重性 B 社会性 C 再生性 D 能动性 2、在一年之内使所有…

matlab中的rng函数

一、matlab中的随机函数有&#xff1a;rand、randn 1、rand&#xff08;&#xff09; 功能&#xff1a;生成0-1之间的伪随机数 e.g. rand(3) 生成一个3*3的0-1之间的伪随机数矩阵 2、randn&#xff08;&#xff09; 功能&#xff1a;生成标准正态分布的伪随机数(均值为0&am…

在Jetty中设置SSL

当您必须快速启用SSL并陷入困境时&#xff0c;您是否遇到了问题&#xff1a;-( 你并不孤单&#xff0c;我将分享我的痛苦和一些学习。 我将分享在码头上启用SSL的步骤。 警告&#xff1a;仅将以下说明用于开发人员设置和生产&#xff0c;请与安全专家联系&#xff01; 在服…

【渝粤题库】陕西师范大学180211 服务营销 作业(专升本)

一、单选题 1、服务是一种无形产品&#xff0c;它向顾客提供的是产品的&#xff08; &#xff09;&#xff0c;并不涉及所有权的转移。 A 管理权 B 保护权 C 所有权 D 使用权 2、在实践中&#xff0c;企业因产品和市场的不同&#xff0c;可以分别建立不同水平的营销关系。如果企…

inf sup上下确界与 min, max 的区别

inf 是 infimum 的简称&#xff0c;sup 是 supremum 的简称。 使用 inf 或 sup 总能保证一个函数的 inf 或 sup 存在&#xff0c;而函数的 min 或 max 有时候不存在。 inf 的定义&#xff1a;一个集合最大的下界 下确界&#xff1a;infimum&#xff0c;简写为 inf&#xff08…

【渝粤题库】陕西师范大学200111中学语文教学法 作业(专升本)

《中学语文教学法》作业 一、单选题 1、中学语文教学法是一门&#xff08; &#xff09; A 纯应用学科 B 理论学科 C 应用理论学科 D 纯知识学科 2、为了疏通学生的思路而设计的搭台阶性质的问题&#xff0c;这种提问形式是&#xff08; &#xff09; A 启发式提问 B 疏导式提问…

在边缘,作为网关或在网格中构建控制平面以管理Envoy代理的指南

最近&#xff0c; Envoy已成为流行的网络组件。 马特克莱因&#xff08; Matt Klein &#xff09;在几年前写了一个博客&#xff0c;内容涉及Envoy的动态配置API&#xff0c;以及它如何成为Envoy的采用曲线向右移的原因之一。 他称该博客为“通用数据平面API”。 由于有许多其他…

MATLAB 随机数生成器

betarnd 贝塔分布的随机数生成器 binornd 二项分布的随机数生成器 chi2rnd 卡方分布的随机数生成器 exprnd 指数分布的随机数生成器 frnd F分布的随机数生成器 gamrnd 伽玛分布的随机数生成器 geornd 几何分布的随机数生成器 hygernd 超几何分布的随机数生成器 lognrnd 对数正态…

【渝粤题库】陕西师范大学200511 美国文学

《美国文学》作业 I.Multiple Choice American literature is only more than ____ years old. A. 500 B.400 C. 200 D.100The Puritan values did no include______. A. wastefulness B. thrift C. piety D. hard workThe 18th century was the age of the Enlightenment. __…

【渝粤题库】陕西师范大学200851 微机实用技术

《微机实用技术》作业 一、填空题 1&#xff0e;电源目前主要有两种&#xff0c;分别称为 和 。 2&#xff0e;总线的速度与两个参数有关&#xff0c;一个是 &#xff0c;另一个是 。 3&#xff0e;nVIDIA支持AMD CPU的芯片组 。 4&#xff0e;目前DDR内存已经有四种规格&#…

java编译器分析_Java反编译器的剖析

java编译器分析简单地说&#xff0c;反编译器尝试将源代码转换为目标代码。 但是有很多有趣的复杂性-Java源代码是结构化的&#xff1b; 字节码当然不是。 而且&#xff0c;转换不是一对一的&#xff1a;两个不同的Java程序可能会产生相同的字节码。 我们需要应用试探法以合理地…

各种各样的数

数的类别 数可以被分类为数系的集合内。对于以符号表示数的不同方式&#xff0c;则请看记数系统。 自然数 主条目&#xff1a;自然数 最常用的数为自然数&#xff0c;有些人指正整数&#xff0c;有些人则指非负整数。前者多在数论中被使用&#xff0c;而在集合论和计算机科学…

JDK 11上的JavaFX

在第11版发布之后&#xff0c;人们对JavaFX与JDK的解耦感到百感交集。 我们中的许多人认为现在是时候告别JavaFX并改用另一种GUI技术了&#xff0c;而另一些人对此情况感到高兴。 他们认为&#xff0c;将JavaFX与Oracle分离开来&#xff0c;并致力于将其开发为开源社区驱动的项…

HMM(隐马尔可夫模型)

1.什么是熵(Entropy) 简单来说&#xff0c;熵是表示物质系统状态的一种度量&#xff0c;用它老表征系统的无序程度。熵越大&#xff0c;系统越无序&#xff0c;意味着系统结构和运动的不确定和无规则&#xff1b;反之&#xff0c;&#xff0c;熵越小&#xff0c;系统越有序&am…

【渝粤题库】陕西师范大学201451 中国法制史作业

《中国法制史》作业 一&#xff0e;填空题 &#xff11;&#xff0e;中国奴隶奴隶制法律产生于_________朝。 &#xff12;&#xff0e;西周时期&#xff0c;提出了“”的刑事政策&#xff0c;具体标准是“刑新国&#xff0c;用____典&#xff1b;刑平国&#xff0c;用______典…

Lindley equation

In probability theory, the Lindley equation, Lindley recursion or Lindley processes is a discrete-time stochastic process AnA_nAn​ where nnn takes integer values and: An1max(0,AnBn)A_{n 1} max(0, A_n B_n)An1​max(0,An​Bn​). Processes of this form can…

Java NIO教程

1.简介 Java NIO是从Java 1.4引入的库。 自从Java NIO推出以来&#xff0c;它提供了另一种方法来处理I / O和网络事务。 它被认为是Java网络和Java IO库的替代方法。 开发Java NIO的目的是使输入和输出的事务异步和非阻塞。 阻塞和非阻塞IO的概念将在后面的部分中介绍。 目录…

【渝粤题库】陕西师范大学201941 Java程序设计 作业(专升本)

《JAVA程序设计》作业 一、选择题 编译HelloWorld.java的正确命令是&#xff1a; java HelloWorld.class B)java HelloWorld.java C)javac HelloWorld.java 正确运行HelloWorld.java的正确命令是&#xff1a; java HelloWorld B&#xff09;javac HelloWorld.java C&#xff09…

MATLAB追加向量

MATLAB 允许在原有的向量中附加向量&#xff0c;共同创造新的向量。 如果有两个行向量 r1 和 r2 这两个行向量中各有 n 和 m 个元素&#xff0c;现在创建行向量 r 并将n和m个元素都放在行向量 r 中&#xff0c;通过附加这些载体&#xff0c;编写&#xff1a; r [r1,r2]通过追…

【渝粤题库】国家开放大学2021春2441经济数学基础1题目

试卷代号&#xff1a;2441 2021年春季学期期末统一考试 经济数学基础1 试题 2021年7月 导数基本公式&#xff1a; 积分基本公式&#xff1a; ©′0 ()′ ()′ ()′ ()′ ()′ ()′cosx ()′ ()′ ()′ 一、单项选择题&#xff08;每小题4分&#xff0c;本题共20分…