首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

国民级应用:微信是如何防止崩溃

导读 | 微信作为月活过10亿国民级应用,经常面临特殊节点消息量暴增问题,服务很容易出现过载。但微信服务一直比较稳定,是如何做到呢?...秒杀、抢购、突发大事件、节日甚至恶意攻击等,都会造成服务承受平时数倍压力。微博经常出现某明星官宣结婚或者离婚导致服务器崩溃场景,这就是服务过载。 3)过载保护好处 提升用户体验、保障服务质量。...如果判断平均等待时间小于 20ms,则以一定速率提升通过率。一般采用快降慢升策略,防止服务波动。整个策略相当于一个负反馈电路。...首先用户优先级也不应该相同,对于普通人来说通过 hash 用户唯一 ID,计算用户优先级,为了防止出现总是打豆豆现象,hash 函数每小时更换,跟业务优先级一样,单个用户访问链条上优先级总是一致...微信分了几十个业务优先级,每个业务优先级下有 128 个用户优先级,所以总优先级是几千个。 如何根据负载情况调整优先级呢?

2.5K71

月活 12.8 亿微信是如何防止崩溃

互联网天生就会有突发流量,秒杀,抢购,突发大事件,节日,甚至恶意攻击等,都会造成服务承受平时数倍压力,微博经常出现某明星官宣结婚或者离婚导致服务器崩溃场景,这就是服务过载。...3.过载保护好处 主要是为了提升用户体验,保障服务质量,在发生突发流量时仍然能够提供一部分服务能力,而不是整个系统瘫痪,系统瘫痪就意味着用户流失,口碑变差,夫妻吵架,甚至威胁生命安全(假如腾讯文档崩溃...四、如何判断过载 通常判断过载可以使用吞吐量,延迟,CPU 使用率,丢包率,待处理请求数,请求处理事件等等。微信使用在请求在队列中平均等待时间作为判断标准,就是从请求到达,到开始处理时间。...当平均等待时间大于 20ms 时,以一定降速因子过滤调部分请求,如果判断平均等待时间小于 20ms,则以一定速率提升通过率,一般采用快降慢升策略,防止服务波动,整个策略相当于一个负反馈电路。...如何根据负载情况调整优先级呢?

1.4K50
您找到你想要的搜索结果了吗?
是的
没有找到

“双十一”、“双十二”大促期间,如何防止网站崩溃

“双十一”、“双十二”期间是所有电商行业流量高峰期,作为一个电商网站,如果不能保障流畅运行,将会对企业造成巨大经济损失。...在这样购物狂欢下,你网站是否已经做好了应对“双十一”、“双十二”流量高峰呢?...1.jpg 1、提高服务器带宽和网络设备性能 首先,确保服务器带宽和网络设备不要成为瓶颈,可以通过以往数据预判大概流量,确保充足网络带宽足够支撑,硬件设备时候要尽量选用知名度高、 口碑好产品,...2.jpg 2、CDN加速 CDN最主要作用就是通过将网站内容分发至全网加速节点,最终用户可以就近获取所需内容,提高终端用户访问网站响应速度和可用性,可以使各地用户快速访问到你网站,完成平台上交易...可以通过 WebP 使图片质量和 JPEG 格式质量相同情况下,减少图片文件体积,以减少互联网上图片发送时间和流量消耗,减少用户等待图片加载时间,大大地提升用户购物体验。

5.1K00

配置 legacyUnhandledExceptionPolicy 防止后台线程抛出异常让程序崩溃退出

如果你程序抛了异常,你是怎么处理呢?等待程序崩溃退出?还是进行补救? 如果是做 UI 开发,很容易就找到 Dispatcher.UnhandledException 事件,然后在事件中进行补救。...于是在异常发生之后,微软 Windows 会假设开发者并不知道如何应对以便让应用程序正常工作,就擅自将应用程序进程结束掉,以便防止应用程序自己内部产生奇怪状态和错误,避免对系统环境造成不可逆严重后果...能够写出异常处理代码开发者,微软会默认他们懂了异常处理。 写出了监听 Dispatcher.UnhandledException 事件开发者,微软会认为他们已经学会了如何在 UI 线程中处理异常。...比如 WPF 触摸模块发生了异常,开发者知道如何恢复吗?并不知道,还不如结束掉程序然后重启呢!...也就是说,程序并不会因为这次异常而崩溃退出。

29720

配置 legacyUnhandledExceptionPolicy 防止后台线程抛出异常让程序崩溃退出

配置 legacyUnhandledExceptionPolicy 防止后台线程抛出异常让程序崩溃退出 发布于 2017-10-16 12:52...更新于 2017-10-26 10:51 legacyUnhandledExceptionPolicy 可以防止程序在后台线程抛出异常后崩溃退出...于是在异常发生之后,微软 Windows 会假设开发者并不知道如何应对以便让应用程序正常工作,就擅自将应用程序进程结束掉,以便防止应用程序自己内部产生奇怪状态和错误,避免对系统环境造成不可逆严重后果...比如 WPF 触摸模块发生了异常,开发者知道如何恢复吗?并不知道,还不如结束掉程序然后重启呢!...也就是说,程序并不会因为这次异常而崩溃退出。

2.9K10

微信团队分享:iOS版微信是如何防止特殊字符导致炸群、APP崩溃

因此客户端要加上安全模式机制。 当客户端检测出连续三次crash,下次启动会出现安全模式界面,提示用户如何处理: ? 对于频繁闪退群聊,主界面提供快捷入口方便用户退群。...附录:有关微信、QQ文章汇总 [1] QQ、微信团队原创技术文章: 《微信团队分享:iOS版微信是如何防止特殊字符导致炸群、APP崩溃?》...来龙去脉》 《QQ 18年:解密8亿月活QQ后台服务接口隔离技术》 《月活8.89亿超级IM微信是如何进行Android端兼容测试》 《以手机QQ为例探讨移动端IM中“轻应用”》 《一篇文章...《微信客户端团队负责人技术访谈:如何着手客户端性能监控和优化》 《微信后台基于时间序海量数据冷热分级架构设计实践》 《微信团队原创分享:Android版微信臃肿之困与模块化实践之路》 《微信后台团队...(二):如何大幅压缩移动网络下APP流量消耗(下篇)》  《腾讯原创分享(二):如何大幅压缩移动网络下APP流量消耗(上篇)》  《微信Mars:微信内部正在使用网络层封装库,即将开源》

2.7K12

如何防止请求URL被篡改

Web项目聚集地 图文教程,技术交流 如图,是我们模拟一个从浏览器发送给服务器端转账请求。久一ID是 web_resource,正在操作100元转账。 ?...这就是本文要讲解内容。 ? 防止url被篡改方式有很多种,本文就讲述最简单一种,通过 secret 加密验证。...所以通用做法是,把所有需要防止篡改参数按照字母正序排序,然后顺序拼接到一起,再和secret组合加密得到 sign。具体做法可以参照如下。...,包括secret 有的同学担心,那么他万一猜到了我加密算法怎么办,这个不用担心,你secret是保持在服务器端,不会暴漏出去,所以他知道了算法也不会知道具体加密内容。...不会,因为我们按照上面的做法同样对 timestamp 做了加密防止篡改。 ? 最简单校验接口被篡改方式,你学会了吗?

2.9K20

逆转时间,起死回生——程序报错崩溃后,如何倒回到崩溃位置?

然后读取字典中name对应值。一直读到Redis 列表为空。 我们运行一下看看: ? 报错了,说明Redis 中某一条数据有问题。...你想看看这条有问题数据,但是现在程序已经崩溃了,进程结束了,这条有问题数据也就永久丢失了。你再也不可能知道它长什么样了。...但是,如果你是使用如下命令:python3 -i xxx.py启动程序,那么世界就不一样了,你程序获得了起死回生能力。你可以重新回到事故现场。...但现在写文章示例数据,我还是可以回复^_^) 然后使用python3 -i read_name.py重新运行这个程序: ? 可以看到,现在虽然程序崩溃了,但是却出现了 Python 交互环境。...总结 pdb是Python自带调试工具。我们使用PyCharm调试功能,也是基于pdb实现

74550

如何优化Golang中重复错误处理

Golang 错误处理最让人头疼问题就是代码里充斥着「if err != nil」,它们破坏了代码可读性,本文收集了几个例子,让大家明白如何优化此类问题。...,从而在视觉上保证让人可以直观看出代码本来意图是什么。...实际上真正源头是它们参数 io.Writer,因为直接调用 io.Writer Writer 方法的话,方法签名中有返回值 error,所以每一步 fmt.Fprint 和 io.Copy 操作都不得不进行重复错误处理...通过对以上几个例子分析,我们可以得出优化重复错误处理大概套路:通过创建新类型来封装原本干脏活累活旧类型,同时在新类型中封装 error,新旧类型方法签名可以保持兼容,也可以不兼容,这个不是关键...来完成错误处理

2.1K20

教你如何查看Pod崩溃日志

:将pod日志存放在/var/log/pods/podname,并且是链接文件,链接到docker容器日志文件,同时kubelet还会保留上一个容器,同时有一个链接文件链接到pod上一个崩溃容器日志文件...,一个是当前pod里在跑容器,一个是pod上次跑容器,现在已经退出了。...,使用–previous时候,读是上次退出容器日志文件,由于kubelet为pod保留了上次退出容器。...验证:我们手动编辑这两个文件内容,看kubelet是否读是这两个文件。.../var/log/pods/下日志文件,–previous读也是/var/log/pods/下日志文件,且专门有个链接文件来指向上一个退出容器日志文件,以此来获取容器崩溃日志

67330

如何防止自己电脑成为肉鸡?

其中NETBIOS是很多安全缺陷根源,对于不需要提供文件和打印共享主机,还可以将绑定在TCP/IP协议NETBIOS关闭,避免针对NETBIOS攻击。...2.关闭“文件和打印共享”   文件和打印共享应该是一个非常有用功能,但在不需要它时候,也是黑客入侵很好安全漏洞。所以在没有必要“文件和打印共享”情况下,我们可以将它关闭。...用鼠标右击“网络邻居”,选择“属性”,然后单击“文件和打印共享”按钮,将弹出“文件和打印共享”对话框中两个复选框中钩去掉即可。   ...另外,将Administrator账号改名可以防止黑客知道自己管理员账号,这会在很大程度上保证计算机安全。...最后建议大家给自己系统打上补丁,微软那些没完没了补丁还是很有用

2.4K30

如何防止 jar 被反编译?

转换成本地代码 4、代码混淆 5、混淆技术介绍 ---- 面试官:如何防止 Java 源码被反编译?我竟然答不上来。。...java作为解释型语言,其高度抽象特性意味其很容易被反编译,容易被反编译,自然有防止反编译措施存在。今天就拜读了一篇相关文章,受益匪浅,知彼知己嘛!!...通常,这些方法不能够绝对防止程序被反编译,而是加大反编译难度而已,因为这些方法都有自己使用环境和弱点。 1....因此,多数混淆工具对于符号混淆,都提供了丰富选项,让用户选择是否、如何进行符号混淆。 数据混淆 图5 改变数据访问 数据混淆是对程序使用数据进行混淆。...由于它所带题库是该软件核心部分,所以关于题库存取和访问就成为非常核心类。一旦这些相关类被反编译,则所有的题库将被破解。现在,我们来考虑如何保护这些题库及相关类。

1.2K30

如何防止云计算迁移回旋效应

可用性关注点 由于与建立一致分布式数据存储成本相关,大多数云计算提供商专注于可用性或最终一致模型。...可用性关注点意味着当初始写入发生时,在后台通过复制或完成数据擦除编码来将延迟应答延迟到满足数据保护要求。这取决于其他节点位置,一致时间范围可以从几秒到几分钟。...节点之间联网、节点中存储介质以及节点本身处理能力不需要在一致性关注分布式存储系统能力范围内执行。 此外,可用性关注点是数据分发理想选择。...这个机会并不是网络附属存储(NAS)上所有数据都需要一致体系结构功能,实际上,网络附属存储(NAS)上大部分数据在专注于可用性体系结构上。...第一步是确定一致性不成问题数据集,一个主要例子是非活动或休眠非结构化数据集。典型使用网络附属存储(NAS)容量80%以上是非活动数据。

85450

如何简单防止网站被CC攻击

request攻击,造成对方服务器资源耗尽,一直到宕机崩溃。...那么我们就谈谈本站是如何防御这场CC 攻击流量图 image.png 攻击时常有十几分钟,CDN全部扛下来了但是部分流量回源到服务器! 攻击源在广东,分析部分日志得出是一共2台服务器进行发包....ngx_http_referer_module模块使用 referer模块是防止referer头字段中没有请求来源则丢弃该请求 location ~* /handsome/usr/\....链接则之家返回404; 防止数据库耗尽资源 本站之所以能再二十多万链接中存活下来是用了nosql; 在CC发起到结束可以正常访问,无任何延迟; 如果资源允许情况下可以用redis或者memcache...image.png 本站采用了redis防止读库导致资源耗尽!

2.4K30

​Go错误处理如何优雅地处理错误

欢迎回到我们Go专栏!我们知道Go语言处理错误方式与其他许多主流语言有所不同。Go强调明确处理错误,而不是使用像其他语言中异常处理机制。...在本文中,我们将深入讨论Go中错误处理,这将使您代码更加健壮,可维护和易于理解。 1. error 类型 在Go中,错误通过内置error类型表示。...error是一个接口,它有一个Error()方法返回错误描述: type error interface { Error() string } 这意味着任何具有Error()方法类型都可以满足...创建和返回错误 您可以使用errors包中New函数创建一个简单错误,该函数接受一个字符串作为参数,返回一个新错误。...,我们可以检查这个错误并据此做出相应处理。

17730

关于PHP漏洞以及如何防止PHP漏洞

这些漏洞不仅仅是针对PHP语言,本文只是简单介绍PHP如何有效防止这些漏洞。...函数是htmlspecialchars() 最简单filter_sql函数是mysql_real_escape_string() 当然,谁都知道这种过滤filter_sql(详细防止sql注入)只能过滤字符型和搜索型注入...3.上传漏洞 对于上传漏洞,也是重点关注地方,要仔细分析它处理流程,针对上传绕过方式是很多,最保险方式:在保存文件是采用文件名随机命名和后缀白名单方式。...这样例子是很常见,给某银行做评估是就经常发现这种漏洞。 5. 信息泄露 信息泄露算是比较低危漏洞了,比如列目录这种就属于部署问题,而与代码审计无关了,而像暴路径、暴源码这种是需要防止。...(phpddt.com)就有一篇文章:关于PHP防止漏洞策略 ,介绍了register_globals 危害以及魔术引用Magic Quotes使用说明。

1.8K110

如何防止UI出现了假死吗?

如果应用程序在UI线程上执行非UI线程耗时处理时,会使应用程序界面的运行显得缓慢而迟钝,有时会出现应用程序“UI界面假死”现象,这也会引起用户不满。  ....NET多线程技术将耗时操作从UI线程中分离到另外一个工作线程中,可以有效提高应用程序响应能力,而采用异步委托调用方法实现多线程管理可以使得程序结构清晰,编程简单。...众所周知,普通方法运行,是单线程,如果中途有大型操作(如:读取大文件,大批量操作数据库,网络传输等),都会导致方法阻塞,表现在界面上就是,程序卡或者死掉,界面元素不动了,不响应了。...异步方法很好解决了这些问题,异步执行某个方法,程序立即开辟一个新线程去运行你方法,主线程包括界面就不会死掉了。 代码下载

69500

如何防止他人恶意调试你web程序

1前言 看到社区很多都在讨论如何调试,如何高级调试,以及一些调试奇技淫巧,今天我想和大家聊聊,怎么禁止调试,禁止他人调试我们程序 为什么会有这篇文章呢,源自一次我寻找盗版电影遭遇,一次好奇心驱使下...当时好奇想通过看某站控制台,想了解一下他们是怎么是通过啥接口,怎么请求,请求来格式啥样,抱着这样好奇心,开始了我奇妙之旅......看完本篇文章你将学会 我无法断定你能学到什么,但是以下是我希望你能从本篇文章中学到: 如何简单防止程序被他人恶意调试 逆向思维学会如何更好调试 2具体实现 防止调试方法,这里我们主要是通过不断...第一次遇到这种情况我也是很懵,不知道咋处理,后面发现问题简直不要太简单,我们可以带着疑问来看: 对于第一个示例,我们如何解决?...)); }, 50); } try { block(); } catch (err) {} })(); 3推荐一个调试页面的小技巧 说了那么多防止被人调试

94110
领券