短信问题排查

1.应用背景

       短信使用kafka实现异步发送,kafka消费者配置两台机器共32个线程来发送短信,短信供应商有梦网和大汉三通两家,消费线程接收到短信请求后会在两个供应商之间随机选择一个来进行发送。

2.问题出现

       市场反应短信收不到或短信延迟问题,应用服务器上报错误日志。

       其中,大汉三通报密码错误异常、梦网报Axisfault异常。

3.分析问题

        由于异常是偶发异常,而且短信发送模块一直没有更新,所以初步怀疑是不是因为业务上升,短信并发提高,造成部分短信发送失败。

        有了怀疑之后,找两个短信供应商进行沟通,了解其在大并发条件下的承载能力,其中问题主要集中在以下几个:

        1)你们在大量并发时,会不会将建立的连接释放?

        2)你们有没有进行压力测试,可不可以给我们一个我们可以同时建立连接的阈值?

        3)一个帐号100个线程(当时考虑业务高峰时我们差不多起6台机器100个线程进行短信支持)同时发起短信发送请求是不是会出现问题?

        得到的答复:

        梦网:将原因归于未使用长连接来进行短信的发送,对问题1、3没有正面回答,2问题的回答为没有进行过压力测试。

        大汉三通:承认并发量大的时候确实存在短信的异常问题,重新给了我们一个新的jar包(包升级时为何没有通知到我们未可知),对问题1、2、3都进行了回答,新版本可以支持大并发。

        沟通之后,仍不放心,根据两家供应商的用户手册结合我们使用的情况分析两家服务商后台实现,可以确认,在短链接的时候,梦网使用同步操作处理请求(这种方式如何承受巨大的压力),发送短信之后直接返回结果。

        大汉三通使用异步方式处理请求,结果必须通过报告的方式从额外的接口来获取。

4.解决问题

        当晚将短信发送改成新的jar包方式,单起一台机器只使用大汉三通来处理短信发送请求,同时在,dubbo平台将新加的机器权重调高,问题解决。

你可能感兴趣的:(短信问题排查)