Tomcat高级调优

关于Tomcat nginx服务器的调优

为什么要调优?

  • 调优:主要为了优化服务器的性能
  • 目的:节约硬件成本

运维人员:通过调优来体现自身的价值

调优:大部分的时间都是在分析问题上,实际修改仅仅是几个参数。
开发写的应用程序性能太差,或者服务器性能瓶颈。

##系统性能 I/O

磁盘:加载文件到内存,然后从内存的buffer中完成数据的存储,而cache完成和CPU的值及热点数据的交互。一个Buffer文件,从硬盘到Buffer,从buffer到磁盘。

I/O,I/O请求:

  • IOPS(每秒的输入输出)读写次数 -> 单位时间内,系统能处理I/O请求的数量
  • 吞吐量:单位时间内能够完成数据传输的数量
  • 磁盘进行压测:最大IOPS,最大吞吐量

调优:就是解决某一瓶颈(以最低成本,解决这一瓶颈,达到需要的要求)

sysbench支持以下几种测试模式:

1、CPU运算性能
2、磁盘IO性能
3、调度程序性能
4、内存分配及传输速度
5、POSIX线程性能
6、数据库性能(OLTP基准测试)
目前sysbench主要支持 mysql,drizzle,pgsql,oracle 等几种数据库。

sysbench地址:

http://imysql.com/wp-content/uploads/2014/09/sysbench-0.4.12-1.1.tgz

调优基本手册之一测试工具

  • 负载测试
    负载测试是指在一定的软件、硬件及其网络环境下,运行一种或多种业务,
    在不同的虚拟用户数量的情况下,测试服务器的性能指标是否在用户的要求范围内,
    以此来确定系统所能承载的最大用户数量、最大有效用户数,的峰值,
    以及不同用户数量下的系统响应时间及其服务器的资源利用率。
    
  • 压力测试
    压力测试是指在一定的软件、硬件及其网络环境下,模拟大量的虚拟用户向服务端产生负载,使得服务器的资源处于极限状态下,
    并且长时间的连续运行,来测试服务器在高负载的情况下是否能够稳定工作。
    与负载测试得到峰值数据不同,压力测试强调在极短情况下的系统的稳定性,这个时候处理能力以及不重要了。
    
  • 容量测试
    容量测试失职在一定的软件、硬件及其网络环境下,在数据库中构造不同数量记录,运行一种多多种业务在一定的虚拟用户数量情况下。
    获取不同数量几杯的服务器指标,以确定数据库的最佳容量和最大容量,容量测试不仅仅可以对数据库进行,
    还可以对硬件处理能力、各种服务器的连接能力等进行,以此来测试系统在不同容量级别下是否能达到指定的性能。
    
  • 并发测试
    并发测试是指通过模拟多个用户并发访问同一个应用,存储过程或数据记录及其其它并发操作,
    测试是否存在死锁、数据库错误等故障,为了避免数据库或函数方法在并发下错误,需要专门模拟针对每个模块的进行并发测试。
    
  • 测试报告 -> 硬件配置 -> 部署的应用程序
    测试的指标:
    1.响应时间:事务的响应时间
    2.吞吐量(TPS):单位时间内能完成的事务数量
    3.服务器资源占用:反应在负载下的系统的资源利用率
    
  • 单机调优
    一个服务放在一个服务器上测试,短板服务器硬件有瓶颈,服务测试出完整的极限性能。
    
  • 架构调优
    集群等等
    

测试工具JMeter安装和使用

  • JMeter支持分布式部署
  • 压力测试和性能测试的结合
  • 性能测试
    是通过自动化的测试工具(JMeter)模拟多种正常、峰值以及异常负载条件来对系统的各项性能指标进行测试。
    负载测试和压力测试都属于性能测试,两者可以结合进行。
    通过负载测试,确定在各种工作负载下系统的性能,目标是测试当负载逐渐增加时,系统各项性能指标的变化情况。
    压力测试是通过确定一个系统的瓶颈或者不能接受的性能点,来获得系统能提供的最大服务级别的测试。
    

什么是JMeter?
JMeter

JMeter对于运维有什么用?

Jmeter:安装、部署、web性能测试(Web性能测试,Jmeter性能测试)

JMeter安装和部署:

JMeter:为纯Java程序
java -version  # 查看当前的jdk系统版本>1.7就可以

JMeter环境的安装:

如若没有装则执行以下:
tar -xvf jdk-8u73-linux-x64.tar.gz -C /usr/local/
cd /usr/local/
mkdir jdk
mv jdk1.8.0_73/ jdk
vim /etc/profile     # 新建JAVA环境变量
    export JAVA_HOME=/usr/local/jdk/jdk1.8.0_73
    export JRE_HOME=/usr/local/jdk/jdk1.8.0_73/jreexport PATH=JAVA_HOME/bin:PATH
    export CLASSPATH=./:/usr/local/jdk/jdk1.8.0_73/lib:/usr/local/jdk/jdk1.8.0_73/jre/lib
source /etc/profile  # 重载配置文件

JMeter安装及其环境变量修改

rz apache-jmeter-3.1.tgz   # 上传jmeter包
tar xvf apache-jmeter-3.1.tgz -C /usr/local
cd /usr/local/ && mkdir -pv jmeter/3.1
mv apache-jmeter-3.1 jmeter/3.1
vim /etc/profile        
    export JMETER=/usr/local/jmeter/3.1
    export CLASSPATH=JMETER/lib/ext/ApacheJMeter_core.jar:JMETER/lib/jorphan.jar:JMETER/lib/logkit-2.0.jar:CLASSPATH
    export PATH=JMETER/bin/:PATH

发表评论