首页 > 其他分享 >2023性能测试工作积累

2023性能测试工作积累

时间:2024-03-17 14:00:12浏览次数:30  
标签:积累 10 create time sh 测试 2023 调优 tmp

一  理论

1、 性能调优思路:性能瓶颈点分析、关键参数调整、sql调优。调优过程中,通过系统资源、吞吐量、负载等因素来辅助分析。

性能调优流程:
确定调优范围:服务器CPU、内存、IO、网络是否已被充分利用,是否存在瓶颈点。
系统调优:目的是充分利用服务器资源,避免资源冲突,提升吞吐量。调优效果:硬件<系统配置<数据库表结构
SQL调优:通过analyze语句生成表统计信息;通过explain分析执行计划;优化sql写法;

2、was性能调优

3、并不是cpu满才是瓶颈,到40、50就会有少量cpu队列等待。如果增加机器,cpu会下降,tps会提升,说明单台机器的连接数是潜在的瓶颈。

 

 

二  数据库

1、Oracle Database 12c DBA官方手册(第8版)-Bob Bryla-微信读书 (qq.com)
2、mysql
  2.1 造数时,innodb_flush_log_at_trx_commit = 1 造数时改为0,造完改为1,这个在配置文件mysql配置文件里,改为0表示每秒写入一次log,而不是每次事务提交就写入。这样可以加速造数的速度。

  2.2 正常写for循环一条条insert,速度是3小时1000万,insert select limit 10000 ,速度是1小时3000万

  2.3 mysql数据库给日期变量p_create_time加d天
     DATE_ADD(p_create_time,INTERVAL d day);

  2.4 mysql对比两个数据库的索引,用临时表当媒介,注意临时表只存在于当前会话,会话一关,临时表就没了
    create temporary table test_tmp as select index_name,table_name from information_schema.STATISTICS;
    然后通过子查询,看哪些索引是在a库里有,b库里没有的
    select * from a where (table_name,index_name) not in (select table_name,index_name from b)

3、oracle

  3.1 oracle数据库给日期变量

declare
    p_create_time DATE;
    p_create_time2 VARCHAR2(20);
begin
    p_create_time:=to_date('2018-01-01','YYYY-MM-DD');
    for i in 1 .. 100 loop
        p_create_time2:=to_char(p_create_time,'YYYY-MM-DD');
        if mod(i,20) = 0 then
            p_create_time := p_create_time + 1;
        end if;
    end loop;
end;            

oracle把test表的aa字段,修改为从10000开始,每10笔加1
update test set aa = trunc(10000+(rownum-1)/10,0) 如果不加trunc,会得到一个有很多小数位的浮点数,会超出字段长度限制

  3.2 Oracle查看一张表的执行计划,发现有索引还触发了全表扫描,原因如下:
    如果优化器确定查询需要表中的大部分块,即使索引是可用的,它仍将使用全表扫描。全表扫描会使用更大的I/O调用。较少的大型IO调用比许多较小的调用更划算。

三  linux

1、Linux 三剑客实例详解「grep、sed 、awk」 - 知乎 (zhihu.com)

2、从今天被修改的日志文件中,找某个关键字 find /tmp/log -mtime 0 | xargs grep -10 '关键字'

3、在linux服务器上远程传输文件
  scp xx.log [email protected]:/root 

  使用scp命令,把当前机器上的xx.log文件传输到192.168.1.2服务器上root用户的/root目录下

4、看cpu

  sar -u 1 5
  vmstat 1 -w r是等待cpu的进程,b是等待io的进程

5、看网络
  ip a 看有哪些网卡
  ethtool eth0(网卡名) 里面的speed就是带宽上限
  sar -n DEV 1 10 看各个网卡的实时带宽,1秒输出一次,共10次
  iftop -i eth0(网卡名) -P 看哪个端口在用网络
  iotop -p $PID -d 1

6、看磁盘
  iostat -x -k %util 一秒钟之内,有多少时间用于io,如果100,说明太多io
  iostat -x 1 10 w_wait一般不超过2毫秒,磁盘使用率小于60%
  iotop -oP 看哪个进程使用io高 或pidstat -d 1
  pidstat -p $PID -d 1 用启动这个进程的用户启动pidstat,若用其他用户是没有查看权限的,只能看到显示-1

  

  看磁盘读写速度
  dd bs=1k count=1000k if=/dev/zero of=~/test_default.txt conv=fsync
  写速度 time dd if=/dev/zero of=/tmp/test bs=8k count=10000 conv=fsync    // 测完以后记得删文件
  读速度 time dd if=/tmp/test of=/dev/null bs=8k

7、看内存
  free -g -g是单位,默认是字节
  top执行shift+m看线程对内存的占用

8、设置crontab定时
  suse linux重启crontab的命令是: /sbin/service cron restart
  使用crontab一般是用root用户,有些用户没有使用crontab的权限
  cron -l 看目前的定时
  cron -e 修改目前的定时

  设置每10秒运行一次:
    * * * * * sleep 10; /tmp/xx.sh
    * * * * * sleep 20; /tmp/xx.sh
  

  设置每分钟运行一次
    */1 * * * * /tmp/xx.sh

 

9、火焰图

  看当前一段时间内,某个进程占用cpu的线程函数及其调用栈,最下面是栈底

  cd /tmp/async-profiler-2.9-linux-x64
  sh profiler.sh -d 120 -f profiler.html 12345 120是截取当前120秒时间内,12345是分析的进程号

10、arthas 看jvm 以及函数调用链耗时
  cd /tmp/arthas-packaging-3.5.2-bin
  sh as.sh 进程号
  dashboard 就能看实时jvm了
  

  看函数调用链耗时,得知道入口函数类名、方法名
  sh as.sh 进程号之后
  trace com.test.testClass testFunc '#cost > 500' -n 200 追踪testClass类testFunc函数里,耗时大于500毫秒的函数,并列出前200个
  然后找到耗时比较长的,再用trace命令看他里面又调用了什么

四  性能分析工具

1、IBM官方的jvm分析工具,分析是否有内存泄漏风险,和占用jvm过多的对象及其所在类或函数,比visualVM更直观,能定位某个基本类型是哪个类,visualVM只知道基本类型占内存多,但不知道这些基本类型是哪个类的。
工具名:
  IBM HeapAnalyzer
  IBM Thread and Monitor Dump Analyzer for Java
启动工具命令:
  java -Xmx6g -jar jca464.jar 6g是自己指定的启动这个工具的jvm大小,如果dump文件5个g,jvm分析工具必须大于5g,它才能打开dump文件
  java -Xmx6g -jar ha457.jar

 五  压测工具

  1、loadrunner测试socket接口

 

 

标签:积累,10,create,time,sh,测试,2023,调优,tmp
From: https://www.cnblogs.com/zhaot1993/p/17438458.html

相关文章

  • 攻击树测试
    任务详情用(你的学号%10)+1确定序号,完成下面的内容:1给如何偷汽车创建攻击树。在这道题以及其他攻击树的练习题中,可以通过图来描述攻击树,也可以使用一个编号的列表来描述攻击树(比如,1,1.1,1.2,1.2.1,1.2.2,1.3,…)。2给如何不付费进入体育馆创建攻击树。3给如何不付费就从餐馆获得食......
  • 沃伦·巴菲特2023股东书(2024.2.24)-0-查理·芒格——伯克希尔·哈撒韦公司的建筑师
    2023letterhttps://www.berkshirehathaway.com/letters/2023ltr.pdf查理·芒格——伯克希尔·哈撒韦公司的建筑师查理·芒格于11月28日去世,距离他100岁生日仅33天。虽然在奥马哈出生和长大,但他一生中80%的时间都在其他地方定居。因此,直到1959年他35岁时,我才第一次......
  • IntelliJ IDEA 2023.3 最新发布啦!盘点精彩亮点(关注公众号‘精品应用分享’,输入'idea'
    IntelliJIDEA2023.3的发布标志着AIAssistant的持续发展,它现已超越技术预览阶段,并具有许多令人兴奋的改进。在其他领域,该版本包括对最新Java21功能的全面支持,引入了具有编辑操作的直观浮动工具栏,并添加了“运行到光标”嵌入选项以增强调试工作流程。IntelliJIDEAUltima......
  • 测试
    1、时间增加或减少。DATE_SUB(CURRENT_DATE,INTERVAL7day)DATE_add(CURRENT_DATE,INTERVAL7day)2、取第一条数据不能通过orderby加groupby取最新的一条。只有通过两个表连接才能实现。3、空字符串和空值同时去掉空格和空whereISNULL(name)=0andLENGTH(trim(nam......
  • 软件项目管理资料完整版(规格说明书,详细设计,测试计划,验收报告)
       前言:在软件开发过程中,文档资料是非常关键的一部分,它们帮助团队成员理解项目需求、设计、实施、测试、验收等各个环节,确保项目的顺利进行。以下是针对您提到的各个阶段的文档资料概述:所有资料获取:点击获取开发阶段需求规格说明书:详细描述了软件系统的功能需求、非......
  • 20231325贾罗祁 2023-2024-2《Python程序设计》实验一报告
    20231325贾罗祁2023-2024-2《Python程序设计》实验一报告课程:《Python程序设计》班级:2313姓名:贾罗祁学号:20231325实验教师:王志强实验日期:2024年3月13日必修/选修:公选课1.实验内容熟悉Python的操作学会调试程序编译循环的剪刀石头布游戏创建gitee账户并推送上传......
  • 使用 JUnit 5.7 进行参数化测试:深入了解 @EnumSource
    使用JUnit5.7进行参数化测试:深入了解@EnumSource        参数化测试允许开发人员使用一系列输入值高效地测试他们的代码。在JUnit测试领域,经验丰富的用户长期以来一直在努力解决实施这些测试的复杂问题。但随着JUnit5.7的发布,测试参数化进入了一个新时代,为开发......
  • 部署测试平台-部署前端
    1.打包前端进入前端根目录,执行npmrunbuild 打成的包是放在dist文件夹下面:2.把打好的前端dist包下所有的文件放到nginx挂载目录/root/website/web/imos下 nginx挂载前端的目录,步骤请参https://www.cnblogs.com/quxue/p/180673163.检查:浏览器打开链接:http://服务......
  • 测试使用
    KNN、K-Means和FCMk近邻法k近邻法(k-nearestneighbor,k-NN)是一种基本的分类和回归方法,其分类的主要思想是:给定一个训练数据集,其中实例的类别已经确定,分类时,对于新的实例,根据其k个最近邻的训练实例的类别,通过多数表决等方式进行预测。k-NN三个基本要素k值的选择距离度量分......
  • AI预测福彩3D第10弹【2024年3月16日预测--第2套算法重新开始计算第2次测试】
            今天继续开始咱们第2套算法的验证,计划每套算法连续测试10期,达到50%的命中率即为较优的模型,可继续使用。老规矩,先上图表,再下结论~                最终,经过研判分析,2024年3月16日福彩3D的七码预测结果如下:百位:1354798十位:324......