zoukankan      html  css  js  c++  java
  • 性能瓶颈定位整体思路

    性能瓶颈定位整体思路、从前到后、从表象到内部
    1、首先排除压力机的性能情况、包括cpu、内存
    2、应用服务器的硬件指标、cpu、内存、网络IO(ethtool eth0)、磁盘IO
    3、其他服务器、比如数据库服务器、依赖的其他应用服务器
    4、看应用服务器的日志、tomcat下看的是catalina.out、用tail -200 catalina.out 、看cause by:xxx TimeOut
    5、tps比较低、应用服务器cpu比较高、jvisualvm、jprofiler看下java进程、消耗cpu的方法
    6、tps比较低、应用服务器cpu也比较低、可能是java程序的线程阻塞或死锁、也用jvisualvm看、如果红色的线程比较多、就是阻塞的原因、jstack pid
    7、tps比较低、响应时间比较长、首先要先弄清楚请求的流向、比如:LR-->nginx-->tomcat-->java-->数据库-->缓存-->外部依赖--返回、如果排除到其他的问题
    可以在java代码加时间戳的方法来定位响应时间比较长的问题
    8、tps缓慢降低、或大幅降低、tps大幅波动、用jmap或者jvisualvm进行堆内存dump、用jstat -gcutil、看看是否有内存泄露趋势、Jvm的FullGC是否频繁
    9、排查连接数相关的内容、包含tomcat的连接数、mysql的连接数、Redis连接数、某端口的连接数:netstat -an|grep 8080 | wc -l

    Tomcat连接数,不配置默认maxThreads=200,acceptCount=100

    maxThreads="200" 表示最多同时处理200个连接,默认值是200
    acceptCount="100" 当同时连接的人数达到maxThreads时,还可以接收排队的连接,超过这个连接的则直接返回拒绝连接。默认值为100

    Tomcat连接数相关
    关于连接数,要看2方面,首先是中间件最大配置的连接数,然后就是当前连接数
    tomcat的当前连接数用netstat可以看,略。最大连接数在
    一般tomcat需要设置的参数

    第一个就是连接数在conf/server.xml里配置

    第二个jvm的参数,在bin目录下的catalina.sh第二行插入就行

     Redis连接数配置 Redis配置文件配置连接数 Redis-cli 输入命令info也可以查看连接数

    数据库架构的调优
    --读写分离:主从配置
    --分库分表:根据一个id来路由库名和表名,id%10(取余余数是几就找那个库),1202922292
    user_1
    user_2
    user_3
    ...
    user_10

    --硬件调优(最有效)
    普通磁盘
    SSD
    fusionIO卡

    常见的一些sql优化方案
    1、在 where 及 order by 涉及的列上建立索引,避免全表扫描,索引不要太多,一个表不要超过4个索引
    2、避免在 where 子句中对字段进行 null 值判断,否则将导致引擎放弃使用索引而进行全表扫描
    3、查询语句中不要使用 *,减少内存使用
    4、尽量减少子查询,使用关联查询(left join,right join,inner join)替代
    5、减少使用IN或者NOT IN ,使用exists,not exists或者关联查询语句替代
    6、or 的查询尽量用 union或者union all 代替
    (在确认没有重复数据或者不用剔除重复数据时,union all会更好)
    7、合理的增加冗余的字段(减少表的联接查询)
    8、建表的时候能使用数字类型的字段就使用数字类型(type,status...),数字类型的字段作为条件查询比字符串的快


    应用程序架构调优
    代码优化原则
    1、使用对象池减少对重复对象的创建;
    2、调整对后端的连接
    3、增加本地缓存
    4、如果不涉及事务的情况下,考虑使用Nosql进行存储
    5、一次请求合并多次操作。
    6、由串行修改为并行操作
    7、同步修改为异步

  • 相关阅读:
    杭电2054
    M1/M2总结
    软件开发相关的读书笔记 问题与方法
    代码复审1234跟我一起来
    电梯调度算法简述
    Pair_Work Project
    读书笔记摘录:
    Individual Project
    个人阅读作业——软件工程M1/M2的总结
    个人阅读作业2
  • 原文地址:https://www.cnblogs.com/dwdw/p/10928128.html
Copyright © 2011-2022 走看看