网站建设工单系统护语贵州专业网站建设
网站建设工单系统护语,贵州专业网站建设,网站建设的行业市场的特点,青海最新消息今天目录
Tomcat概念
核心组件
Web容器
Web服务器之间解析请求的区别
Apache HTTP Server
Nginx
Tomcat
Servlet容器
JSP容器
字节码文件
Tomcat表面处理请求的过程
Tomcat底层处理请求的过程
内部结构
Tomcat部署
JRE环境配置
PATH冒号位置的区别
安装Tomcat
目…目录
Tomcat概念
核心组件
Web容器
Web服务器之间解析请求的区别
Apache HTTP Server
Nginx
Tomcat
Servlet容器
JSP容器
字节码文件
Tomcat表面处理请求的过程
Tomcat底层处理请求的过程
内部结构
Tomcat部署
JRE环境配置
PATH冒号位置的区别
安装Tomcat
目录结构
常见端口号
发布站点
JMeter压力测试
Tomcat优化
优化前后对比 Tomcat概念
免费、开源的Web应用服务器Apache软件基金会Apache Software FoundatioJakarta项目中的一个核心项目由Apache、Sun和一些公司及个人共同开发而成深受Java爱好者的喜爱并得到部分软件开发商的认可目前比较流行的Web应用服务器
核心组件
Tomcat 由一系列的组件构成,其中核心的组件有三个:
web容器:完成web服务器的功能。
Servlet容器:名字为catalina用于处理Servlet代码。
JSP 容器:用于将 JSP动态网页翻译成Servlet代码。 Web容器
Web 容器负责接收所有HTTP请求根据请求的URL调用对应的Servlet映射来确定哪个Servlet来处理特定请求或直接解析静态资源然后将结果返回给客户端
Web服务器之间解析请求的区别
Apache HTTP Server
Apache HTTP Server服务器本身是可以独立处理静态资源请求而对于动态资源的解析Apache需要通过开启mod_php等模块才能动态请求
Nginx
Nginx服务器本身也可以独立处理静态资源请求对于动态资源的解析Nginx需要借助FastCGI等接口或者反向代理将动态资源请求传递给后端服务器来解析比如php-fpm、Node.js等服务器
Tomcat
Tomcat可以独立处理静态资源和动态资源的请求Tomcat内置了Servlet和JSP的解析引擎无需借助额外的模块或接口解析动态请求。
在实际部署中因为Tomcat的静态解析效率不高所以通常会将静态资源的处理交给专门的前端服务器比如 Apache 或 Nginx而将动态内容交给 Tomcat 这样的应用服务器实现动静分离。 Servlet容器
在Java程序运行的时候需要一个基本的JREJava运行时环境环境JRE不是一个单独的进程而是一个容器Tomcat是跑在JRE容器的环境里运行的
Servlet有一个名字Catalina卡特琳娜负责加载和执行Servlet代码并处理Servlet相关的请求。
比如将JSP代码通过JSP容器翻译成Servlet代码然后由Servlet容器解析最后将解析的结果返回Web容器再由Web容器返回给用户 JSP容器
负责将JSP文件中的静态代码和Java代码编译成Servlet类。
一旦JSP文件被编译为Servlet类它会被编译成字节码文件.class并可以在Servlet容器中执行。
JSP页面中包含的Java代码需要被编译成字节码以便在Servlet容器中运行。这样做可以确保在每次请求时不需要重新解析和编译JSP页面而是直接执行已经编译好的字节码
字节码文件
什么是字节码文件比如使用记事本编写一个使用Main方法执行输出语句HelloWord的.java文件
然后在命令行使用javac命令对该文件进行编译得到了.class为后缀的字节码bytecode文件。
这个.class文件就是字节码文件可以在任何支持了JVMJava虚拟机的平台上运行而无需重新编译
总结
字节码文件是Java代码最终编译的目标它允许Java程序在JVMJava虚拟机上跨平台运行。 Tomcat表面处理请求的过程 tomcat默认端口号8080
当用户在浏览器中输入服务器的IP地址和端口向客户端发送一个请求Tomcat服务器收到请求后通过JSP容器将请求页面的代码转换为Servlet代码再转交给Servlet容器Servlet基于JREJava运行时环境解析请求如果请求的内容涉及到数据库需要在Servlet代码中连接数据库获取数据最后返回给用户 如果该服务器实现了动静分离比如Nginx和Tomcat当用户向Nginx的80端口发送动态解析请求时Nginx通过反向代理将动态请求传递给Tomcat由Tomcat处理后返回给Nginx再返回给用户 Tomcat底层处理请求的过程 当用户通过浏览器向服务器特定端口发送请求Connector接收请求后交给Container中的Engine容器通过用户输入的域名判断要访问的站点确定了要访问的站点就会将找到对应HostHost收到请求后再交给Context由Context当中的Servlet将代码进行解析解析完成后将请求返回给上层容器直到返回给Connector由连接器返回给用户
内部结构 容器 说明 Tomcat 可以看作是一个Tomcat服务器 Service Tomcat服务器里有一个Service容器每一个Tomcat只有一个Service容器是其他子容器的集合 Connector Service的子容器当用户在浏览器中向Tomcat发起请求Tomcat通过Connector连接器接收请求Tomcat可以有多个连接器每个连接器可以监听特定的端口。如果要在Tomcat部署基于端口的虚拟主机就要添加连接器每个连接器监听不同端口 Container Service的子容器最多只能有一个Container负责最终为用户提供代码的解析但是Container又包含了很多子容器 Engine Container的子容器最多只能有一个Engine负责管理基于域名的虚拟主机 Host Engine的子容器Host可以有多个每个Host都是一个虚拟主机 Context 上下文负责每一个Host对应站点的代码运行 Servlet Context可以包含多个Servlet负责处理来自客户端的HTTP请求执行一些逻辑比如业务逻辑、数据处理等然后生成符合HTTP标准的响应返回给客户端。
需要注意的是Tomcat只支持基于端口和基于域名的虚拟主机而没有基于IP的虚拟主机。 Tomcat部署
导入jdk的rpm软件包使用rpm -ivh jdk-8u171-linux-x64.rpm命令安装jdk环境
装完可以使用java -version命令测试是否正常显示版本信息还可以在/usr/下看到名为java的文件夹就是安装目录
JRE环境配置
为了确保Java能够正常运行需要设置配置环境变量在全局环境变量文件中使用export将Java家目录的路径和类库路径的添加为全局变量
并且将Java命令添加到系统查找命令的$PATH变量中也就是echo $PATH显示的多个路径系统会在这些路径下查找和用户输入内容所匹配的命令
最后使用source命令重新加载存放环境变量的文件然后再输出$PATH变量的值就可以看到Java命令的路径已经被追加到末尾了
此时JREJava运行时环境就配置好了
[rootlocalhost ~]# vim /etc/profile
export JAVA_HOME/usr/java/jdk1.8.0_171-amd64
export CLASSPATH$JAVA_HOME/lib
export PATH$PATH:$JAVA_HOME/bin[rootlocalhost jdk1.8.0_171-amd64]# source /etc/profile
[rootlocalhost jdk1.8.0_171-amd64]# echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin:/usr/java/jdk1.8.0_171-amd64/bin
PATH冒号位置的区别
这里使用的PATH变量不是新建了一个PATH变量而是调用了系统已有的变量冒号:表示在该变量的值末尾追加指定值这里追加了Java命令的路径让系统可以在终端中识别Java命令
如果将PATH变量的冒号放到末尾去追加行不行呢
就变成了export PATH$JAVA_HOME/bin:$PATH
实际上是可行的但是实现的效果相反比如当你执行了export PATH$JAVA_HOME/bin:$PATH
这个命令会将$JAVA_HOME/bin的路径放在现有$PATH变量的开头就不是追加了但是$PATH会把$JAVA_HOME/bin放在$PATH的最前面在系统识别命令_时优先搜索Java命令
如果当你执行了export PATH$PATH:$JAVA_HOME/bin则会把$JAVA_HOME/bin放到$PATH变量的末尾当系统识别命令时会先搜索现有路径再搜索$JAVAHOME/bin 安装Tomcat
导入Tomcat的tar.gz包由于该包是直接解压使用的所以使用tar zxvf apache-tomcat-9.0.8.tar.gz命令直接解压然后通过mv apache-tomcat-9.0.8 /usr/local/tomcat命令将该包移动到/usr/local/下重命名为tomcat
目录结构
进入tomcat目录使用ll命令可以查看tomcat的目录结构 目录或文件 说明 bin 用于存放Tomcat的可执行文件比如启动和停止脚本 (startup.sh、shutdown.sh) 以及其他管理和维护 Tomcat 服务器的工具 conf 用于存放Tomcat的配置文件 lib 用于存放Tomcat运行时需要Java类库和依赖的JAR文件 logs 用于存储Tomcat的日志文件 temp 用于存放 Tomcat 运行时生成的临时文件比如编译后的 JSP 文件等。 webapps 存放Tomcat的默认web应用程序部署目录将你的WAR包放入后Tomcat 会自动解压并运行这些应用。 work 用于存放Tomcat运行时生成的servlet编译文件。 LICENSE 这是 Tomcat 的许可证文件包含了软件使用和分发的许可条款。 RELEASE-NOTES 这是该版本 Tomcat 的发行说明描述了新功能、改进和已知问题等信息。 RUNNING.txt 这个文件提供了关于如何运行 Tomcat 服务器的简要说明和提示。
常见端口号
打开/usr/local/tomcat/conf/server.xml文件在Tomcat的配置文件中可以看到多个容器的标签内都有Port的属性
这个Port属性就定义了在某个阶段监听的端口号下面一一列出重要的端口号 端口号 说明 8005 只能在本地用命令行关闭Tomcat服务的端口 8009 Tomcat服务器通过Connector连接器组件与客户程序建立连接使用的端口 8080 Tomcat的web服务端默认端口号HTTP 8443 访问Tomcat的HTTPS的端口
发布站点
这里我们要通过基于域名的虚拟主机发布两个站点先创建存放第一个站点的目录www新建index.jsp文件添加www.benet.com内容
再创建bbs站点步骤同上
[rootlocalhost tomcat]# cd webapps/
[rootlocalhost webapps]# mkdir www
[rootlocalhost webapps]# cd www
[rootlocalhost www]# vim index.jsp
www.benet.com
[rootlocalhost www]# cd ..
[rootlocalhost webapps]# mkdir bbs
[rootlocalhost webapps]# cd bbs
[rootlocalhost bbs]# vim index.jsp
bbs.benet.com
打开配置文件
[rootlocalhost ~]# vim /usr/local/tomcat/conf/server.xml
在tomcat的配置文件中添加站点在第148行可以看到Host容器修改name属性的域名为www.benet.com添加Context上下文标签指定该域名的网页文件位置开启自动重载然后再创建一个Host标签修改name等参数用于第二个站点的发布
Context标签内的path属性的作用是虚拟路径指定了在Web服务器上访问该Web应用程序的路径如果 path 设置为 空则该应用程序将作为根应用程序处理。如果设置为 /myapp则用户访问http://www.benet.com/myapp地址时该站点才会可用reloadable当类的内容发行改动时会自动重载而不需要人为重启 Host namewww.benet.com appBasewebappsunpackWARstrue autoDeploytrue Context docBase/usr/local/tomcat/webapps/www path reloadabletrue /Valve classNameorg.apache.catalina.valves.AccessLogValve directorylogsprefixwww_access_log suffix.txtpattern%h %l %u %t quot;%rquot; %s %b //HostHost namebbs.benet.com appBasewebappsunpackWARstrue autoDeploytrueContext docBase/usr/local/tomcat/webapps/bbs path reloadabletrue /Valve classNameorg.apache.catalina.valves.AccessLogValve directorylogsprefixbbs_access_log suffix.txtpattern%h %l %u %t quot;%rquot; %s %b //Host
首先关闭防火墙允许tomcat流量通过。最后运行tomcat的bin目录下的startup.sh启动tomcat
[rootlocalhost tomcat]# systemctl stop firewalld
[rootlocalhost tomcat]# cd bin/[rootlocalhost bin]# ./startup.sh
[rootlocalhost bin]# netstat -anpt | grep java
tcp6 0 0 127.0.0.1:8005 :::* LISTEN 19470/java
tcp6 0 0 :::8009 :::* LISTEN 19470/java
tcp6 0 0 :::8080 :::* LISTEN 19470/java
使用Linux或Windows主机都可以测试但前提是在主机上的Hosts文件添加对应解析条目
192.168.10.101 www.benet.com bbs.benet.com
使用域名:端口号的方式来访问Tomcat服务器 JMeter压力测试
JMeter是基于JAVA开发的压力测试软件。用于在Windows系统上运行在短时间内向服务器发送大量请求来测试服务器压力承受的能力
打开一台Win10虚拟机或直接在宿主机上测试解压apachejmeter31.zip软件包进入bin目录下双击运行jmeter.bat批处理文件启动该工具
首先添加一个用户线程组 线程数每个线程代表一个虚拟用户将线程组的进程数设置为100JMeter将会模拟100个并发用户同时对目标系统进行请求这里用我们使用4000个线程
Ramp-up Periodin seconds每秒钟1个线程发送多少个请求
那么请求总量就是4000 * 20 80000也就是说总共向服务器在短时间内发送80000个请求让服务器来响应 右键测试计划是针对整个测试计划添加聚合报告和图形结果用于显示整个测试计划的测试结果 添加测试的请求 写入要测试的域名和端口号 测试该线程组时时可以把针对整个测试计划的图形结果和聚合报告删除右键线程组添加只针对线程组的聚合报告和图形结果
最终效果如下 然后右键线程组选Start 如果是第一次测试会提示你保存该线程组方便以后使用然后压力测试就已经开始了
当上方的箭头图标变绿了以后代表测试已经结束可以查看结果报告 打开聚合报告会显示出测试结果把优化前的测试结果截图保存用于和一会优化后的结果对比 Tomcat优化
打开tomcat配置文件
[rootlocalhost ~]# cd /usr/local/tomcat/conf/
[rootlocalhost conf]# vim server.xml
将连接器改为以下内容进行优化
Connector port8080 protocolHTTP/1.1connectionTimeout20000redirectPort8443 minSpareThreads50enableLookupsfalse disableUploadTimeouttrueacceptCount300 maxThreads500 processorCache500URIEncodingUTF-8 compressiononcompressionMinSize2048 compressableMimeTypetext/html,text/xml,text/javascript,text/css,tex t/plain,image/gif,image/jpg,image/png / 参数 说明 connectionTimeout20000 指定了连接超时时间单位是毫秒。在20秒内如果连接没有建立成功则超时。 redirectPort8443 指定了当需要进行重定向时使用的端口号一般用于HTTPS协议的情况这里是8443端口 minSpareThreads50 指定了最小空闲线程数。Tomcat会尽量保持至少这么多个线程处于空闲状态以备处理新的请求。 enableLookupsfalse 设置是否允许DNS查询。这里设置为false表示不允许Tomcat对客户端的IP地址进行DNS查询。 disableUploadTimeouttrue 禁用上传超时。设置为true时Tomcat将不会对上传操作设置超时限制。 acceptCount300 指定了在处理满负荷的情况下能接受的最大连接请求数。当达到这个数目后新的连接请求将会被拒绝。 maxThreads500 指定了连接器处理的最大线程数。当达到这个数目时新的连接请求会进入等待队列如果已满则会拒绝连接 processorCache500 指定了处理器缓存的大小。Tomcat在内部使用处理器对象池来重复使用已经创建的处理器。这里设置为500表示最多可以缓存500个处理器对象。 URIEncodingUTF-8 指定了URL的编码格式。这里设置为UTF-8 compressionon 启用响应内容的压缩功能 compressionMinSize2048 设置触发压缩的最小响应内容大小单位是字节。当响应内容大于这个值时才会进行压缩 compressableMimeType 指定可以进行压缩的MIME类型
重启tomcat
[rootlocalhost conf]# ../bin/shutdown.sh
[rootlocalhost conf]# ../bin/startup.sh
先访问tomcat能否在浏览器正常访问确保修改后的配置文件能够正常运行tomcat
优化前后对比
确保修改的配置文件能够正常运行tomcat后可以进行优化的压力测试此时打开JMeter工具
第二次测试之前先清除全部否则第二次测试的结果会和第一次的重叠 右键线程组 ——》Start
开始压力测试 待上方箭头图标变成绿色之后表示测试结束 此时将优化后的聚合报告也截图保存然后放到Word文档里可以进行对比 参数 说明 Label 表示每个HTTP请求或事务的名称或标识。用来区分不同请求或事务的名称。 Samples 表示测试中一共发出了多少个请求单位一般为毫秒 Average 平均响应时间越小越好 Median 中位数也就是 50 用户的响应时间 90% Line 90 用户的响应时间 95% Line 95 用户的响应时间 99% Line 99% 用户的响应时间 Min 最小响应时间 Max 最大响应时间 Error % 本次测试中出现错误的请求的数量/请求的总数 Throughput 吞吐量表示每秒完成的请求数。单位是请求/秒 Received KB/sec 每秒接收的数据量单位是KB/秒。 Sent KB/sec 每秒发送的数据量单位是KB/秒。
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/91383.shtml
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!