首页 » 网站推广 » phpjsp优胜技巧_Tomcat优化篇若何让你的Tomcat机能加倍优越 一遍就懂

phpjsp优胜技巧_Tomcat优化篇若何让你的Tomcat机能加倍优越 一遍就懂

访客 2024-11-26 0

扫一扫用手机浏览

文章目录 [+]

<role rolename="manager"/> <role rolename="manager-gui"/> <role rolename="admin" /> <role rolename="admin-gui" /> <user username="tomcat" password="tomcat" roles="admin-gui,admin,manager-gui,manager" />

如果访问提示涌现了403的缺点,则修正webapps/manager/META-INF/context.xml中的内容

访问Tomcat做事

phpjsp优胜技巧_Tomcat优化篇若何让你的Tomcat机能加倍优越 一遍就懂

然后输入配置的账号密码

phpjsp优胜技巧_Tomcat优化篇若何让你的Tomcat机能加倍优越 一遍就懂
(图片来自网络侵删)

可以看到对应的监控信息

2. 禁用AJP做事

  AJP是定向包协议。
由于性能缘故原由,利用二进制格式来传输可读性文本。
WEB做事器通过TCP连接和SERVLET容器连接。
为了减少进程天生socket的花费,

WEB做事器和SERVLET容器之间考试测验保持持久性的TCP连接,对多个要求/回答循环重用一个连接。
一旦连接分配给一个特定的要求,在要求处理循环结束之前不会再分配。

换句话说,在连接上,要求不是多元的。
这个使连接两端的编码变得随意马虎,虽然这导致在一时候会有很多连接。

我们一样平常利用的Nginx+Tomcat的架构,以是用不着AJP协议,可以把AJP连接器禁用掉

3.Executor优化

  在Tomcat中每一个用户要求都是一个线程,针对线程池我们也可以供应对应的优化来提升性能。

<!-- 自定义线程池 --> <Executor name="tomcatThreadPool" namePrefix="catalina-exec-" maxThreads="150" minSpareThreads="4"/> <!-- A "Connector" represents an endpoint by which requests are received and responses are returned. Documentation at : Java HTTP Connector: /docs/config/http.html (blocking & non-blocking) Java AJP Connector: /docs/config/ajp.html APR (HTTP/AJP) Connector: /docs/apr.html Define a non-SSL HTTP/1.1 Connector on port 8080 --> <Connector executor="tomcatThreadPool" port="8080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" />

涉及到的几个参数

参数

解释

maxThreads

最大的并发数,不同版本默认值有差别(150~200),一样平常建议500-1000

minSpareThreads

初始化的线程数

maxQueueSize

最大等待的行列步队数,超过就谢绝了

4.三种运行模式

bio:默认的模式,性能非常低下,没有经由任何优化处理和支持。

nio:new I/O,同步非壅塞的I/O操作,比传统的bio有更好的并发运行性能。

apr:须要安装 apr 、 apr-utils 、tomcat-native包,比较麻烦。
是Apache HTTP做事器的支持库。
你可以大略地理解为,Tomcat将以JNI的形式调用Apache HTTP做事器的核心动态链接库来处理文件读取或网络传输操作,从而大大地提高Tomcat对静态文件的处理性能。
Tomcat apr也是在Tomcat上运行高并发运用的首选模式。

@Deprecated public void setProtocol(String protocol) { boolean aprConnector = AprLifecycleListener.isAprAvailable() && AprLifecycleListener.getUseAprConnector(); if ("HTTP/1.1".equals(protocol) || protocol == null) { if (aprConnector) { setProtocolHandlerClassName("org.apache.coyote.http11.Http11AprProtocol"); } else { setProtocolHandlerClassName("org.apache.coyote.http11.Http11NioProtocol"); } } else if ("AJP/1.3".equals(protocol)) { if (aprConnector) { setProtocolHandlerClassName("org.apache.coyote.ajp.AjpAprProtocol"); } else { setProtocolHandlerClassName("org.apache.coyote.ajp.AjpNioProtocol"); } } else { setProtocolHandlerClassName(protocol); } }

调度对应的配置

5.web.xml

终极不雅观察tomcat启动日志[韶光/内容],线程开销,内存大小,GC等

DefaultServlet

<servlet> <servlet-name>default</servlet-name> <servlet-class>org.apache.catalina.servlets.DefaultServlet</servlet-class> <init-param> <param-name>debug</param-name> <param-value>0</param-value> </init-param> <init-param> <param-name>listings</param-name> <param-value>false</param-value> </init-param> <load-on-startup>1</load-on-startup> </servlet>

JspServlet

<servlet> <servlet-name>jsp</servlet-name> <servlet-class>org.apache.jasper.servlet.JspServlet</servlet-class> <init-param> <param-name>fork</param-name> <param-value>false</param-value> </init-param> <init-param> <param-name>xpoweredBy</param-name> <param-value>false</param-value> </init-param> <load-on-startup>3</load-on-startup> </servlet>

welcome-list-file

<welcome-file-list> <welcome-file>index.html</welcome-file> <welcome-file>index.htm</welcome-file> <welcome-file>index.jsp</welcome-file> </welcome-file-list>

mime-mapping移除相应的内容

<mime-mapping> <extension>zip</extension> <mime-type>application/zip</mime-type> </mime-mapping> <mime-mapping> <extension>zir</extension> <mime-type>application/vnd.zul</mime-type> </mime-mapping>

session-config

默认jsp页面有session,便是在于这个配置

<session-config> <session-timeout>30</session-timeout> </session-config>6.Host标签

autoDeploy :Tomcat运行时,要用一个线程拿出来进行检讨,生产环境之下一定要改成false

unpackWARs:war包自动解压缩,同样的生产环境改为false

7.Context标签

reloadable:false

reloadable:如果这个属性设为true,tomcat做事器在运行状态下会监视在WEB-INF/classes和WEB-INF/lib目录下 class文件的改动,如果监测到有class文件被更新的,做事器会自动重新加载Web运用。

在开拓阶段将reloadable属性设为true,有助于调试servlet和其它的class文件,但这样用加严惩事器运行负荷,建议 在Web运用的发存阶段将reloadable设为false。

8.启动速率优化删除没用的web运用:由于tomcat启动每次都会支配这些运用关闭WebSocket:websocket-api.jar和tomcat-websocket.jar随机数优化:设置JVM参数:-Djava.security.egd=file:/dev/./urandom多个线程启动Web运用: host:startStopThreads9.其他方面Connector:配置压缩属性compression=“500”,文件大于500bytes才会压缩数据库优化:减少对数据库访问等待的韶光,可以从数据库的层面进行优化,或者加缓存等等各种方案。
开启浏览器缓存,nginx静态资源支配二、JMeter测试

  针对干系数据的测试我们可以通过JMeter来直不雅观的给大家来展示。
我们在tomcat8.0的做事中支配一个war做事。

我们找一个FlowableUI的war包,正常启动:可以正常访问

然后我们通过JMeter来压测:

设置要求干系信息

选择几个监听器

然后实行:吞吐量:4103

然后我们禁用掉AJP

再测试:4149 轻微有点提升

然后我们自定义线程池

<!-- 自定义线程池 --> <Executor name="tomcatThreadPool" namePrefix="catalina-exec-" maxThreads="500" minSpareThreads="50" prestartminSpareThreads="true"/>

记得关联上

吞吐量:4188

我们把线程池的干系数据调度下:最大线程数1000,最小线程数100再看看

没有太大的差异,这时我们可以设置最大的等待行列步队:maxQueueSize=“100”

我们可以创造当添加了最大壅塞行列步队后吞吐量提升到了5203了,提升效果显著,但是同样的非常率提升了很多32.6%,当然这也是正常的征象了。

末了我们修正下运行的模式。
改为NIO2,同时不加最大等待行列步队来看看

<!-- 自定义线程池 --> <Executor name="tomcatThreadPool" namePrefix="catalina-exec-" maxThreads="500" minSpareThreads="50" prestartminSpareThreads="true" /> <Connector executor="tomcatThreadPool" port="8080" protocol="org.apache.coyote.http11.Http11Nio2Protocol" connectionTimeout="20000" redirectPort="8443" />

标签:

相关文章

易语言转提取,技术的创新与传承

在信息技术飞速发展的时代,编程语言作为信息技术的基石,越来越受到人们的关注。易语言作为一种面向中文用户的编程语言,因其易学易用、开...

网站推广 2024-12-28 阅读0 评论0

易语言赋能新闻传播,构建智能化媒体生态

随着互联网技术的飞速发展,信息传播的速度和广度得到了前所未有的提升。在这个信息爆炸的时代,如何让新闻传播更加高效、便捷,成为了媒体...

网站推广 2024-12-28 阅读0 评论0

国际IT公司的发展趋势与挑战

在全球经济一体化的背景下,信息技术(IT)行业已成为推动国家经济发展的重要力量。近年来,随着云计算、大数据、人工智能等新兴技术的兴...

网站推广 2024-12-28 阅读0 评论0