2018年05月20日 15:39:35 镜水灵动 阅读数:2320html
版权声明:本文为博主原创文章,未经博主容许不得转载。 https://blog.csdn.net/u014172271/article/details/80381640java
1.tomcat内存优化:web
对tomcat启动参数优化咱们能够在tomcat的启动脚本 catalina.sh 中设置 JAVA_OPTS参数。apache
JAVA_OPTS="-server -Xms2048M -Xmx2048M -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=$CATALINA_HOME/logs/heap.dump"
2.并发优化vim
${tomcat}/webapps/docs/config/http.html文件中参数:tomcat
(1)maxConnections:The maximum number of connections that the server will accept and process at any given time服务器
服务器在任何给定时间接受和处理的最大链接数。网络
(2)acceptCount:The maximum queue length for incoming connection requests when all possible request processing threads are in use.当全部可能的请求处理线程都在使用时,传入链接请求的最大队列长度。监听端口队列最大数,满了以后客户请求会被拒绝并发
(3)maxThreads:工做线程,The maximum number of request processing threads to be created by this Connectorapp
(4)minSpareThreads:最小空闲的工做线程。The minimum number of threads always kept running
3.其余优化:
(1)${tomcat}/webapps/docs/config/host.html
autoDeploy:This flag value indicates if Tomcat should check periodically for new or updated web applications while Tomcat is running 自动部署Tomcat是否应该按期检查新的或更新的Web应用程序。 false
(2)${tomcat}/webapps/docs/config/http.html
enableLookups:false 若设为true, 则支持域名解析,可把 ip 地址解析为主机名
(3)${tomcat}/webapps/docs/config/context.html:
reloadable:false
4. connector:apr。
bio
bio(blocking I/O),顾名思义,即阻塞式I/O操做,表示Tomcat使用的是传统的Java I/O操做(即java.io包及其子包)。Tomcat在默认状况下,就是以bio模式运行的。遗憾的是,就通常而言,bio模式是三种运行模式中性能最低的一种。咱们能够经过Tomcat Manager来查看服务器的当前状态。
nio
是Java SE 1.4及后续版本提供的一种新的I/O操做方式(即java.nio包及其子包)。Java nio是一个基于缓冲区、并能提供非阻塞I/O操做的Java API,所以nio也被当作是non-blocking I/O的缩写。它拥有比传统I/O操做(bio)更好的并发运行性能。
apr
(Apache Portable Runtime/Apache可移植运行库),是Apache HTTP服务器的支持库。你能够简单地理解为,Tomcat将以JNI的形式调用Apache HTTP服务器的核心动态连接库来处理文件读取或网络传输操做,从而大大地提升Tomcat对静态文件的处理性能。 Tomcat apr也是在Tomcat上运行高并发应用的首选模式。
下载相关的工具包
wget http://mirrors.aliyun.com/apache/apr/apr-1.6.3.tar.gz
wget http://mirrors.aliyun.com/apache/apr/apr-util-1.6.1.tar.gz
mkdir /usr/local/apr
将tomcat9的bin目录下的tomcat-native.tar.gz复制到/usr/local/apr
tar -zxvf tomcat-native.tar.gz
cd tomcat-native-1.2.12-src
cd native
./configure --with-apr=/usr/local/apr
tar zxvf apr-1.6.3.tar
cd apr-1.6.3
./configure --prefix=/usr/local/apr
make
make install
tar -zxvf apr-iconv-1.2.2.tar.gz
cd apr-iconv-1.2.2
./configure --prefix=/usr/local/apr-iconv --with-apr=/usr/local/apr
make
make install
按照上面的安装好以后配置tomcat:
vim catalina.sh:
JAVA_OPTS="-server -Xms2048M -Xmx2048M -XX:MetaspaceSize=128M -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=$CATALINA_HOME/logs/heap.dump"
JAVA_OPTS="$JAVA_OPTS -Djava.library.path=/usr/local/apr/lib"
注意:开启了apr以后,jvm用到的native内存会增大,所以要适当调大Metaspace空间,添加JVM选项:-XX:MetaspaceSize=128m
server.xml:
<Connector port="8080" protocol="org.apache.coyote.http11.Http11AprProtocol"
connectionTimeout="20000"
redirectPort="8443" />
<Listener className="org.apache.catalina.core.AprLifecycleListener" SSLEngine="off" />
到如今咱们看到配置成功。