软件性能测试面试题一

1、IO性能调优的过程:OS级别->进程级->线程级->文件级

vmstat(或者iostat,可以查看系统磁盘的读写量及cpu占用率)->iotop(定位到什么进程在作祟)->systemtap->

2、cpu性能调优的过程:vmstat->top(查看进程号)->pidstat(查看哪个线程消耗了cpu:pidstat -p 10846 -u -d -t -w -h 1 1000)->jstack(做thread dump,例如:jstack -l 10846>10846.threadump)->查看nid(nid指native ID 对应系统的tid,但tid显示的10进制,nid显示的是16进制)->printf %x'\n' 10861->转换后的结果为2a6d->对应到threaddump文件中,查到nid在哪一行,从而确定代码的哪一行对cpu的使用比较高

3.tomcat配置

4、JVM内存是否开的越大越好,为什么?

答:JVM内存开的越大,JVM在进行Full GC所需的时间越久,由于Full GC时stop whole word的,如果是用于响应HTTP请求的服务器,这个时候就表现为停止响应,对于需要低延迟的应用来说,这是不可接受的,对于需要高吞吐量的应用来说,可以不在乎这种停顿,比如一些后台的应用之类的,那么内存可以适当调大一些

5、如果tps曲线图上下波动很大,那你怎么去分析问题?

答:比如:1、网络的波动,2、压力过大,3、防火墙设置不当,4、环境不干净,压测期间有其他用户在访问服务器,5、线程是有挂起,6、数据库锁,7、不正常的GC;这几个问题都会引起tps上下波动很大

6、性能测试流程

答:获取测试需求->测试架构的调研、业务模型调研、确定需求->测试计划(属于部门老大工作)->测试方案设计->环境的搭建->测试用例设计->测试数据准备->测试环境试运行->测试脚本开发->创建模型(场景)->执行场景(此过程中,需监控调试)->测试结果分析->问题反馈(相应的研发人员处理问题)->再次测试->最终报告

7、cpu资源负载高如何定位分析问题

答1、用top找到最耗资源的进程id,2、查询最消耗资源的java线程( top -H -p  进程号)3、打印java 栈 信息(在jdk的bin下执命令: jstack pid>pid.threaddump

     4、将耗资源的java的tid(十进制)转换为nid(十六进制){因为系统级的tid对应threaddump中的nid},5、查看pid.threaddump文件中的nid,从而找到出问题java代码的行号 ,6、

同时要看一下堆的情况,在jdk的bin目录执行:jmap  - heap  pid;jmap  -histo   pid

8、堆内存和栈内存的区别?

答:堆主要用来存放对象的,栈主要是用来执行程序的

9.top的-H参数的意思

答;-H : Threads toggle(线程切换),所以top -H -p pid的意思就是找出线程切换消耗cpu的线程







可能存在的问题:1、程序中可能存在死循环,导致服务器负载超高(使用top指令查看负载高达100+), 需要借助Linux的proc虚拟文件系统找到具体的问题程序,2、程序不合理使用session,需要借助Linux的proc文件系统找出原因,



  • 0
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值