51Testing软件测试论坛

 找回密码
 (注-册)加入51Testing

QQ登录

只需一步,快速开始

微信登录,快人一步

手机号码,快捷登录

查看: 2883|回复: 1
打印 上一主题 下一主题

[转贴] 性能问题分析

[复制链接]
  • TA的每日心情
    奋斗
    2018-11-26 09:42
  • 签到天数: 11 天

    连续签到: 1 天

    [LV.3]测试连长

    跳转到指定楼层
    1#
    发表于 2019-6-21 10:04:30 来自手机 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
    CPU问题

    1.现象

    系统访问卡顿,QPS、TPS降低,响应时间延长,网络吞吐量降低;

    应用服务器内存和IO正常,CPU利用率增高

    2.原因

    线程太多,上下文切换太频繁;

    GC回收使用了过高的CPU资源;

    某段代码陷入了死循环;

    锁争用激烈

    3.解决方法(主要解决CPU的问题)

    考虑使用更高级的CPU代替当前的CPU

    对于多CPU,考虑CPU之间的负载分配

    考虑在其他体系上设计系统,例如增加前置机,设置并行服务器

    定位耗时最高的线程,将需要的线程ID替换成16进制格式,并打印线程的堆栈信息,找到出现问题的代码



    内存问题

    1.现象

    项目内存持续增加;

    响应时间成规律性的先增加后回落;

    查看应用日志,会出现OutOfMemoryError错误;

    GC日志发出FULL GC警告;

    系统长时间运行后出现访问错误或宕机

    2.原因

    启动参数内存值设定得过小;

    代码中存在死循环或者循环产生过多重复的对象实体;

    集合类中有对对象的引用,使用完后未清空,使JVM不能回收;

    使用的第三方软件中有GUB

    3.解决办法(主要解决内存的问题)

    保证保留列表具有较大的邻接内存块

    调整数据块缓冲区大小(用数据块的个数表示)

    将最频繁使用的数据保存在存储区中



    磁盘IO问题

    1.现象

    磁盘读写速率、IOPS过高,系统出现卡顿

    2.原因

    SQL写法、参数配置不合理;

    交换机故障,网线老化;

    存储针列条带宽不足,缓存不足,Qos限制,RAID级别设置不当

    3.解决办法(主要解决磁盘IO的问题)

    通过把日志和数据库对象分布在独立的设备上

    把不同的数据库放在不同的硬盘上



    数据库问题

    1.现象

    QPS、TPS降低,CPU使用率超高导致宕机;

    磁盘IO过高,网卡IO被占满

    2.原因

    SQL查询速度慢,语句效率低下;

    服务器硬件性能差;

    表数据文件巨大,表单超过千万行;

    资源锁定造成数据库事务超时,数据库死锁;

    事务粒度过大

    3.解决办法(主要解决数据库的问题)

    定位资源占用较大的事务并做出必要的优化或调整

    定位锁冲突,修改锁冲突发生严重的应用逻辑

    对规模较大的数据或者无法通过一般优化解决的锁冲突进行分布

    分表分库:减少表单的记录条数,减少数据查询所需的时间,提高数据库的吞吐;对数据库进行拆分,提高数据库的写入能力

    考虑采用分布式的cache层

    实现MySQL数据库异步查询,MySQL读写分离
    分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
    收藏收藏
    回复

    使用道具 举报

    本版积分规则

    关闭

    站长推荐上一条 /1 下一条

    小黑屋|手机版|Archiver|51Testing软件测试网 ( 沪ICP备05003035号 关于我们

    GMT+8, 2024-11-24 08:15 , Processed in 0.062373 second(s), 22 queries .

    Powered by Discuz! X3.2

    © 2001-2024 Comsenz Inc.

    快速回复 返回顶部 返回列表