昨天(2020年7月15日)中午十一点左右,大量网友反应自己的 QQ 号被冻结,这个问题一度冲上知乎和微博热搜第一,很多人表示自己的生活受到了影响。具体的事态发展各位吃瓜群众可以自行了解,这里打算从技术角度分析一下这次故障的原因。先给结论:这应该是一次第三方依赖库升级引发的。这个第三方依赖库是恰好是我本人在 github 上开源的,一个名为 `epic` 的项目(地址在这里:https://github.com/tiann/epic);`epic` 是一个在虚拟机层面、以 Java Method 为粒度的 运行时 AOP Hook 框架。它可以拦截本进程内部几乎任意的 Java 方法调用,可用于实现 AOP 编程、运行时插桩、性能分析、安全审计等。我开发这个库的初衷是做性能分析,更具体点,是为了监控 App 内部线程的调度情况。当时我正在支付宝做 Android 端 App 的性能优化,因为研发团队很大,内部又没有一个完全统一的基础设施,代码里面很多四处散落的线程(池)、广播,Service等;可能一个线程或者广播并不消耗什么性能,但是量变产生质变,支付宝启动之后峰值会有三百多个子线程
微信的机会其实是QQ团队自己给(cuo)的(guo),。其实腾讯要大大感谢张小龙,如果错过了这次机会,也许今天腾讯就一钱不值了,内部优化总好过外部革命。腾讯当年的QQ和手Q不是一个团队,手Q在无线,QQ在即通,后台都在即通。手Q当年活的其实很滋润,也许就是太滋润了让他忽视了发展。无线当年错误的把重点方向定在了山寨机方向(不是安卓呀,是MTK机器那个方向),而且团队分在若干个地点(当然包括其他产品),深圳,北京,成都,武汉,上海都有啊。内部合作其实一般,只是大发展让很多问题掩盖了。当然其实山寨机是未来这个论点在2010年前也成立,当时安卓还没有这个气候,做个应用是个很苦B的事情,各种分辨率,各种机型。豪门应用屈指可数,手Q才是那个无论什么机器都愿意预装的产品。当年的手Q其实不是一个通信产品,而是一个portal (见过的人都知道了),他是新闻,WAP,游戏,APP市场……各种东西都塞了进来。那个年头是无线大发展的年头,无线顺风顺水,产品众多,却没有发现危机其实就在不远处。而诞生微信的广研和张小龙,在腾讯的版图上,主要产品是QQ信箱,虽然也是明星级别的产品,但只能算偏安一隅的小诸侯。而当时