分布式系统如何定位压力问题

监控

简单来说,分布式系统需要实现一个基本的监控工具。最简单的办法是在每个节点上部署一个agent,定时上报该机器的信息。这一块鱼龙混杂。开源的实施起来就比较复杂了。这一块主要分四层:

  • 收集,具体怎么收集数据(比如sar命令、JMX等)
  • 传输,收集到的数据如何传到存储(比如用syslog,fluentd,statsd)
  • 存储+分析,如何存储收集到的数据,并提供查询(比如用mysql,postgres等一般数据库,RRD Tools工具,或者InfluxDB这样的专用时序数据库)
  • 界面展示和报警,数据怎么变成好看的图表,并提供不同维度的查询;如果可以,一些参数超过一定的阈值,就要自动报警(发邮件、发短信、发微信等)。(比如grafana, icinga等)

也有很多All-in-one的收费方案,比如New Relic,听云等。

不同监控的侧重点不同,有的主打通用,于是可以对接一堆其他工具。有的则主打特定领域,比如Java自带的JMC可以监控JVM的GC,线程等情况;Percona Monitoring Plugins可以监控MySql的内部情况等。可以根据需要具体选择。有些云服务提供商也会提供一些最基本的监控,比如阿里云的相关工具。

监控什么呢

当搭建一个集群,要监测三大类数据

  • 机器数据:最主要包括
    • CPU idle,io,load值等
    • 内存的使用和swap
    • 磁盘io KB/s,iops (如果是数据库的的机器特别重要)
    • 网络,总带宽占用,io KB/s, packet/s (如果是服务的机器就特别重要)
  • 框架/服务级别的监控
    • 例如,如果是JVM,Java的堆内存情况;GC,尤其是FullGC的频率和暂停时间;线程数量和状态;如果可以的话,方法执行的耗时排名;
    • 如果是DB,为内存占用,磁盘io,慢查询,链接数的监控
  • 业务级别监控
    • 比如单位时间下单数、Cache命中率等等、Log中500错误数等等。随着业务的变化,这些监控会不断的变化

这是一个浩大的工程。不可能一蹴而就,也不可能一套工具就全搞定。必须结合Infra和业务开发工程师的共同努力才能构建出来。如果预算不是那么紧,建议采购一两套收费的方案来减少这方面的开发资源消耗。毕竟做公司的主要精力是业务本身,而不是开发完备的基础设施。当公司体量大到一定程度,自然就会建立专门的团队来做这些。

构建监控体系时注意 报警不能淹没使用者的接收。铺天盖地的报警只会让人把报警直接关了。所以设计时要考虑报警的频率,级别,ACK等机制。而且可能会反复调整。尽量把“关键问题的报警”提供出来。

实际的压力问题怎么发生的

压力问题主要发生在两个时刻

  • 上线的时候。比如曾经有一个同学做了一个实现,勿用了正则表达式,造成了一上线CPU飙高直接打到100%。这时通过监控工具和报警可以马上识别所有上线的包都有问题,立刻实施紧急回滚。类似的问题还有,比如写代码的SQL没有用好索引造成全表扫描。异步代码写成了同步的,卡死了接收端等等。
  • 用户流量压力突然增加。比如我们的长赢指数投资计划非常受欢迎。一发车就流量(带宽)升高10倍。这个第一次发生时没有应对的策略。事后我们使用K8S,提前准备热备机器来顶住流量。此外,很多压力会集中到DB,因此需要花跟多精力开发Cache(Cache其实是个很难的问题,回头单独讲)

我用的工具

工具太多了,我们粗选了几个就用了,不一定是最好的,但至少目前还是可以解决问题的

  • 收集端就用服务自带的命令即可,比如操作系统的top、sar,redis的info命令等
  • 传输和存储使用influxdb
  • 分析工具使用grafana和icinga
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 212,542评论 6 493
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,596评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 158,021评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,682评论 1 284
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,792评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,985评论 1 291
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,107评论 3 410
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,845评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,299评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,612评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,747评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,441评论 4 333
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,072评论 3 317
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,828评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,069评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,545评论 2 362
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,658评论 2 350

推荐阅读更多精彩内容