做者 | 牛迁迁
来源 | https://blog.csdn.net/u010028...java
Tomcat的默认配置,性能并非最优的,咱们能够经过优化tomcat以此来提升网站的并发能力。提升Tomcat的性能能够分为两个方向。apache
服务器资源tomcat
服务器所能提供CPU、内存、硬盘的性能对处理能力有决定性影响,因此说服务器性能牛B,Tomcat也不会太差。固然提升服务器的硬件配置,是须要大量RMB的支持的。因此不到万不得已不会采用这种方式,通常公司会采起下面这种经过优化配置,来提高Tomcat性能的方式。服务器
优化配置架构
优化配置以前,咱们须要配置一个tomcat管理员帐户,来登陆查看Tomcat控制台提升的各类参数。并发
在conf/ tomcat-users.xml下添加用户:异步
启动tomcat,登陆查看信息:http://127.0.0.1:8080/性能
tomcat的3种运行模式 学习
tomcat的运行模式有3种:优化
bio:
默认的模式,性能很是低下,没有通过任何优化处理和支持.
nio:
nio(new I/O),是Java SE 1.4及后续版本提供的一种新的I/O操做方式(即java.nio包及其子包)。Java nio是一个基于缓冲区、并能提供非阻塞I/O操做的Java API,所以nio也被当作是non-blocking I/O的缩写。它拥有比传统I/O操做(bio)更好的并发运行性能。
apr:
安装起来最困难,可是从操做系统级别来解决异步的IO问题,大幅度的提升性能.
启动NIO模式
修改server.xml里的Connector节点,修改protocol为org.apache.coyote.http11.Http11NioProtocol
执行器优化(线程池)
在tomcat中每个用户请求都是一个线程,因此可使用线程池提升性能。
开启而且使用
配置:
在Connector中指定使用共享线程池
查看Tomcat控制台
Executor重要参数说明:
name:共享线程池的名字。这是Connector为了共享线程池要引用的名字,该名字必须惟一。默认值:None;
namePrefix:在JVM上,每一个运行线程均可以有一个name 字符串。这一属性为线程池中每一个线程的name字符串设置了一个前缀,Tomcat将把线程号追加到这一前缀的后面。默认值:tomcat-exec-;
maxThreads:该线程池能够容纳的最大线程数。默认值:200;
maxIdleTime:在Tomcat关闭一个空闲线程以前,容许空闲线程持续的时间(以毫秒为单位)。只有当前活跃的线程数大于minSpareThread的值,才会关闭空闲线程。默认值:60000(一分钟)。
minSpareThreads:Tomcat应该始终打开的最小不活跃线程数。默认值:25。
threadPriority:线程的等级。默认是Thread.NORM_PRIORITY
Connector重要参数说明:
executor:表示使用该参数值对应的线程池;
minProcessors:服务器启动时建立的处理请求的线程数;
maxProcessors:最大能够建立的处理请求的线程数;
acceptCount:指定当全部可使用的处理请求的线程数都被使用时,能够放处处理队列中的请求数,超过这个数的请求将不予处理。
参数最佳实践
禁用AJP链接器
AJP(Apache JServer Protocol)
AJPv13协议是面向包的。WEB服务器和Servlet容器经过TCP链接来交互;为了节省SOCKET建立的昂贵代价,WEB服务器会尝试维护一个永久TCP链接到servlet容器,而且在多个请求和响应周期过程会重用链接。
咱们通常是使用Nginx+tomcat的架构,因此用不着AJP协议,因此把AJP链接器禁用。
在管理界面中看不到ajp了:
完成上面几步对Tomcat的优化配置,你的Tomcat服务器并发量确定会有大幅度的提高。这只是简单的配置,后续还会有针对JVM的专项介绍。JVM参数也是影响Tomcat性能的一个重要因素。
若是文章对您有帮助,请记得点赞关注哟~ 欢迎你们关注个人公众号<情系IT>,每日推送技术文章供你们学习参考。