Hi, I'm Ray.

江湖人称前方哥

关于我

My profile picture.

我是谁?

在计算机工程领域我自己定义自己是一个全栈工程师,编辑技能不限于JAVA,JS,RUBY,PYTHON,GOLANG…并且还在不断学习新得技能,有人说你学这么多就不专注,我想说,编程语言只是让计算机为我工作得语言工具,诚然有些编程技巧需要积累,但你不看GOOGLE的C++后端工程师写angular和他们创造的golang多么精彩,所以经验不是唯一的,按中国老先人的智慧,经验也是限制自己加锁,那为什么我们不能偶尔玩玩跨界,去看到更多的计算机世界。

在体育爱好上,我喜欢游泳和骑自行车。我个头雄壮,本来是可以打篮球的,但是太激烈运动常常造成受伤,所以改成温和运动。我游泳会三种泳姿,最擅长是蛙泳。骑车作为成都交通来说,是我觉得最好的通勤工具,我平均每天骑行30KM左右。



最近一篇

2018-12-07

pyflame与strace工具分析系统瓶颈

pyflame分析系统瓶颈 pyflame与火焰图 pyflame 是由uber开发的用于分析python性能瓶颈工具,是用C++写的,支持py2.6~py3.6 之间的版本,但是他本身并不生成火焰图,还需要配合另外一个工具 安装办法 在其github首页上,详细讲述在ubuntu环境中如何安装,笔者正好也是ubuntu,按照官方配置方式,完全可以使用,只是最后最好将编译出来的pyflame 和flamegraph.pl, 做个超链或者直接copy到/usr/bin/ 基本使用命令: pyflame -p 12345 -s 60 -r 0.01| flamegraph.pl > myprofile.svg 参数说明 -p 是进程号 -s 是统计时间 -r 是采样时间,这个解释下pyflame 通过程序堆栈中当前执行代码片段来判断当前执行的程序代码 最后生成的火焰图解释 这种图横轴代表时间,纵轴代表调用程序的堆栈,那我们怎么看出程序问题再哪呢 其实我们只要关注程序堆栈调用时间最长我们写的代码,比如这张图中model_create 17行调用执行时间最久,所以我们就应该去分析这行代码为啥这么久,在业务层代码中,这种情况应该循环次数过多造成的 所以解决方案一般都是考虑如何少循环。 最后再说一下,系统瓶颈总结起来就两大类,一类是计算密集型,这种一般通过改善算法和减少计算次数来解决,一类是IO密集型,这类一般都是大量时间等待IO返回,解决方案都是异步IO。所以用火焰图只能判断出瓶颈函数是哪里,但是造成系统瓶颈原因还需要我们通过调研函数来分析 或者结合sar或者iostart 之类的工具进一步分析

标签

分类


联系我

怎么联系我?

邮箱:songyuchao@email.com

QQ:867942810

My current local time is .