erl_0015 《硝烟中的erlang》 读书笔记002 “为过载做计划”

为过载做计划

到目前为止,我在实际工作中所碰到最常见的错误,基本上都是节点内存耗尽。而且通常都和过长的消息队列有关37。解决这类问题的方法有很多,不过只有在深入、全面的理解系统后,才能做出正确的选择。    基本上,我从事的所有项目都可以简化类比成一个非常大的浴室水槽。用户请求和数据从龙头流入。Erlang系统则是水槽和管道,可以把水流出的地方(数据库,外部API或者服务,等等)看作是下水道系统。

  当Erlang节点由于队列溢出而死亡时,找到原因所在是至关重要的。是流入槽中的水太多了吗?是下水道堵塞了吗?还是把管道设计得太细了? 要找到膨大的队列并不是件难事,这个信息可以从crash dump中获得。知道队列膨大的原因则要困难得多。根据进程的角色,或者做些运行时的检查,就可以找出一些可能的原因:消息泛滥,进程阻塞无法快速处理消息,等等。

  决定如何修复是最困难的部分。由于对水的滥用导致水槽积水时,我们可以换一个大一些的水槽(程序中崩溃的部分,处于边缘)。接着,发现水槽出水口太小,优化它。再接着发现管道太细,优化它。负载一直被推向系统的下游,直到下水道无法承受。此时,我们可能会试着增加水槽或者增加浴室来缓解这个全局性的输入问题38。

  不过,事情总会发展到无法在浴室层面解决的地步。发出的日志过多,要保持一致性的数据库成为了瓶颈,或者只是因为公司没有解决问题所需的知识或者人力。

  只有到了此时,我们才找到了系统的真正瓶颈所在,前面所做的优化虽然都不错(并且成本也不低),不过可能没啥用。    我们需要更聪明一些,退后一步,在上游解决问题。可以对进入系统的信息做些处理,让它更轻量一些(可以通过压缩,用更好的算法和数据表示,缓存等等)。 即使这样,还是会出现系统负载过大的情况,此时我们不得不在限制系统输入,丢弃输入,或者接受系统在崩溃前会持续降低服务质量之间做出艰难的选择。这些机制隶属于两种大的策略:反压(back-pressure)和减载(load-shedding)

时间: 2024-10-20 21:14:13

erl_0015 《硝烟中的erlang》 读书笔记002 “为过载做计划”的相关文章

读书笔记:《一生的计划》

读书笔记:<一生的计划> 2012年读的第一本书,读此书的初衷是想制定一个切实可行的2012年计划,从网上查来查去就发现这本书了,本书不长,80多页,打印下来后很快就读完了. 书的作者是一个虔诚的基督徒,书中充满了<圣经>中的语句,读完后最大的感悟就是“平衡”,一开始没看到英文版,就想到了可能是"Balance” 吧,人生要在精神.理财.教育和娱乐4个方面的平衡,以前见过各种各样的分类方式,对我来说可能划分为工作.学习(个人修炼).健康.生活(关爱家人). 朋友和娱乐等几

erl_0018《硝烟中的erlang》 读书笔记005 “进程信息&quot;

对一个运行中的Erlang系统来说,进程绝对是重要的组成部分.正因为进程是所有运行实体的基础,因此会想去了解它们的更多信息.幸运的是,VM提供了大量的可用信息,其中有些可以安全使用,有些在生产环境中使用是不安全的(因为会返回非常大的数据集合,拷贝到shell以及打印所需的内存量会造成节点崩溃). 进程的所有信息都可以通过调用process_info(Pid, Key)或者process_info(Pid, [keys])86得到. 下面是一些常用的键值:

硝烟中的Erlang -- Erlang生产系统问题诊断、调试、解决指南

英文原名:Stuff Goes Bad: Erlang In Anger 英文作者:FRED HEBERT 下载地址:http://vdisk.weibo.com/s/iGQ-rFuJU0-4 译者序 在我近20年的软件开发工作中,除了Erlang,还使用过许多其他编程语言.有工作需要的C/C++.Java,也有作为业余爱好使用的Lisp.Haskell.Scala等,其中我最喜欢的当属Erlang.除了因为我的电信软件开发背景外,还有一个很重要的原因是Erlang独特的设计哲学和解决问题方式.

oracle中sql优化读书笔记1-优化器

我们写一条sql语句给Oracle,Oracle是需要将他解析之后才去执行的,也就是要明确先干啥后干啥.这就是所谓的执行计划. 优化器就是用来得出最后的执行计划的工具,Oracle的优化器有两种一种是基于规则的,一种是基于成本的. 1.基于规则的,就是明确了步骤,比如说必须是先把where 条件中最后一个条件用于过滤,再在此基础上用倒数第二个条件过滤. 2.基于成本的,就是先收集一下当前的数据量有多大,各种条件的数据量有多大(这就得有Oracle的统计的东西做支持了),通过判断找出来过滤出最少的

【excel技巧读书笔记002】批注插入图片表格

               今天看到学到一个excel小技巧,批注插入图片表格,觉得挺好分享给大家.

《解释的工具:生活中的经济学原理》读书笔记3

一.第四章 在这一章里,作者站在经济增长与经济循环往复的角度去探讨社会中的经济现象.人类自古是从农业经济逐渐转化为工商业经济的,可是农业经济是一个有序的循环,工商业经济也是一个有序的循环,到底是什么因素使得经济能够打破原本的循环而迈向新的循环呢?换个角度来看同一类问题,经济本身是有发展有衰退的,发展和衰退构成了一个国家经济的循环,但是是什么力量能够使得经济封闭的循环被打破转而变成经济增长呢?对于当前需要突破瓶颈继续发展的我们这个社会来说,这的确是一个既重要又紧急的问题啊!在这一章里,作者先阐明财

Hadoop读书笔记(十四)MapReduce中TopK算法(Top100算法)

Hadoop读书笔记系列文章:http://blog.csdn.net/caicongyang/article/category/2166855 (系列文章会逐步修整完成,添加数据文件格式预计相关注释) 1.说明: 从给定的文件中的找到最大的100个值,给定的数据文件格式如下: 533 16565 17800 2929 11374 9826 6852 20679 18224 21222 8227 5336 912 29525 3382 2100 10673 12284 31634 27405 1

Hadoop读书笔记(十一)MapReduce中的partition分组

Hadoop读书笔记系列文章:http://blog.csdn.net/caicongyang/article/category/2166855 1.partition分组 partition是指定分组算法,以及通过setNumReduceTasks设定Reduce的任务个数 2.代码 KpiApp.ava package cmd; import java.io.DataInput; import java.io.DataOutput; import java.io.IOException; i

3D数学读书笔记——3D中的方位与角位移

本系列文章由birdlove1987编写,转载请注明出处. 文章链接: http://blog.csdn.net/zhurui_idea/article/details/25339595 方位和角位移的基本概念 什么是方位.角位移? 直观的说,我们知道,物体的"方位"主要描写叙述物体的朝向,然而,"方向"和"方位"并不全然一样.向量有"方向"但没有"方位",差别在于,当一个向量指向特定方向时,能够让向量自转