博客
关于我
Tomcat性能优化
阅读量:164 次
发布时间:2019-02-28

本文共 2349 字,大约阅读时间需要 7 分钟。

Tomcat6.18版本:apache-tomcat-6.0.18

Why

每个web客户端请求对于服务器端来说就一个单独的线程,客户端的请求数量增多将会导致线程数就上去了,CPU就忙着跟线程切换。

而NIO则是使用单线程(单个CPU)或者只使用少量的多线程(多CPU)来接受Socket,而由线程池来处理堵塞在pipe或者队列里的请求.这样的话,只要OS可以接受TCP的连接,web服务器就可以处理该请求。大大提高了web服务器的可伸缩性。


    1.让Tomcat6中支持Java语言的特性NIO( New I/O)

 大家都听说了在Apache Tomcat6 中支持了Java语言的特性 NIO( New I/O),不管你对NIO的技术是否熟悉,但你肯定能想象的到NIO是一个好东西。的确,使用NIO在服务器端会有更好的性能,加强服务器端对并发处理的性能。  请注意:很抱歉,在tomcat6在默认的配置选项中是没有把NIO功能打开。所以很多正在使用Tomcat6的朋友们本以为能快活的使用上NIO。

不信,你可以试试,从Apache Tomcat 站点 的Tomct6 压缩包中 conf/server.xml的 配置文件第69行,内容如下:

 

 

 

进行测试,可以在控制台的启动信息里看见,默认状态下没有被打开nio配置,启动时的信息,如下:

2010-2-1 12:59:40 org.apache.coyote.http11.Http11Protocol init
信息: Initializing Coyote HTTP/1.1 on http-8080
2010-2-1 12:59:40 org.apache.catalina.startup.Catalina load

修改成支持NIO的类型,配置如下

 

 

进行测试,被打开nio配置,启动时的信息,如下:

2010-2-1 13:01:01 org.apache.tomcat.util.net.NioSelectorPool getSharedSelector
信息: Using a shared selector for servlet write/read
2010-2-1 13:01:01 org.apache.coyote.http11.Http11NioProtocol init
信息: Initializing Coyote HTTP/1.1 on http-8080

这样才能让你真正体验到Tomcat6下NIO给你的系统带来的快感。

–end–

  2,修改Tomcat 6默认的maxThread

 官方文档默认说支持200但似乎超过40就不行了

server.xml配置:

 

 

 

连接器使用的线程池的名子:executor="tomcatThreadPool"

连接器端口                         :port="8090"

连接器使用的传输方式       :protocol="org.apache.coyote.http11.Http11NioProtocol"

传输时是否支持压缩           :compression="on"

压缩的大小                         :compressionMinSize="2048"

 

       线程池名:           name="tomcatThreadPool"

       线程前缀:           namePrefix="catalina-exec-"

       最大产生线程数:maxThreads="1000"

       最小初始现程数:minSpareThreads="350"

 

 在tomcat配置文件server.xml中的<Connector ... />配置中,和连接数相关的参数有:

     minProcessors:最小空闲连接线程数,用于提高系统处理性能,默认值为10 

     maxProcessors:最大连接线程数,即:并发处理的最大请求数,默认值为75 

     acceptCount:允许的最大连接数,应大于等于maxProcessors,默认值为100 

     enableLookups:是否反查域名,取值为:true或false。为了提高处理能力,应设置为false 

     connectionTimeout:网络连接超时,单位:毫秒。设置为0表示永不超时,这样设置有隐患的。通常可设置为30000毫秒。

 

 其中和最大连接数相关的参数为maxProcessors和acceptCount。

如果要加大并发连接数,应同时加大这两个参数。

 

      3.设置Tomcat连接器池

<Executor name="tomcatThreadPool" namePrefix="catalina-exec-" maxThreads="1000" minSpareThreads="350" />

在配置文件中添加了如下配置:

<Executor name="tomcatThreadPool" namePrefix="catalina-exec-" maxThreads="1000" minSpareThreads="350" />

 

4.修tomcat的JVM参数

大量的并发也意味着大量的服务器资源,所以修改一下tomcatJVM参数也是必要的错误。

提示:java.lang.OutOfMemoryError: Java heap space

引用:

Windows环境下修改“%TOMCAT_HOME%\bin\catalina.bat”

文件,在文件开头增加如下设置:

set JAVA_OPTS=-Xms256m -Xmx512m

Linux环境下修改“%TOMCAT_HOME%\bin\catalina.sh”文件,在文件开头增加如下设置:

JAVA_OPTS=’-Xms256m -Xmx512m’

 

 

转载地址:http://utyj.baihongyu.com/

你可能感兴趣的文章
NIFI从MySql中增量同步数据_通过Mysql的binlog功能_实时同步mysql数据_配置数据路由_生成插入Sql语句_实际操作02---大数据之Nifi工作笔记0041
查看>>
NIFI从MySql中离线读取数据再导入到MySql中_03_来吧用NIFI实现_数据分页获取功能---大数据之Nifi工作笔记0038
查看>>
NIFI从MySql中离线读取数据再导入到MySql中_不带分页处理_01_QueryDatabaseTable获取数据_原0036---大数据之Nifi工作笔记0064
查看>>
NIFI从MySql中离线读取数据再导入到MySql中_无分页功能_02_转换数据_分割数据_提取JSON数据_替换拼接SQL_添加分页---大数据之Nifi工作笔记0037
查看>>
NIFI从PostGresql中离线读取数据再导入到MySql中_带有数据分页获取功能_不带分页不能用_NIFI资料太少了---大数据之Nifi工作笔记0039
查看>>
nifi使用过程-常见问题-以及入门总结---大数据之Nifi工作笔记0012
查看>>
NIFI分页获取Mysql数据_导入到Hbase中_并可通过phoenix客户端查询_含金量很高的一篇_搞了好久_实际操作05---大数据之Nifi工作笔记0045
查看>>
NIFI分页获取Postgresql数据到Hbase中_实际操作---大数据之Nifi工作笔记0049
查看>>
NIFI同步MySql数据_到SqlServer_错误_驱动程序无法通过使用安全套接字层(SSL)加密与SQL Server_Navicat连接SqlServer---大数据之Nifi工作笔记0047
查看>>
Nifi同步过程中报错create_time字段找不到_实际目标表和源表中没有这个字段---大数据之Nifi工作笔记0066
查看>>
NIFI大数据进阶_FlowFile拓扑_对FlowFile内容和属性的修改删除添加_介绍和描述_以及实际操作---大数据之Nifi工作笔记0023
查看>>
NIFI大数据进阶_FlowFile生成器_GenerateFlowFile处理器_ReplaceText处理器_处理器介绍_处理过程说明---大数据之Nifi工作笔记0019
查看>>
NIFI大数据进阶_Json内容转换为Hive支持的文本格式_操作方法说明_01_EvaluteJsonPath处理器---大数据之Nifi工作笔记0031
查看>>
NIFI大数据进阶_Kafka使用相关说明_实际操作Kafka消费者处理器_来消费kafka数据---大数据之Nifi工作笔记0037
查看>>
NIFI大数据进阶_Kafka使用相关说明_实际操作Kafka生产者---大数据之Nifi工作笔记0036
查看>>
NIFI大数据进阶_NIFI的模板和组的使用-介绍和实际操作_创建组_嵌套组_模板创建下载_导入---大数据之Nifi工作笔记0022
查看>>
NIFI大数据进阶_NIFI监控功能实际操作_Summary查看系统和处理器运行情况_viewDataProvenance查看_---大数据之Nifi工作笔记0026
查看>>
NIFI大数据进阶_NIFI监控的强大功能介绍_处理器面板_进程组面板_summary监控_data_provenance事件源---大数据之Nifi工作笔记0025
查看>>
NIFI大数据进阶_NIFI集群知识点_认识NIFI集群以及集群的组成部分---大数据之Nifi工作笔记0014
查看>>
NIFI大数据进阶_NIFI集群知识点_集群的断开_重连_退役_卸载_总结---大数据之Nifi工作笔记0018
查看>>