Tomcat性能调优及性能测试工具配置

摘要:
-20: +UseConcMarkSweepGC:jdk1.5及更高版本具有GC估计触发器和堆占用触发器的功能,以提高垃圾收集的响应时间。如果使用execute,则将忽略连接器的此属性。如果未指定,默认值为10.enableLookups=“false”:禁用DNS查找以提高性能。如果未指定,则将此属性设置为true,并禁用上载超时。Tomcat 7及其后续版本在Linux系统中默认使用此方法。

前言

运行环境:Ubuntu server14 64位

Jdk版本jdk-1.7.0_79

Tomcat版本:apache-tomcat-7.0.63

Tomcat性能调优

1、 内存优化

修改tomcat/bin目录catalina.sh文件:

JAVA_OPTS=”$JAVA_OPTS -Dfile.encoding=utf-8 -server -Xmx750M -Xms750M -Xss256k

-XX:+UseBiasedLocking -XX:PermSize=64M -XX:MaxPermSize=128M

-XX:MaxTenuringThreshold=31 -XX:+UseConcMarkSweepGC -XX:+UseParNewGC

-XX:+CMSParallelRemarkEnabled -XX:+UseCMSCompactAtFullCollection

-XX:LargePageSizeInBytes=64M -XX:+UseFastAccessorMethods

-XX:+UseCMSInitiatingOccupancyOnly -Djava.awt.headless=true”

参数说明:

-server:让tomcatserver模式运行

-Xmx750M设置Java虚拟机堆的最大可用内存大小,单位(M)

-Xms750M:设置Java虚拟机堆得初始值内存大小,单位:兆(M)。此值设置-Xmx相同可以避免每次垃圾回收后JVM重新分配内存

-Xss256k设置每个线程的栈大小Jdk1.5以后每个线程栈最大1M,以前的版本最大256k根据项目实际情况设置此值的大小

-XX:+UseBiasedLocking:启用一个线程锁,线程处理自动进行最优调配

-XX:PermSize=64M:设置非堆内存初始大小

-XX:MaxPermSize=128M:设置非堆内存最大值。

-XX:MaxTenuringThreshold=31:设置垃圾的最大年龄。设置为0,则年轻对象不经过Survivor直接进入年老代对年老代较多的应用,可提高效率。设置为一个较大的值,年轻代对象Survivor区进行多次复制这样可以增加对象在年轻代的存活时间,既对象在年轻代被回收的概率。

-XX:+UseConcMarkSweepGCjdk1.5及以后版本具有的功能,使用是GC估算触发和heap占用触发提高垃圾回收的响应时间。

-XX:+UseParNewGC:对年轻代采用多线程并行回收提高回收效率。

-XX:+CMSParallelRemarkEnabled:在使用-XX:+UseParNewGC的情况下,减少mark时间。

-XX:+UseCMSCompactAtFullCollection:使用并发收集器时开启对年老代的压缩。

-XX:LargePageSizeInBytes=64M:指定heap内存页面大小。

-XX:+UseFastAccessorMethods:原始类型快速优化(getset方法等)

-XX:+UseCMSInitiatingOccupancyOnly:使用手动定义初始化定义开始CMS收集

-Djava.awt.headless=true:防止图标在Linux环境加载不出来的异常。

Tomcat性能调优及性能测试工具配置第1张

2、 线程优化

修改tomcat/conf目录server.xml文件:

<Connector port="8080" protocol="HTTP/1.1"

        connectionTimeout="20000"

        redirectPort="8443"

        URIEncoding="UTF-8"

        maxThreads="500"

        minSpareThreads="75"

        enableLookups="false"

        disableUploadTimeout="true"

        acceptCount="300"

        compression="on" compressionMinSize="2048"

        compressableMimeType="text/html,text/xml,text/javascript,text/css,text/plain"

        />

参数说明

porttomcat服务启动端口

connectionTimeout连接等待时长,单位毫秒

URIEncoding:字符编码

maxThreads:连接器要创建的请求处理线程最大数量。指定,属性默认设置为200如果使用execute忽略连接器的此属性

minSpareThreads:始终保持运行的最小线程数。若未指定,默认10.

enableLookups=”false”:禁用DNS查找,提高性能。

disableUploadTimeout:此标志允许servlet容器在数据上传时使用不同的连接超时通常较长。如果没有指定该属性被设置true,禁用上传超时。

acceptCount:当所有可能的请求处理线程在使用传入连接请求的最大队列长度队列满收到的任何请求都将拒绝默认100.

compression=”on”:开启压缩功能

compressionMinSize:启用压缩输出内容大小。默认2kb

compressableMimeType:压缩类型。

Tomcat性能调优及性能测试工具配置第2张

3、 Tomcat运行模式优化

BIO阻塞式连接。一个线程处理一个请求,适用于连接数目较小且固定的架构并发数高时,线程较多,浪费资源Tomcat7及其以下版本在Linux系统中默认使用这种方式。Jdk1.4版本以下唯一选择。

NIO非阻塞连接。是jdk1.4及后续版本提供的一种新的I/O操作方式(即java.nio包及其子包),拥有传统I/O操作BIO更好的并发运行性能利用java异步IO处理,可以通过少量线程处理大量的请求Tomcat8之后在Linux中默认这种方式。

<Connector port="8080" protocol="org.apache.coyote.http11.Http11NioProtocol"

        connectionTimeout="20000"

        redirectPort="8443"

        URIEncoding="UTF-8"

        maxThreads="500"

        minSpareThreads="75"

        enableLookups="false"

        disableUploadTimeout="true"

        acceptCount="300"

        compression="on" compressionMinSize="2048"

        compressableMimeType="text/html,text/xml,text/javascript,text/css,text/plain"

        />

APR从操作系统级别来解决异步的IO问题,大幅度的提高性能。

3.1APR配置

Tomcat支持APR必须安装aprnative,这样tomcat可以利用apache的apr接口使用操作系统的部分本地操作从而提高性能。

3.1.1、准备工作

安装jdktomcat,且jdk要在1.7版本或以上版本

apr-1.6.5.tar.gz、apr-util-1.6.1.tar.gz、

apr-iconv-1.2.2.tar.gz、tomcat-native.tar.gz、expat_2.0.1.orig.tar.gz

3.1.2安装apr

上传apr-1.6.5.tar.gz、apr-util-1.6.1.tar.gz、apr-iconv-1.2.2.tar.gz、expat_2.0.1.orig.tar.gz

/usr/local/installPackage/tomcat-apr(目录自己自定义创建)

解压缩三个文件包:sudo tar -xzvf apr-1.6.5.tar.gz;sudo tar -xzvf apr-util-1.6.1.tar.gz;sudo tar -xzvf apr-iconv-1.2.2.tar.gz

1、 进入apr-1.6.5/目录执行检测、编译、安装:

sudo ./configure && sudo make && sudo make install

2、 进入apr-util-1.6.1/目录执行检测、编译、安装:

sudo ./configure --with-apr=/usr/local/apr && sudo make && sudo make install

出现以下错误提示是因为缺少expat先安装expat

Tomcat性能调优及性能测试工具配置第3张

解压缩expat_2.0.1.orig.tar.gz包,并进入expat-2.0.1/目录执行检测、编译、安装:

sudo ./configure && sudo make && sudo make install

再次进入apr-util-1.6.1/目录执行检测、编译、安装

sudo ./configure --with-apr=/usr/local/apr && sudo make && sudo make install

安装了expat有可能导致vi命令无法使用

问题描述

/usr/lib/x86_64-linux-gnu/libpython3.5m.so.1.0: undefined symbol: XML_SetHashSalt

解决方案:

执行命令:export LD_LIBRARY_PATH=/lib/x86_64-linux-gnu

修改配置文件:vi ~/.bashrc

末尾处添加:export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/lib/x86_64-linux-gnu

3、 进入apr-iconv-1.2.2/目录执行检测、编译、安装:

sudo ./configure --with-apr=/usr/local/apr && sudo make && sudo make install

3.1.3安装tomcat-native

tomcat-native.tar.gz在tomcat/bin目下

解压缩sudo tar -xzvf tomcat-native.tar.gz

移动到安装目录:tomcat/bin/tomcat-native-1.1.33-src/jni/native

执行检测、编译、安装:

sudo ./configure --with-apr=/usr/local/apr --with-java-home=/usr/local/java/jdk && sudo make && sudo make install

注意/usr/local/java/jdk目录jdk的安装目录

若编译安装失败,查看openssl版本看服务器是否安装:openssl version

未安装则上传openssl-1.0.2r.tar.gz安装包,进行安装

解压缩openssl-1.0.2r.tar.gz并进入openssl-1.0.2r目录执行:

apt-get purge openssl

./config  --prefix=/usr/local --openssldir=/usr/local/ssl

make && make install

./config shared --prefix=/usr/local --openssldir=/usr/local/ssl

make clean

make && make install

3.1.4、修改tomcat运行配置

修改tomcat/conf/server.xml文件:

<Connector port="8080" protocol="org.apache.coyote.http11.Http11AprProtocol"

        connectionTimeout="20000"

        redirectPort="8443"

        URIEncoding="UTF-8"

        maxThreads="500"

        minSpareThreads="75"

        enableLookups="false"

        disableUploadTimeout="true"

        acceptCount="300"

        compression="on" compressionMinSize="2048"

        compressableMimeType="text/html,text/xml,text/javascript,text/css,text/plain"

        />

Tomcat性能调优及性能测试工具配置第4张

重启tomcat,并查看tomcat日志,若出现以下错误:

Tomcat性能调优及性能测试工具配置第5张

修改tomcat/bin/catalina.sh文件

找到JAVA_OPTS配置,在最后加上:-Djava.library.path=/usr/local/apr/lib

Tomcat性能调优及性能测试工具配置第6张

重启tomcat并查看日志打印:

Tomcat性能调优及性能测试工具配置第7张

出现上述表示tomcat已经是以apr模式运行。

Tomcat性能监控工具VisuaIVM

1、配置

VisualVMwindows jdk自带的一个软件,在jdk安装目录的bin目录下。

远程监控配置配置JMX管理远程tomcat

修改远程tomcat/bin/catalina.shwindowscatalina.bat)文件

在JAVA_OPTS后添加:

-Dcom.sun.management.jmxremote(允许使用JMX远程管理

-Dcom.sun.management.jmxremote.port=9008JMX远程连接端口)

-Dcom.sun.management.jmxremote.authenticate=false(不进行身份认证,任何用户都可以连接

-Dcom.sun.management.jmxremote.ssl=false(不使用SSL)

Tomcat性能调优及性能测试工具配置第8张

重启tomcat,打开VisualVM软件,添加远程主机ip在远程IP上右键添加JMX连接。

使用的是Linux环境,还需修改/etc/hosts文件

服务器对应127.0.0.1ip改为实际IP地址。

再次使用VisualVM添加JMX远程连接

Tomcat性能调优及性能测试工具配置第9张

然后就可以实时监控tomcatCUP、内存等数值的变化。

免责声明:文章转载自《Tomcat性能调优及性能测试工具配置》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇爬虫技术(六)-- 使用HtmlAgilityPack获取页面链接(附c#代码及插件下载)【题解】小Z的袜子下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

Ubuntu下OpenGL开发环境的搭建

由于上了计算机图形学的课,老师叫我们安装OpenGL开发环境,晚上安装了一两个小时,终于搞定了。 1.      建立基本编译环境 sudo apt-get install build-essential  2.      安装OpenGL Library sudo apt-get install libgl1-mesa-dev  3.      安装Op...

djangomysql的连接池

http://pypi.python.org/pypi/django-mysqlpool/0.1-7一个 SmartFile 的开源项目 介绍 这是一个简单的mysql连接池的数据库后端。这个后端实现源于Ed Menendez的一个博客文章:http://menendez.com/blog/mysql-connection-pooling-django-a...

关于Ubuntu18.04 linux系统使用安装JDK Mysql

平台部署 一、安装JDK step1.下载OracleJDKstep2.解压step3.加入环境变量 具体操作如下: lemon@ubuntu:~$ cd ~/download/ lemon@ubuntu:~/download$ wget http://download.oracle.com/otn-pub/java/jdk/8u191-b12/2787...

把Gitlab迁移到Docker容器里

把Gitlab迁移到Docker容器里 Apr 9, 2015. | By: 任怀林 公司的gitlab一直是运行在ovm的虚拟机里的,版本还是6.7.5。版本有点老了,最近在研究docker,于是想把gitlab迁移到docker container里去。发现真的有人已经做了gitlab的image了,真心赞。 1 规划 规划: 一个容器运行gitl...

线程属性--十分重要的概念

http://blog.chinaunix.net/uid-23193900-id-3346199.html 一.线程属性 线程具有属性,用pthread_attr_t表示,在对该结构进行处理之前必须进行初始化,在使用后需要对其去除初始化。我们用pthread_attr_init函数对其初始化,用pthread_attr_destroy对其去除初始化。...

android入门 — 多线程(一)

  android中的一些耗时操作,例如网络请求,如果不能及时响应,就会导致主线程被阻塞,出现ANR,非常影响用户体验,所以一些耗时的操作,我们会想办法放在子线程中去完成。   android的UI操作并不是线程安全的,所以多个线程并发操作UI组件的时候,则可能导致线程安全问题。为了解决这个问题,android只允许UI线程修改UI组件。    publ...