性能分析一些简单实战经验

时间和篇幅有限,简单写几点,主要是阐述思路。

1、首先关注服务器层面,看CPU、内存、IO、网络吞吐情况

      常用的linux命令如: top、vmstat、sar、iostat 等,这些是我经常用的

      常用的工具如:nmap等,网上搜一下可以找到很多,不具体说了。

2、CPU高分析

      CPU高是大多数造成性能低下的原因,C和java的分析方法有所不同

      java参照前面文章:https://blog.youkuaiyun.com/flyingfairy123/article/details/100543593

      C主要分析一下进程栈,常用命令如:strace,观察日志分步耗时(如果有)等

      需要分析耗时长的调用或方法,通常包括 数据库访问、连接池、短链接、频繁的线程切换、频繁的内存创建、回收寻址等

      常用的策略:1)查询查备库(基本),减少数据库交互次数,基础数据缓存,同行数据不多次查询等

                            2)池化资源,数据库连接池、线程池等

3、内存分析

     网上工具很多,不具体展开,只说一点,写代码尽量避免内存过渡使用,代码和设计要严谨,即使现在的硬件成本越来越低,不光是堆空间使用开销大,高并发下栈空间同样会对性能产生较大影响

4、IO分析

     大量写文件导致,比如日志,参考操作系统中对文件系统的处理,缓存处理必不可少,还可异步处理(如日志服务器)

5、网络分析

     流量可以测试计划编写时大致计算

6、其它

     常见的部署架构优化如存储分块(一个产品存储的io上线是固定的,一块分多块可提高io)、数据库分组(也是拆分的概念)等等,总之:都离不开 减少系统调用、合理使用内存、缓存、池化、分拆、异步、降低数据库访问频次 等基本原则。

 

附:

C程序的的排查过程:

调试过程:查看cpu高的进程-->线程-->线程函数调用栈-->函数耗时和调用统计-->分析代码
查看进程: top
查看线程: top -H -p id
查看线程函数调用: gstack id
转存进程映像和内存上下文: gcore id
函数耗时和调用统计: strace -T -r -c -p xxxx
调试core文件: gdb  进程  corefile  后 thread  id

      

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值