zoukankan      html  css  js  c++  java
  • 性能优化

    性能测试主要看哪几方面?

    1. 响应时间 : 完成一个业务所需要的时间

    2. 吞吐量: 单位时间处理的业务数量

    3. 资源利用率 : 完成业务需要的开销 ( CPU, 内存,IO)

    性能的难点

    用户总希望发最小的代价取得最大的收益,实际上一旦确定了架构,性能也就确定了

      - 如果遵守规范体系能够达到默认架构的性能

      - 大多数的开发会违背架构,拖后腿

    性能测试模型

    1. 做单用户的业务串行测试 : 评估单独业务的相应时间

    2. 多用户的并发测试:了解相应时间的转折点: 

      - 队列

      - 资源不足

      - 处理能力的峰值

    模型结论:(所有系统都遵守)

    1. 响应时间随着负载的上升先稳定后上升,并且越来越快

    A点:响应时间开始变长的点

    为什么响应时间开始变长? 当到达A点说明负载导致了队列的产生

    B点: TPS开始下降

    B点处理能力已经不能完全占用资源,开始下降了

    C点: 响应时间超过用户接受范围

    C点响应时间超时

    系统在A点,说明负载小

    系统在B点,说明达到系统最佳在线用户

    系统在C点,说明系统不能用 

    正常系统应该一直在A->B之间,最好不超过B

    性能瓶颈:99%都是数据库

    调优:ABC三点右移,说明调优成功


    系统如果慢了,应该怎么处理?

    有监控系统就看监控系统,没有监控系统就用命令,查看CPU, 内存,IO,network的信息

    命令: top 

    1. 查看cpu的使用情况

    查看cpu详细情况,比如有几核

    cat /proc/cpuinfo

    top命令下按一下1,cpu有几核等信息也会出来

    那么看到了cpu占用率比较高的进程,应该怎么定位代码呢?

        在top下用shift+h,把进程的线程信息显示出来, jstack 线程PID > info.txt,把线程pid转换为16进制,搜索info.txt,就可以看到信息了

    jstack命令:每个线程的信息都会显示出来

    2. 内存

    vmstat 或top 

    vmstat

    vmstat 1 : 1秒中显示一次

    free -g : 单位是G

    free -m: 单位是m

    buffer: 写优化

    cache: 读优化

    用top命令看,如果mem占比高的话,就要考虑是不是JVM的问题了

    3. IO : 磁盘读写

    iostat

    %util : 查看IO占cpu时间比,可能超过5%就有问题了

    怎么定位到IO问题? 只能看业务逻辑了

    4. Network

    nicstat

    用jmeter压测某个url,就可以看到网络的使用情况

    监控系统:

    1. 硬件的监控

    2. 服务的监控

     

  • 相关阅读:
    运营总监招聘-e袋洗招聘-拉勾网
    中国服饰行业十大趋势
    赢在形象力之色彩
    百度系统部 在 北京市海淀区西二旗首创空间大厦 招聘 Python-交付运维系统研发工程师
    时间规划师
    使用python/casperjs编写终极爬虫-客户端App的抓取-ZOL技术频道
    传统线下零售商已经过时了,细分电商领域的机会仍待挖掘 | 36氪
    艺术私学----免费摄影、绘画、时尚造型课程体验_豆瓣
    艺术私学------绘画免费体验课程_豆瓣
    艺术私学------绘画免费体验课程_豆瓣
  • 原文地址:https://www.cnblogs.com/yintingting/p/11320424.html
Copyright © 2011-2022 走看看