一次RPC调用时间都去哪儿了

这个思考从一次撕逼开始,我们给用户组提供了一个JSF(京东自研RPC框架)接口,现象:用户组UMP(京东自研性能监控)监控接口调用超过500ms,我们这边监控max值不超过200ms。翻译一下,具体点就是下面这个描述。

服务端代码执行前后添加监控,最大耗时200ms

调用端调用前后添加监控,最大值500ms

针对此现象,不撕逼,不科学。

但一次RPC调用时间都去哪儿了呢?下面是计算方法。


一次正常的RPC调用时间

分析如下:

一次正常的调用统计的耗时主要包括:①调用端RPC框架执行时间 + ②网络发送时间 + ③服务端RPC框架执行时间 + ④服务端业务代码时间。

① 调用端调用的时候RPC框架会首先拦截业务请求,同时将对象序列化,还有就是接收到响应的时候会反序列化;这个时候框架耗时主要与cpu、jvm运行情况相关,序列化耗时主要和传输对象复杂程度相关。

② 网络时间就是数据包在网络传输过程中的时间,包括 请求+响应,耗时主要与数据包大小、网络情况相关。

③ 服务端主要是队列等待时间,请求拦截+反序列、响应的序列化;

如果RPC框架使用了队列,如果配置了可能有一定的等待时间,成熟的RPC框架都会支持队列的方式,不然就是默认线程当队列使用了。

这个时候框架耗时主要与cpu、jvm运行情况相关,序列化耗时主要和传输对象复杂程度相关。

注意如果服务端较忙(线程比较多,然后cpu超过80%),可能从 服务端到接到请求 到 丢到业务线程池给服务端业务代码执行,线程切换也有一定耗时。

④ 服务端业务代码时间才是ump收集的服务端耗时。

另外,如果是一些异常请求(例如服务端线程池已满,客户端超时重试等),其实根本没有打到服务端业务代码,服务端未记录耗时,但是调用端已经记录了这些耗时。所以当时的情况还要看下有无异常情况。

解决方法:

1.首先第一想到的就是要分析网络情况,看是否网络延迟严重,是否有TCP重传

2.分析服务端和调用端的运行情况,看是否压力较大,比如cpu使用率,cpu负载,内存占用大小等。

3.看传输对象是否很大,很复杂,请尽量简单,这个对序列化有很大影响。

4.如果服务端有队列,试着减少队列,或者改为固定线程池,线程特别多,可以试试减少线程大小。

5.控制cpu不要太高,尽量不超80%,不行该扩容就扩容。另外我觉得大部分业务都是I/0密集型,并非计算密集型,这里有个公式,核数*7,比如4C的容器,那么2.8%的使用率应该就很高了。达到80%的时候一定有问题了,要么线程阻塞,要么就赶紧扩容吧。

6.有可能的话,可以以单次耗时为准,查看下单次耗时的差距,从而看看是否是某些参数的请求导致耗时比较长。

7.看看服务端是否有full gc,你懂的。STW。如果频繁yong gc也不是好事儿,无论yong还是full都会STW,只是耗时长短问题。

8.排除了以上种种,还没有定位到原因,那么就需要尝试如下方法了:可在服务端通过tcpdump抓包,用wireshark分析rpc请求在服务端耗时,定位是服务端还是调用端耗时长,然后进一步确定原因。不过这一步,往往需要运维人员配合操作。

以后,请谨慎撕逼。

转载请标明出处,并附上原文链接。尊重创作。

喜欢的最好方式是点击 关注

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,590评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 86,808评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,151评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,779评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,773评论 5 367
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,656评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,022评论 3 398
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,678评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 41,038评论 1 299
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,659评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,756评论 1 330
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,411评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,005评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,973评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,203评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,053评论 2 350
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,495评论 2 343

推荐阅读更多精彩内容

  • 转自:http://blog.csdn.net/kesonyk/article/details/50924489 ...
    晴天哥_王志阅读 24,768评论 2 38
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,596评论 18 139
  • 总体架构: node-agent TARS框架中Node.js程序启动器,提供生产环境所需的服务属性。 deplo...
    宫若石阅读 4,681评论 0 1
  • 放在门厅物件,不但体现主人文化取向,其本身也有相当的内涵。 此台屏一看便知中国文化,玉壁和青花瓷都是中国文化的重要...
    吾吾斋阅读 273评论 0 0
  • 如果您加入我们团队…… 我们作为一个团队…… 你们队今年的表现…… 体育有团队,商业有团队,教育有团队,我们可能同...
    Zerof阅读 417评论 0 2