【性能测试】性能分析与调优之配置优化

配置优化的关键词:JVM,连接池,线程池,缓存机制,CDN等优化手段,这些优化提高了资源利用率,有大限度的压榨服务器性能。

一.JVM配置优化:

合理的分配堆和非堆堆内存,配置适合堆内存回收算法,提高系统服务的能力

二.连接池:

数据库连接池可以节省建立连接和关闭连接的资源消耗

三.线程池:

通过缓存线程的状态来减少新建线程与关闭线程的开销,一般是在中间件中进行配置,比如在Tomcat的server.xml文件中进行配置

这个配置通常在开发项目的类似application-common.properties这种文件里,

最大线程数:server.tomcat.max-threads=256

那么就引入了一个问题:max-threads并不是越大越好,为什么呢?

分两种情况:第一种极端纯计算型,那么系统相应时间的主要限制就是cpu的运算能力,降低同一时间内争抢cpu的线程个数可以提高计算效率,提高系统的整体处理能力

第二种情况:如果是纯粹的IO或数据库,那么响应时间的主要限制就变为等待外部资源,此时maxthreads应该尽量设置的大,这样才能同时处理请求的个数,从而提高系统整体的处理能力,此情况下因为tomcat同时处理的请求数比较大,还要关注tomcat的虚拟机内存设置和linux的openfile限制

四.缓存机制:

通过数据的缓存来减少磁盘的读写压力,缩小存储与CPU的效率差

==========================================================================================

鉴于第二点连接池引申出

2.1 数据库连接池优化

数据库连接池存在的意义是让连接复用,通过建立一个数据库连接池(缓冲区)以及一套连接使用,分配,管理策略,使得连接池中的连接可以高效,安全的复用,避免了数据库连接频繁建立,关闭的开销。

测试中需要关注:1.连接池的配置参数 2.连接池配置多少连接合适 3.监控连接池

原则:按续分配,够用就好,比如以单位是阿金的业务量或者并发数为单位,监控使用了多少连接数,再以此放大,一般来讲,数据库连接池的数量要小于中间件线程池的连接数量

鉴于第三点引申出

3.1 线程优化

系统性能差一般有以下两种表现

第一种是CPU使用率不高,用户感觉交易响应时间很长;

第二种是CPU使用率很高,用户感觉交易响应时间很长。

对于第一种情况,可能是由于系统的某一小部分造成了瓶颈,导致了所有的请求都在等待。比如,线程池的数量开的太小,导致所有的请求都在排队等待进入线程池,因为没有用的线程使用,所以这个交易请求一直在排队,导致交易响应时间很长

对于第二种情况,比较复杂。可能是硬件资源不够,也可能是应用系统中产生了较多大对象,还可能是程序算法等问题。

服务端最佳的线程数量 = ((线程等待时间+线程cpu时间)/线程cpu时间)*cpu数量 单位ms

鉴于第四点引申出

4.1 db优化

通常使用数据库有3个要求,性能好、数据一致性有保障、数据安全可靠;数据库优化的前提也是这3个要求。有一句玩笑话叫着少做少犯错,不做不犯错。DB优化的思路就是少做,减少请求次数,减少数据传输量,减少运算量(查询、排序、统计)。以Oracle为例

大体从下面几个方向进行优化。

(1)优化物理结构,数据库逻辑设计与物理设计要科学高效,比如分区、索引建立、字段类型及长短、冗余设计等。

(2)共享SQL、绑定变量、降低高水位。

(3)查询器优化,特殊情况调整执行计划。指定的执行计划加快查找速度。比如连接查询时指定驱动表,减少表的扫描次数。

(4)单条SQL优化,对单条SQL进行优化分析,比如查询条件选择索引列。

(5)并行SQL,对数据量巨大的表的数据遍历,用多个线程分块处理任务。

(6)减少资源争用(锁、闩锁、缓存),可以提高10效率减小响应时间从而提高吞吐量来缓解争用,比如用缓存;可以物理拆分把热点数据分布在不同表空间。

(7)优化内存、减少物理io访问

SGA (缓存高频访问数据),比如我们把客户信息载到内存中。

PGA (排序、散列)。

AMM (自动内存管理)人工干预。

(8)优化io,进度条带化,读写分离,减少热点。

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值