Submit Search
Upload
微博在大规模、高负载中的典型问题
•
7 likes
•
801 views
Weibo Corporation
Follow
微博在大规模、高负载中的典型问题
Read less
Read more
Technology
Report
Share
Report
Share
1 of 34
Download now
Download to read offline
Recommended
[LaravelConf Taiwan 2019] 內部微服務,隊友開發更快速
[LaravelConf Taiwan 2019] 內部微服務,隊友開發更快速
LaravelConfTaiwan
Happy Go Programming Part 1
Happy Go Programming Part 1
Lin Yo-An
微博基于Docker的混合云平台设计与实践
微博基于Docker的混合云平台设计与实践
Weibo Corporation
QCon北京2015 sina jpool-微博平台自动化运维实践
QCon北京2015 sina jpool-微博平台自动化运维实践
Weibo Corporation
Getting Started with Go
Getting Started with Go
Steven Francia
Rasmus, Think Again! Agile Framework == Happy Php Developer
Rasmus, Think Again! Agile Framework == Happy Php Developer
Arno Schneider
PMI-TW Volunteer Practice (2009-2012)
PMI-TW Volunteer Practice (2009-2012)
張大明 Ta-Ming Chang
極限編程XP
極限編程XP
Po Chung Wang
Recommended
[LaravelConf Taiwan 2019] 內部微服務,隊友開發更快速
[LaravelConf Taiwan 2019] 內部微服務,隊友開發更快速
LaravelConfTaiwan
Happy Go Programming Part 1
Happy Go Programming Part 1
Lin Yo-An
微博基于Docker的混合云平台设计与实践
微博基于Docker的混合云平台设计与实践
Weibo Corporation
QCon北京2015 sina jpool-微博平台自动化运维实践
QCon北京2015 sina jpool-微博平台自动化运维实践
Weibo Corporation
Getting Started with Go
Getting Started with Go
Steven Francia
Rasmus, Think Again! Agile Framework == Happy Php Developer
Rasmus, Think Again! Agile Framework == Happy Php Developer
Arno Schneider
PMI-TW Volunteer Practice (2009-2012)
PMI-TW Volunteer Practice (2009-2012)
張大明 Ta-Ming Chang
極限編程XP
極限編程XP
Po Chung Wang
Zero downtime-java-deployments-with-docker-and-kubernetes
Zero downtime-java-deployments-with-docker-and-kubernetes
Arjan Schaaf
Wot2015 微博平台护城河-构建高效的防御体系-王关胜
Wot2015 微博平台护城河-构建高效的防御体系-王关胜
Weibo Corporation
How to choose web framework
How to choose web framework
Bo-Yi Wu
基于Python构建可扩展的自动化运维平台
基于Python构建可扩展的自动化运维平台
liuts
Write microservice in golang
Write microservice in golang
Bo-Yi Wu
不断归零的前端人生 - 2016 中国软件开发者大会
不断归零的前端人生 - 2016 中国软件开发者大会
Joseph Chiang
How to successfully grow a code review culture
How to successfully grow a code review culture
Nina Zakharenko
大鱼架构演进
大鱼架构演进
Jun Liu
[系列活動] Machine Learning 機器學習課程
[系列活動] Machine Learning 機器學習課程
台灣資料科學年會
Sublime text 極速應用教學
Sublime text 極速應用教學
Amos Lee
[DSC 2016] 系列活動:李宏毅 / 一天搞懂深度學習
[DSC 2016] 系列活動:李宏毅 / 一天搞懂深度學習
台灣資料科學年會
NoSQL@VIP — 唯品会NoSQL平台⾃动化发展及运维经验分享
NoSQL@VIP — 唯品会NoSQL平台⾃动化发展及运维经验分享
Leo Zhou
淘宝双11双12案例分享
淘宝双11双12案例分享
vanadies10
社交化电子商务 网易科技五道口沙龙第一期
社交化电子商务 网易科技五道口沙龙第一期
网易科技
张松国 腾讯微博架构介绍08
张松国 腾讯微博架构介绍08
drewz lin
新浪微博平台与安全架构
新浪微博平台与安全架构
n716
小米Hadoop&hbase微实践
小米Hadoop&hbase微实践
Liang Xie
Nginx深度開發與客制化
Nginx深度開發與客制化
Joshua Zhu
A brief introduction to Machine Learning
A brief introduction to Machine Learning
Wen-Tien Chang
2014 Hpocon 姚仁捷 唯品会 - data driven ops
2014 Hpocon 姚仁捷 唯品会 - data driven ops
Michael Zhang
mercury
mercury
moonbingbing
No sql@vip new
No sql@vip new
Chao Zhu
More Related Content
Viewers also liked
Zero downtime-java-deployments-with-docker-and-kubernetes
Zero downtime-java-deployments-with-docker-and-kubernetes
Arjan Schaaf
Wot2015 微博平台护城河-构建高效的防御体系-王关胜
Wot2015 微博平台护城河-构建高效的防御体系-王关胜
Weibo Corporation
How to choose web framework
How to choose web framework
Bo-Yi Wu
基于Python构建可扩展的自动化运维平台
基于Python构建可扩展的自动化运维平台
liuts
Write microservice in golang
Write microservice in golang
Bo-Yi Wu
不断归零的前端人生 - 2016 中国软件开发者大会
不断归零的前端人生 - 2016 中国软件开发者大会
Joseph Chiang
How to successfully grow a code review culture
How to successfully grow a code review culture
Nina Zakharenko
大鱼架构演进
大鱼架构演进
Jun Liu
[系列活動] Machine Learning 機器學習課程
[系列活動] Machine Learning 機器學習課程
台灣資料科學年會
Sublime text 極速應用教學
Sublime text 極速應用教學
Amos Lee
[DSC 2016] 系列活動:李宏毅 / 一天搞懂深度學習
[DSC 2016] 系列活動:李宏毅 / 一天搞懂深度學習
台灣資料科學年會
Viewers also liked
(11)
Zero downtime-java-deployments-with-docker-and-kubernetes
Zero downtime-java-deployments-with-docker-and-kubernetes
Wot2015 微博平台护城河-构建高效的防御体系-王关胜
Wot2015 微博平台护城河-构建高效的防御体系-王关胜
How to choose web framework
How to choose web framework
基于Python构建可扩展的自动化运维平台
基于Python构建可扩展的自动化运维平台
Write microservice in golang
Write microservice in golang
不断归零的前端人生 - 2016 中国软件开发者大会
不断归零的前端人生 - 2016 中国软件开发者大会
How to successfully grow a code review culture
How to successfully grow a code review culture
大鱼架构演进
大鱼架构演进
[系列活動] Machine Learning 機器學習課程
[系列活動] Machine Learning 機器學習課程
Sublime text 極速應用教學
Sublime text 極速應用教學
[DSC 2016] 系列活動:李宏毅 / 一天搞懂深度學習
[DSC 2016] 系列活動:李宏毅 / 一天搞懂深度學習
Similar to 微博在大规模、高负载中的典型问题
NoSQL@VIP — 唯品会NoSQL平台⾃动化发展及运维经验分享
NoSQL@VIP — 唯品会NoSQL平台⾃动化发展及运维经验分享
Leo Zhou
淘宝双11双12案例分享
淘宝双11双12案例分享
vanadies10
社交化电子商务 网易科技五道口沙龙第一期
社交化电子商务 网易科技五道口沙龙第一期
网易科技
张松国 腾讯微博架构介绍08
张松国 腾讯微博架构介绍08
drewz lin
新浪微博平台与安全架构
新浪微博平台与安全架构
n716
小米Hadoop&hbase微实践
小米Hadoop&hbase微实践
Liang Xie
Nginx深度開發與客制化
Nginx深度開發與客制化
Joshua Zhu
A brief introduction to Machine Learning
A brief introduction to Machine Learning
Wen-Tien Chang
2014 Hpocon 姚仁捷 唯品会 - data driven ops
2014 Hpocon 姚仁捷 唯品会 - data driven ops
Michael Zhang
mercury
mercury
moonbingbing
No sql@vip new
No sql@vip new
Chao Zhu
手游渠道杂谈
手游渠道杂谈
赵 强
刘昌钰:阿里大数据应用平台
刘昌钰:阿里大数据应用平台
hdhappy001
天涯论坛的技术进化史-Qcon2011
天涯论坛的技术进化史-Qcon2011
Yiwei Ma
vmarket in action
vmarket in action
Appleseedez Zeng
透過網路連線 MySQL 進行查詢會比較快嗎?
透過網路連線 MySQL 進行查詢會比較快嗎?
Cheyin L
1到100000000 - 分布式大型网站的架构设计
1到100000000 - 分布式大型网站的架构设计
RolfZhang
Data Analyse Black Horse - ClickHouse
Data Analyse Black Horse - ClickHouse
Jack Gao
唯品会大数据实践 Sacc pub
唯品会大数据实践 Sacc pub
Chao Zhu
瀏覽器與網頁原理 Principles of Browsers and Webpages
瀏覽器與網頁原理 Principles of Browsers and Webpages
安齊 劉
Similar to 微博在大规模、高负载中的典型问题
(20)
NoSQL@VIP — 唯品会NoSQL平台⾃动化发展及运维经验分享
NoSQL@VIP — 唯品会NoSQL平台⾃动化发展及运维经验分享
淘宝双11双12案例分享
淘宝双11双12案例分享
社交化电子商务 网易科技五道口沙龙第一期
社交化电子商务 网易科技五道口沙龙第一期
张松国 腾讯微博架构介绍08
张松国 腾讯微博架构介绍08
新浪微博平台与安全架构
新浪微博平台与安全架构
小米Hadoop&hbase微实践
小米Hadoop&hbase微实践
Nginx深度開發與客制化
Nginx深度開發與客制化
A brief introduction to Machine Learning
A brief introduction to Machine Learning
2014 Hpocon 姚仁捷 唯品会 - data driven ops
2014 Hpocon 姚仁捷 唯品会 - data driven ops
mercury
mercury
No sql@vip new
No sql@vip new
手游渠道杂谈
手游渠道杂谈
刘昌钰:阿里大数据应用平台
刘昌钰:阿里大数据应用平台
天涯论坛的技术进化史-Qcon2011
天涯论坛的技术进化史-Qcon2011
vmarket in action
vmarket in action
透過網路連線 MySQL 進行查詢會比較快嗎?
透過網路連線 MySQL 進行查詢會比較快嗎?
1到100000000 - 分布式大型网站的架构设计
1到100000000 - 分布式大型网站的架构设计
Data Analyse Black Horse - ClickHouse
Data Analyse Black Horse - ClickHouse
唯品会大数据实践 Sacc pub
唯品会大数据实践 Sacc pub
瀏覽器與網頁原理 Principles of Browsers and Webpages
瀏覽器與網頁原理 Principles of Browsers and Webpages
微博在大规模、高负载中的典型问题
1.
微博在大规模、高负载系统中 的典型问题 新浪微博 平台及⼤大数据部 秦迪 @蛋疼的axb
2.
• 有哪些问题 • 如何排查 •
如何预防
3.
关于微博和微博平台 app后端 web后端 开放平台 微博平台 ⼿手机客户端
weibo.com 第三⽅方应⽤用展现 适配 服务
4.
关于大规模、高负载 • 一些数据 - 8亿注册用户 -
8000万+DAU - 1.75亿MAU • 典型场景 - 固定活动 • 吐槽春晚 • 让红包飞 - 突发事件 • #马航370# • #周一见# • 《我错了》
5.
关于问题 功能问题 • 发不出微博 • 未读数不准 •
500/502/503 • ……
6.
关于问题 性能问题 • 刷微博慢 • 提醒延迟 •
接⼝口响应时间⻓长 • ……
7.
关于问题 功能问题 性能问题
8.
面对极端流量时的问题 • 功能异常导致性能下降 • 性能问题影响功能可⽤用性
9.
案例一:性能问题影响功能可用性 Proxy Web Resource X10 Web Web Server Web Server Proxy Varnish Varnish Resource Storage Server Storage Server Storage Server 响应时间下降 接⼝口⽆无响应 请求量⼤大幅下降 web后端app后端 第三⽅方 平台 业务⽅方 触发rebalance,集群性 能⼤大幅下降 接⼝口响应时间增加 线程数达到上限,卡死
10.
案例二:功能异常导致性能下降 • 背景: - docker@春晚红包 -
应对极端流量,应用docker进行快 速服务调度 • 现象: - SocketTimeout - Connection Refuse • 原因: - nat方式组网时,底层基于iptables - iptables底层基于netfilter内核模块 - Netfilter模块保持65536个链接做 NAT转换 A B C
11.
典型问题的特点 • 出现场景 - 访问量量级增加 -
引入新组件 • 问题表现 - 一般表现为应用崩溃、服务不可 用或系统雪崩等 • 原因排查 - 量变到质变,低负载经验不适用 - 问题往往牵扯多个领域 为什么我不知道?
12.
• 有哪些问题 • 如何排查 •
如何预防
13.
监控 • Dashboard - 基于graphite -
集中展示 - 定量分析 • Trace - 追踪链路,显示请求调用链 - 分析节点异常:平均值、历史数据
14.
日志 • 信息要完整 - 业务日志:包含关键路径与异常 -
性能日志:性能统计与分步耗时 - 容器日志、系统日志也很重要 • gc log、/var/log • 分维度过滤 - 时间:出问题的时间点 - 请求:uid、requestid - 级别:WARN/ERROR • 集中检索 - ELK/agent(jpool) - 平衡效率和成本
15.
查看现场
16.
查看现场 • 快照分析 - 功能:观察程序当前的状态 -
场景:程序当前处于整体异常状态 - 举例:gdb、Xmap、mat、jstack • 调用分析 - 功能:观察调用和调用栈 - 场景:请求出错、请求慢、偶发错误 - 举例:btrace、Xtrace • 聚合分析 - 功能:按某些维度采样、聚合和对比数据 - 场景:查找性能问题 - 举例:perf、Xstat、Xtop
17.
分析原因 • 问题经常隐藏在: - 应用:死锁、内存溢出、依赖资源 -
系统:jvm、kernel、tcp - 硬件:硬件故障、网络 • 联合排查 - 开发 / 运维 / dba / 网络 / 系统 / 硬件
18.
案例:春晚演练时服务出现异常 • 背景 - 演练方案:跨机房迁移用户请求 -
逐渐迁移流量的过程中,web服 务突然僵死,大量返回503 - 接口吞吐量低于理论值2-3倍 nginx(机房1) web rpc1 cache mysql rpc2 web rpc1 cache mysql rpc2 nginx(机房2) web 1:30% 1:35% 1:40% 1:45% QPS$
19.
定位问题 • 监控和日志 - 异常时的现象 •
rpc1服务大量超时,处理队列堵塞 • rpc1服务器CPU idle普遍降低至10% • 后端资源没有波动 rpc接⼝口响应时间 nginx(机房1) rpc1 cache mysql rpc2 web rpc1 cache mysql rpc2
20.
重现问题 • 重现现场 - 直接压测没有重现问题 -
通过tcp copy引流线上流量,问题重现
21.
瓶颈分析 • 瓶颈分析 - 通过perf发现close系统调用消耗了大量cpu
22.
瓶颈分析 • 瓶颈分析 - 通过perf发现close系统调用消耗了大量cpu -
通过jstack发现大量线程卡在nio的closeIntFD上
23.
瓶颈分析 • 瓶颈分析 - 通过perf发现close系统调用消耗了大量cpu -
通过jstack发现大量线程卡在nio的closeIntFD上 - 通过strace发现close系统调用的处理时间很长
24.
瓶颈分析 • 瓶颈分析 - 通过perf发现close系统调用消耗了大量cpu -
通过jstack发现大量线程卡在nio的closeIntFD上 - 通过strace发现close系统调用的处理时间很长 - 通过对比压测发现旧版内核频繁调用close时有性能问 题
25.
解决问题 • 解决方式 - 升级内核 •
确保问题被修复 - 开发环境验证 - 测试环境验证 - 线上环境验证 • 确保没有引入新的问题 - 灰度上线,观察服务状态 • 功能无异常 • 性能未下降 解 决
26.
tips:当心解决问题的陷阱! • 案例:追查性能问题 - 现象:接口突然开始超时 -
原因:访问量突增,大量读取 静态内容缓存,mc出现带宽 瓶颈 - 解决:增加本地缓存 - 结果:压测时性能仍然有问题 web服务器CPU瓶颈 顺便加个统计 1:30% 1:35% 1:40% 1:45% CPU
27.
小结:在大高系统中排查问题 成本范围
28.
• 有哪些问题 • 如何排查 •
如何预防
29.
高可用架构设计 • 服务隔离 - 按部署隔离 •
分机房部署 • 核心服务独立部署 • 服务独立化部署 - 按调用隔离 • 异步队列 • 快速失败
30.
可靠的系统实现 - 耦合方式:同步 /
异步 /丢弃 调⽤用⽅方 服务⽅方 thread buffer queue thread buffer queue 服务⽅方
31.
可靠的系统实现 - 耦合方式:同步 /
异步 /丢弃 - 异常处理的异常处理:不要让事情变得更糟
32.
压测与演练 • 真实流量压测 - 模拟实际请求模型:TCPCopy -
模拟后端资源异常:TouchStone(tc)
33.
最后再说几句 - Q:如何判断一个系统在大规模、高负载下是否可靠? - A:没有实际流量验证前一定不可靠,验证后也不一定是可靠的。 -
Q:压测压出问题怎么办? - A:压测压不出问题怎么办? - Q:处理预案是越多越好吗? - A:一个演练过的预案要好过十个没有演练过的预案。 - Q:我特别害怕自己做的系统在高负载时出故障,怎么办? - A:微博平台欢迎你:)
34.
Q&A 秦迪 @蛋疼的axb @微博平台架构
Download now