前面给大家发过如何搭建全链路监控系统pinpoit了,今天来普及一下如何实战使用,由于是入门级的教材,所以高手请飘过,并且喜欢自己print日志来优化的也请靠边。
这里以我自己的一个应用来举个栗子

从上图可以看到,这个应用一共有3个服务节点,每次前端请求,都会有一次的mysql DB的查询,平均每次前端请求然后有6.00129……次的redis查询,目前每次请求平均耗时在50ms不到,然后每个节点的TPS大概是9左右,3个节点提供出去的相当于是TPS30左右吧

然而对于我们一个有自我追求的码农来说,怎能忍受超过50ms的server呢?于是准备动刀,打开详细的链路进行分析

发现某个混蛋竟然在一个方法里面,做了2次的数据库连接请求,马上搜索getcode的这个函数,找到他,发现……此处略过千言万语
修改后打包发布,再跟踪一下看看新的请求

看到木有,这里变成只有一次的请求了。
当然这里你看到都是假的,因为都是我们实际应用的时候,一般对数据库都会使用连接池,不会每次请求都会去创建连接。
网友评论