ITPub博客

首页 > 大数据 > 数据挖掘 > 服务器无法登录显示无法加载用户,关于20170701出现IM列表无法加载用户信息的问题..

服务器无法登录显示无法加载用户,关于20170701出现IM列表无法加载用户信息的问题..

数据挖掘 作者:TG_pk888000 时间:2024-06-19 16:34:46 0 删除 编辑

表现问题说明


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


简要说明


详细过程


临时解决方案


问题跟进处理


后期优化方案


21:43分补充


IM问题解析


代码走查结果:


对服务端压力描述:


结论:


pc客户端改进:


关系认证服务端问题分析


问题描述:


过程分析:


代码走查:


整改初步方案


表现问题说明


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


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


简要说明


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


详细过程


表单模板服务在早上9点36分时出现假死,见下图:


5a192671a864


图1


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


5a192671a864


图2


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


5a192671a864


图3


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


5a192671a864


图4


表单模板服务在请求关系认证超时的情况下,也产生了超时情况,目前确认是在请求关系认证时,关系认证超时后,表单请求端口占满却没有及时释放,导致用户信息显示新的请求全部超时响应。


临时解决方案


先移除关系认证数据源,保证用户信息显示配置服务正常


问题跟进处理


PC端请求过多问题需要优化


关系认证服务挂死问题需要排查


表单模板服务减少并发线程数,对数据源参数进行预检,对缓存穿透进行拦截


后期优化方案


架构调整:表单模板服务数据源声明、数据获取分离


提供根据数据源声明获取数据的SDK(服务端、Android、iOS、JS),各业务使用SDK获取数据,从而防止出现Single Point of Failure(SPoF)


同时使用第二点提供的SDK实现一个有限并发的服务端,给一些并发量低的组件使用,减少开发量


21:43分补充


压力部分可能来自自动建群(7.1上线)。


IM问题分析及解决方案


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


代码走查结果:


好友列表、群成员列表、群成员聊天的没有批量请求,只是单个请求(这个下周版本做成批量请求,客户端需要优化)。最近联系人、组织树、查找等模板都有批量请求。


如果服务端返回错误,客户端不会重复去尝试。


对服务端压力描述:


对关系服务有压力的点:就是好友列表模板(这个包含了关系信息)请求可以做成获取批量的。但是即使没有批量也不会有非常大的压力。


因为只有登录成功的情况下,会根据这个登陆账号的好友数量来发单挑请求信息,这个其实只有一次,并且好友人数一般不会太多。


请求B06群模板会对信息配置服务造成压力。但是从服务端设计上面看,是以模板+群id作为标识的;所以这个压力最终还是很大。


结论:


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


不是重复请求,从截图上面看是同一个人同一时间,对不同的人去进行B06模板请求(这个截图信息上只体现了suid表示的是请求者);


请求的是群B06的模板,而B06模板上面是没有好友关系配置的。从设计上对关系服务端不会有压力,会对信息配置服务有压力。


pc客户端改进:


将好友列表、群成员列表、群成员聊天的做成批量请求。


不再按照服务端设计的群模板+群号来请求以及对照客户端的缓存数据,要做降级处理。群信息模板在客户端数据结构上面去掉群号key。(按照目前的需求实现上,群模板只有vip,和群号无关)


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


问题描述:


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


下图为连接耗尽时的情况(此时关系认证服务端无法处理新的请求):


5a192671a864


Paste_Image.png


5a192671a864


Paste_Image.png


过程分析:


在9点04分开始 请求量开始增大,最多增加到每秒接近40个请求,到9点34分 数据库连接池达到最大3000个。连接池耗尽。无法及时处理新的请求,造成请求阻塞和超时。


通过分析nginx日志和服务端的错误日志发现有如下问题。


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


5a192671a864


Paste_Image.png


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


5a192671a864


Paste_Image.png


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


代码走查:


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


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


5a192671a864


Paste_Image.png


代码中没有对关键信息部分进行缓存处理,每次请求均直接穿透到数据库,导致数据库压力 较大。


业务流程较长,耗用的数据库资源较多。


整改初步方案


1、优化关系认证的业务逻辑,减少数据库查询。


2、关系认证增加关系信息的缓存,减少数据库访问,增加吞吐量。


3、用户信息话配置优化处理逻辑,避免因为某个数据源出现问题导致整个服务出现问题


来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/70039178/viewspace-3019405/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论
11

注册时间:2024-06-18

  • 博文量
    17
  • 访问量
    13306