首页 南方天气预报正文

图,记载一次因为kafka接纳模型的数据线程使用不当引发的血案-雷火竞技竞猜平台

admin 南方天气预报 2019-11-02 292 0

最近给第三方做了一个接口,接口的作用是接纳数据对数据进行验证之后经过kafka推送到模型进行数据处理,终究经过kafka接纳模型的数据,开端只做了一个异步的接口,由于对方事务原因需求一个同步的接口传输数据,可是每逢运转一段时刻之后程序就会进入假死状况,接口无法正常调用;

同步接口

同步接口的实现是运用堵塞Map,当对方发送恳求时,对数据进行验证,然后推送到模型,等候成果回来之后将处理好的数据推送到对方接口,此刻这次恳求给调用方回来相应信息;

思路

开端认为是由于用户量过大导致内存不足引发的程序假死,运用JMeter进行压力测验异步接口模仿10000个恳求一起调用接口,程序如丝滑般运转,没有一点点问题,一切恳求都正常回来(这儿由于在家里经过VPN衔接的公司开发服务器,网络不稳定,所以就拿少数测验用例为例);

然后开端置疑是不是同步接口出了问题,刚开端模仿少数恳求,由于其时是在开发环境进行测验,模型并没有放上去,所以没有回来信息,一向在等候模型的回来成果,也是没有问题的,这时分调用异步接口也没有任何问题;

考虑:一切资源都是堵塞状况,由于没有处理成果,一向没有开释进程,当数据过大时会不会形成服务器资源耗尽,导致程序假死?

当再次加大同步接口的调用次数的时分,再去测验恳求异步接口,发现异步接口也没有了回来信息,这时遍确认了问题所在;

线程悉数在堵塞状况,当太多资源没有开释掉时,服务器资源耗尽,导致程序无法正常运转;

处理

找到问题之后便是要处理问题,去掉同步接口是不可能的,所以要给堵塞的线程设置一个超时时刻,当长时刻没有比及模型的处理数据时,自动抛弃监听,开释掉占用的资源,然后确保服务器资源足够;

考虑

尽管问题处理了,可是模型的数据产出最长达10秒钟,当并发量过大时仍是会呈现这种问题,在不动模型的情况下怎么处理这种问题?怎么一向确保服务器资源足够?

重视私信回复:555收取Java高档架构材料

雷火电竞版权声明

本文仅代表作者观点,不代表本站立场。
本文系作者授权发表,未经许可,不得转载。

最近发表

    雷火竞技竞猜平台_csgo雷火电竞_雷火竞猜

    http://colossusescape.com/

    |

    Powered By

    使用手机软件扫描微信二维码

    关注我们可获取更多热点资讯

    雷火电竞出品