SRS性能(CPU)、内存优化工具用法
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SRS性能(CPU)、内存优化工具用法相关的知识,希望对你有一定的参考价值。
参考技术A SRS提供了一系列工具来定位性能瓶颈和内存泄漏,这些在 ./configure && make 后的 summary 中是有给出来用法的,不过不是很方便,所以特地把用法写到这个文章中。文中所有的工具,对于其他的linux程序也是有用的。
RTC是UDP的协议,先设置 网卡队列缓冲区 ,下面命令是UDP分析常用的:
也可以修改系统文件 /etc/sysctl.conf ,重启也会生效:
查看接收和发送的丢包信息:
查看接收和发送的长度:
下面是netstat的一些参数:
PERF是Linux性能分析工具,参考[PERF](perf record -e block:block_rq_issue -ag)。
可以实时看到当前的SRS热点函数:
或者记录一定时间的数据:
记录堆栈,显示调用图:
GPROF是个GNU的CPU性能分析工具。参考 SRS GPROF ,以及 GNU GPROF 。
Usage:
GPERF是 google tcmalloc 提供的cpu和内存工具,参考 GPERF 。
GCP是CPU性能分析工具,就是一般讲的性能瓶颈,看哪个函数调用占用过多的CPU。参考 GCP 。
Usage:
图形化展示,在CentOS上安装dot:
然后生成svg图片,可以用Chrome打开:
GMD是GPERF提供的内存Defense工具,检测内存越界和野指针。一般在越界写入时,可能不会立刻导致破坏,而是在切换到其他线程使用被破坏的对象时才会发现破坏了,所以这种内存问题很难排查;GMD能在越界和野指针使用时直接core dump,定位在那个出问题的地方。参考 GMD 。
Usage:
GMC是内存泄漏检测工具,参考 GMC 。
Usage:
GMP是内存性能分析工具,譬如检测是否有频繁的申请和释放堆内存导致的性能问题。参考 GMP 。
Usage:
VALGRIND是大名鼎鼎的C分析工具,SRS3之后支持了。SRS3之前,因为使用了ST,需要给ST打PATCH才能用。
系统调用的性能排查,参考 centos6的性能分析工具集合
在OSX/Darwin/Mac系统,可以用Instruments,在xcode中选择Open Develop Tools,就可以看到Instruments,也可以直接找这个程序,参考 Profiling c++ on mac os x
还有DTrace可以用,参考 动态追踪技术(中) - Dtrace、SystemTap、火焰图 或者 浅谈动态跟踪技术之DTrace 。
多核时,一般网卡软中断在CPU0上,可以把SRS调度到其他CPU:
或者,指定SRS运行在CPU1上:
调整后,可以运行 top ,然后按数字 1 ,可以看到每个CPU的负载:
或者使用 mpstat -P ALL :
如果是多CPU,比如4CPU,则网卡中断可能会绑定到多个CPU,可以通过下面的命令,查看网卡中断的绑定情况:
我们可以强制将网卡软中断绑定到CPU0,参考 Linux: scaling softirq among many CPU cores 和 SMP IRQ affinity :
然后将SRS所有线程,绑定到CPU0之外的CPU:
如果要获取极高的性能,那么可以在SRS的启动脚本中,在启动SRS之前,执行绑核和绑软中断的命令。
可以设置SRS为更高的优先级,可以获取更多的CPU时间:
可以从ps中,看到进程的nice,也就是 NI 字段:
性能优化可使用的工具
在分析 CPU、内存、磁盘等的性能指标时,有几种工具是高频出现的,如 top、vmstat、pidstat,这里稍微总结一下:
- CPU:top、vmstat、pidstat、sar、perf、jstack、jstat;
- 内存:top、free、vmstat、cachetop、cachestat、sar、jmap;
- 磁盘:top、iostat、vmstat、pidstat、du/df;
- 网络:netstat、sar、dstat、tcpdump;
- 应用:profiler、dump分析。
上述的很多工具,大部分是用于查看系统层指标的,在应用层,除了有 JDK 提供的一系列工具,一些商用的产品如 gceasy.io(分析 GC 日志)、fastthread.io(分析线程 dump 日志)也是不错的。
排查 Java 应用的线上异常或者分析应用代码瓶颈,可以使用阿里开源的 Arthas ,这个工具非常强大,下面简单介绍下。
Arthas 主要面向线上应用实时诊断,解决的是类似线上应用异常了,需要在线进行分析和定位」的问题,当然,Arthas 提供的一些方法调用追踪工具,对我们排查诸如「慢查询」等问题,也是非常有帮助的。Arthas 提供的主要功能有:
- 获取线程统计,如线程持有的锁统计、CPU 利用率统计等;
- 类加载信息、动态类加载、方法加载信息;
- 调用栈追踪,调用耗时统计;
- 方法调用参数、结果检测;
- 系统配置、应用配置信息;
- 反编译加载类;
以上是关于SRS性能(CPU)、内存优化工具用法的主要内容,如果未能解决你的问题,请参考以下文章