线程池优化:
1>ulimit -a
修改: /etc/security/limits.conf
2>添加maxConnections的配置 ()
对CPU要求更高时,建议不要配置过大
对CPU要求不是那么特别高,建议配置3000左右 (默认为10000)
配置文件:server.xml------->connector
3>maxTreads 最大线程数 默认为200; 建议:500~700
4>acceptCount 最大排队等待数
acceptCount比作前厅(容纳取到号的人)、maxConnections比作大厅(容纳买到票的人)、maxThreads比作影厅(可以理解一个影厅只容纳一个人,因为一个线程同时只处理一个请求)
以下场景是针对已达到maxConnections最大值来讨论的:
1)取号:如果前厅人数已达到acceptCount,则拿号失败,会得到Connection refused connect的回复信息。反之则会进入前厅,等待买票。
2)买票:当大厅人数小于maxConnections时,前厅的人就可以进入大厅
3)观影:当影厅的人离开时,大厅的部分人能进入影厅,一般来讲大厅的容量要远大于影厅的数量。
tomcat三种模式:
BIO:最稳定最老的一个连接器,使用阻塞形式处理request请求
NIO:使用JAVA的异步IO技术,进行非阻塞形式处理request请求
APR:原生C语言编写的非堵塞I/O,目前性能最理想------------->对于高并发的请求,性能波动较稳定
APR安装:
1>依赖:yum -y install expat expat-devel
2>安装顺序: apr ----- apr-iconv ----- apr-util (找对应的编译包安装)
tomcat集群
为什么要搭建tomcat集群: 可以让session共享
tomcat集群方式:
1>apache tomcat clustering
2>JWT等类似机制(解决了集群形式下分布式session存在的问题)
3>MSM(memcache的session管理)、Tomcat+redis等统一管理session管理
配置集群: tomcat.apache.org 官网地址,官网有具体文档