关于20170701出现IM列表无法加载用户信息的问题


  1. 表现问题说明

  1. 用户信息显示配置问题说明

  • 简要说明
  • 详细过程
  • 临时解决方案
  • 问题跟进处理
  • 后期优化方案
  • 21:43分补充
  1. IM问题解析

  • 代码走查结果:
  • 对服务端压力描述:
  • 结论:
  • pc客户端改进:
  1. 关系认证服务端问题分析

  • 问题描述:
  • 过程分析:
  • 代码走查:
  • 整改初步方案

表现问题说明

IM列表页面无法显示用户扩展信息,有些页面只显示UID

用户信息显示配置问题分析及解决方案

简要说明

经排查发现是关系认证服务端报500错误,导致的连锁反应

详细过程
  1. 表单模板服务在早上9点36分时出现假死,见下图:


    图1

    排查发现请求用户关系认证出现超时,查看日志发现关系认证服务请求超时,在99U上使用建立关系无响应。近两天请求数据,见下图:


    图2
  2. 在上周PC端接入后,Nginx请求数量从100万一下升到500万,见下图:


    图3

    另外查看日志发现PC端请求在同一时间内存在频繁的重复请求,见下图:


    图4
  3. 表单模板服务在请求关系认证超时的情况下,也产生了超时情况,目前确认是在请求关系认证时,关系认证超时后,表单请求端口占满却没有及时释放,导致用户信息显示新的请求全部超时响应。
临时解决方案
  • 先移除关系认证数据源,保证用户信息显示配置服务正常
问题跟进处理
  • PC端请求过多问题需要优化
  • 关系认证服务挂死问题需要排查
  • 表单模板服务减少并发线程数,对数据源参数进行预检,对缓存穿透进行拦截
后期优化方案
  • 架构调整:表单模板服务数据源声明、数据获取分离
  • 提供根据数据源声明获取数据的SDK(服务端、Android、iOS、JS),各业务使用SDK获取数据,从而防止出现Single Point of Failure(SPoF)
  • 同时使用第二点提供的SDK实现一个有限并发的服务端,给一些并发量低的组件使用,减少开发量
21:43分补充
  • 压力部分可能来自自动建群(7.1上线)。

IM问题分析及解决方案

今天过来看了下代码,pc客户端代码实现上面。

代码走查结果:
  1. 好友列表、群成员列表、群成员聊天的没有批量请求,只是单个请求(这个下周版本做成批量请求,客户端需要优化)。最近联系人、组织树、查找等模板都有批量请求。
  2. 如果服务端返回错误,客户端不会重复去尝试。
对服务端压力描述:
  1. 对关系服务有压力的点:就是好友列表模板(这个包含了关系信息)请求可以做成获取批量的。但是即使没有批量也不会有非常大的压力。
    因为只有登录成功的情况下,会根据这个登陆账号的好友数量来发单挑请求信息,这个其实只有一次,并且好友人数一般不会太多。
  2. 请求B06群模板会对信息配置服务造成压力。但是从服务端设计上面看,是以模板+群id作为标识的;所以这个压力最终还是很大。
结论:

昨天仙钟发的文档上面的 这块,说PC端会失败后重复请求的结论,和我理解的不一致。原因如下:

  1. 不是重复请求,从截图上面看是同一个人同一时间,对不同的人去进行B06模板请求(这个截图信息上只体现了suid表示的是请求者);
  2. 请求的是群B06的模板,而B06模板上面是没有好友关系配置的。从设计上对关系服务端不会有压力,会对信息配置服务有压力。
pc客户端改进:
  1. 将好友列表、群成员列表、群成员聊天的做成批量请求。
  2. 不再按照服务端设计的群模板+群号来请求以及对照客户端的缓存数据,要做降级处理。群信息模板在客户端数据结构上面去掉群号key。(按照目前的需求实现上,群模板只有vip,和群号无关)

关系认证服务端问题分析及解决方案

问题描述:

昨天出现服务器无响应的情况经过排查,是由于关系认证服务端数据库链接耗尽。无法处理新的数据库相关的请求。
下图为连接耗尽时的情况(此时关系认证服务端无法处理新的请求):

Paste_Image.png
Paste_Image.png
过程分析:

在9点04分开始 请求量开始增大,最多增加到每秒接近40个请求,到9点34分 数据库连接池达到最大3000个。连接池耗尽。无法及时处理新的请求,造成请求阻塞和超时。
通过分析nginx日志和服务端的错误日志发现有如下问题。

  1. 有较多的无效请求到关系认证服务端:这个问题需要业务方排查一下。


    Paste_Image.png
  2. 请求量同周四和周五来看有明显的增加,在平均在一秒内收到的请求数峰值增加2-4倍。


    Paste_Image.png
  3. 获取关系的接口业务逻辑较复杂,流程较长(响应时间在请求量大时会有明显的增加)在代码走查中会进行详细描述。
代码走查:

对关系认证接口实现逻辑进行走查结果如下:

  1. 获取关系显示的流程(下图)


    Paste_Image.png
  2. 代码中没有对关键信息部分进行缓存处理,每次请求均直接穿透到数据库,导致数据库压力 较大。
  3. 业务流程较长,耗用的数据库资源较多。
整改初步方案

1、优化关系认证的业务逻辑,减少数据库查询。
2、关系认证增加关系信息的缓存,减少数据库访问,增加吞吐量。
3、用户信息话配置优化处理逻辑,避免因为某个数据源出现问题导致整个服务出现问题。

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

推荐阅读更多精彩内容