Tomcat7性能调优
1.1 tomcat的三种运行模式:
●BIO:一个请求处理一个线程。并发量高时,线程数较多,浪费资源。Tomcat7默认使用这种方式。
●NIO:利用Java的非阻塞IO处理,通过线程池处理大量的请求。 Tomcat8默认采用这种方式。
●APR:从操作系统层面解决io阻塞问题,性能最高。Tomcat7或Tomcat8在Win7或以上的系统中启动默认使用这种方式;Linux如果安装了apr和native,Tomcat直接启动就支持apr。(安装方法:http://www.cnblogs.com/nb-blog/p/5278502.html)
1.2 三种运行模式性能对比:
1.3 NIO性能调优:
1.3.1 在conf/tomcat-users.xml文件末尾添加用户,账号密码都叫tomcat
<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"/>
1.3.2 进入管理页面,可以看到tomcat7默认是bio运行模式
1.3.3 编辑conf/server.xml,将protocol="HTTP/1.1"修改为org.apache.coyote.http11.Http11NioProtocol
1.3.4 设置tomcat线程池
1.3.5.1 优化线程池参数并指定线程池
1.3.5.2 上面我们就已经配置好了nio模型,下面可以通过自定义属性来优化它
【连接池参数】
maxThreads : 最大连接
minSpareThreads : 最小连接
maxQueueSize : 连接超时时间单位毫秒
prestartminSpareThreads :是否在启动时就生成minSpareThreads个线程
threadPriority : 执行程序中线程的线程优先级默认为5(线程的值)
daemon : 是否为守护线程 默认为true
namePrefix : 线程的名称前缀。单个线程的线程名将是namePrefix+threadNumber
maxIdleTime : 空闲线程等待时间单位毫秒
threadRenewalDelay : 重建线程的时间间隔; 为了避免线程同时重建,默认每隔1000ms重建一个线程,设置为负则不重建
【连接器参数 connector】
SSLEnabled : 如果要打开SSL握手/加密/解密,请设置true。默认值是false。
maxPostSize : 上传文件最大大小, 默认是2mb
URIEncoding : 指定字符编码 能解决get请求乱码问题,默认ISO-8859-1。
acceptCount : 当所有处理线程都在使用时,新的请求会排队,默认超过100会拒绝。
acceptorThreadCount :用于接受连接的线程的数量。在一个服务器上一般为1不可能超过2,默认值是 1。
maxConnections :最大并发量,超过这个范围服务器就不再接收请求。NIO的默认值是10000。APR /native的默认值是8192。如果设置的值-1,maxConnections功能被禁用
1.3.6 上面就已经将nio优化配置完了,我们一般是使用Nginx+tomcat的架构,所以用不着AJP协议,我们还可以禁用AJP连接器来继续优化。
1.3.7 重启测试:可以看到最大连接是500,默认连接为5,并且是nio运行模式。