性能的秘诀 chrome插件支持推送.

Slides:



Advertisements
Similar presentations
分享人:張益源. 個人資料介紹 姓名:張益源 畢業:體育系 97 級 專長:田徑、籃球、游泳 任教學校:慈濟大學實驗國民小學 學校職務:體育兼資訊老師.
Advertisements

定 格 入 格 破 格 —— 新诗仿写复习训练 仿照下列句子,再把 “ 人生 ” 比喻成 “ 大海 ”“ 天空 ” , 造两个句子。 如果说人生是一首优美的乐曲,那么痛苦则 是其中一个不可或缺的音符。 参考答案: 1 、如果说人生是一望无际的大海,那么挫折则 是其中一个骤然翻起的浪花。 2 、如果说人生是一片湛蓝的天空,那么失意则.
104 學年度十二年國教適性入學各就學區 國中學校免試報名平台操作說明 報告人:政高有限公司 洪志遠 經理 1 【第一次模擬作業】
Web Maple— 云端计 算 数学学院刘海洋 胡婷婷. 需求 什么是 Web Maple ? Maple : “ 数学家的软件 ” 符号和数值计算 动态编程语言 集成编辑环境与图形输出 Web Maple :网页上的数学家 完整的 Maple 功能 云端计算 网页独特的输入输出格式.
快快樂樂快快樂樂 快樂不是來自於物欲的滿足, 而是來自於心靈的智慧。 要為自己擁有的東西而喜悅,不要為自己沒有的東西而沮喪。
深圳市沙井中学:刘沅南制作. 1 、出生的小宝宝 ( 新生命)是怎么来的呢? 新生命都是从一个细胞 —— 受精卵发育而 来的。 2 、 受精卵又是如何产生的呢? 是精子和卵细胞相互结合产生的。
pps: Zou1935 手動換頁 美文欣賞系列 日子如流水,倏然間滑過去了 …… 時光老了,老在清晨的鳥喧裡,老在院落的薔薇架 下。恍惚間,煙塵散盡,時光流轉,依然是潔淨清 美少年時。
资源平台应用培训 武汉市交通学校信息化建设指导委员会.
104年度國立宜蘭大學新進主管研討 主計業務宣導說明
102年實施之高中職及五專多元入學(含免試入學)之招生機制
Mico的架构之旅 魏佳 Co-Founder & Mico Inc..
读者与图书馆 2009年春季版 总第 15 期 山 东 交 通 学 院 图 书 馆 2009年3月.
百胜软件在DT时代的测试之路 百胜软件质量部 韩桃玲
MySQL数据库服务介绍 2013 年 6 月.
龙芯多媒体电脑教室培训 龙梦极域电子教室 江苏龙芯梦兰科技股份有限公司.
IT运维管理解决方案 -轻松管理,自在运维 产品经理 刘曜.
应用性能管理提升客户体验 龙珠客户案例分享 肖澍 云智慧公司.
艺术设计学院分团委学生会 团委办公室 学年度 工作总结 PPT制作:胡未然.
做好就业与自主创业的准备.
2012级暑期放假安全教育 及宿舍搬迁工作布置会 北京化工大学理学院 辅导员:曹鼎 2013年6月6日.
逻 辑 学 主讲:李贤军.
2013华东数据库技术大会 人人网的SNS数据库架构与设计艺术 周彦伟
資料庫系統 曾俊雄.
第二章 项目一:企业厂区与车间平面设计 1.
香港普通話研習社科技創意小學 周順強老師.
Founder Technology Group Co.,Ltd.
项目进度管理.
冉维 网友认为我是打败了某某或者为大家出了气,但是我要说的是我问了问题,这是我作为记者的本职工作。她回答了问题,这是她作为发言人的本职工作。她依然坚持了美国的立场。在记者会上,并没有谁胜谁败。最多就是:我那天的问题问得不错。 ——新华社记者冉维本周二在美国国务院记者会上问及美国对钓鱼岛(日本称尖阁诸岛)的正式叫法,使发言人努兰面露窘色。冉维昨天在微博上表示,自己并没有网民想象的“痛快之感”。
图文:网络 背景音乐:溪行桃花源 PPS:辛钰明 手、自翻页
各班請選出三張學習單交到輔導室參加評選。
第8章 机床操作 主讲:臧红彬 博士.
钟南山谈养生之道 健康长寿靠自己 钟南山谈养生之道 健康长寿靠自己 资料来源:钟南山讲话 配乐:莫扎特第40交响乐 PPS编辑制作:张艺全 于广州 2011年11月.
2015年云南财经大学图书馆 新生入馆教育考核试题 答题指南
“9.11”N周年祭 一首童话般的诗.
苏州大汇信息科技有限公司 招聘简介.
凡事謝恩,由「憂」而「優」 花蓮高工101學年度第一學期期末校務會議報告 葉日陞
电视栏目与频道策划.
淘宝核心系统数据库组 褚霸 /06/25 大话SSD 淘宝核心系统数据库组 褚霸 /06/25.
課程名稱:資料庫系統 授課老師:李春雄 博士
淘宝核心系统数据库组 余锋 利用新硬件提升数据库性能 淘宝核心系统数据库组 余锋
PHP平台安裝-如何取得軟體 各軟體支援機構網站: Apache Server:
精通redis数据库开发、管理与优化 第1讲 什么是redis 讲师:黄锡峰.
Cloud (AWS) 產品放置 ex.巴士, 球場, 旅館 …. 客戶需求SW模組化 1.客製化需求 2.Web技術
Bigpipe 简化HTTP异步调用.
亚东科技出品 神盾终端免运维管理系统 亚东科技出品
任务调度架构变迁史 知道创宇 杨冀龙.
第一部 上班族賺錢密碼.
基于大数据平台数据管理研究 何家乐 2013年7月 中国科学院高能物理研究所.
Sym社区系统商业版 背景、功能以及技术架构简介.
7.1.1 设备管理的功能(P95) 分配设备:按设备的不同类型和操作系统选用的算法分配。包括分配相应的通道、设备控制器以及对未分配到的任务或怍业进行排队等; 控制和实现真正的输入输出操作。包括通道程序控制、启动设备、及时响应及处理中断讯号等; 对输入输出缓冲区进行管理。例如逻辑名的管理,多个缓冲区的分时以及串并行操作,同类多个外部设备的均衡工作,避免“忙的忙”和“闲的闲”;
快快樂樂 快樂不是來自於物欲的滿足, 而是來自於心靈的智慧。.
歷史軼聞(中) 配圖及pps幻燈片編輯: 張偉林 音樂:永恆之戒 簡體轉繁體:Franz.
作業系統 第三章 作業系統結構.
專題名稱:Android App應用於訊號量測平台 指導教授:陳永欽
第六章 迴圈與陣列.
第12章 MySQL資料庫系統的使用 12-1 網頁資料庫的基礎 12-2 MySQL資料庫系統
第3章 选择抽样调查方法 抽样设计.
以西結書.
*** 貼 心 提 醒 *** 本系統適用Chrome及Ie9.0以上版本瀏覽器,建議您使用Chrome操作本系統。
架构师成长感悟 吴隆烽
新豐鄉.
課程名稱:資料庫系統 授課老師:李春雄 博士
研发技术体系梳理 陈玮
厦门大学数据库实验室 2014暑期奋战70天总结 罗道文
快快樂樂 快樂不是來自於物欲的滿足, 而是來自於心靈的智慧。.
王小桃 認識電子商務.
李元金 计算机与信息工程学院 第 17 讲 设备管理(1) 李元金 计算机与信息工程学院 1/
第1章 WWW和LAMP基本觀念.
天翼云3.0产品介绍 2018/4/24.
天翼云3.0产品介绍及18年规划.
Presentation transcript:

性能的秘诀 chrome插件支持推送

目录 性能的分类 问题的定位 优化的思路 chrome案例

性能的分类

问题:分别是什么原因? 笔记本开机花费5分钟 看直播的时候浏览器卡顿

性能问题分2类 CPU IO

感受硬件性能的进步 https://people.eecs.berkeley.edu/~rcs/research/interactive_latency.html

练习:属于哪类? 618期间,关注业务分发feed时出现队列堆积问题,feed无法 及时写入数据库 双11期间,用户Redis Cluter出现连接超时,导致无法完成 请求 618期间,先发后审出现任务堆积,导致无法及时发出爆料

问题的定位

问题:电脑慢怎么办? 升级CPU 加内存条 换SSD 换主板

我的经历 曾经想在斗鱼直播游戏,发现电脑带不动 我I5+660不服,一顿直播软件调参,还是卡 突然看斗鱼官网要求E3+760,都很贵,犹豫都要买么? 无论如何,升级主板才能用新硬件... 先买了E3,发现还是卡... 再买1060...终于不卡了,原来是显卡的问题,E3几乎白买

不要盲目猜测 用工具:ab、top、vmstat、iostat、perftop、sar、callgrind 等,做量化分析! 用经验:直觉、猜测、验证、总结、纠错,不要轻信以往经 验,不要忽略场景的差异!

CPU常见问题 CPU慢 例:redis单线程纯内存操作,CPU主频越高则处理越快,核心多没有收 益 用户代码慢 例:用in_array遍历查找,而没有使用array_key_exists哈希查找 系统代码慢: 例:php短连接到redis,导致内核大量时间处理tcp握手,sys cpu打高

IO常见问题 延迟高: redis循环get 10次,耗费10倍时间 吞吐低: mysql插入一条10毫秒,1秒只能插100条 随机读写: 机械磁盘的磁头需要寻道

练习:分析下面的性能问题 关注feed流,插入mysql队列堆积 好价点赞,更新mysql队列堆积了

怀疑与定位的差距 == 量化 QPS/TPS USR/SYS CPU MEM IOPS PPS 怀疑与定位的差距 == 量化 QPS/TPS USR/SYS CPU MEM IOPS PPS Bandwidth(disk, network)

优化的思路

问题:CPU问题有哪些优化思路? 更快: 换主频更快的处理器 -- 技术革新 更多: 换核心更多的处理器 -- 能扩容解决的不是问题 更少 让代码做更少的计算 -- 减少重复的,保留必要的

练习:优化下面的代码 foreach ($articles as $article) { $channels = ["post", "news"]; if (!in_array($article['channel'], $channels)) { continue; } sleep(0.1);

问题:哪个更难优化? 代码还没怎么跑,CPU就已经没了 人活着,钱就没了 CPU还有剩余,代码却提升不动了 人挂了,钱没花了

锁是CPU低利用率第1杀手 锁 == 并行变串行 减小锁粒度,充分利用多核并行

练习:优化下面的CPU低利用率场景 好价点赞,更新mysql队列堆积了 增加消费进程?不是本质。 mysql行锁导致,可以利用redis累加,定期更新到mysql。

谁是CPU低利用率第2杀手? IO 同步网络调用 磁盘寻道

问题:磁盘IO问题有哪些优化思路? 更快: 用更快的SSD替换HDD -> 技术革新 更多: 更大: 用更大的批次读写磁盘 -> 减少随机IO

练习:分析原因 慢SQL第二次执行就不慢了,为什么? 为什么编程软件第一打开慢,第二次就变快了?

问题:网络IO问题有哪些优化思路? 更大: 请求批量发送,减少小包传输 -- 直接提升吞吐 更长: 能用长连接就别用短连接 -- 降低负载/延迟,间接提升吞吐 更宽: 异步IO编程,无需同步等待结果 -- 吞吐不受延迟影响

案例:用户系统对接ES 用户重构需将实时变化的用户金币、积分等数据存储到ES中 ,此前只存在Redis里。

我们的方案 金币、积分变化仍旧实时更新到Redis 向Redis去重集合中set uid job周期性运行,把set中的uid的金币、积分同步到ES 向ES更新时,采用bulk批量接口同时更新多个uid的记录

练习:给出优化方案 某业务接口需要进行5000次Redis get请求,耗时5秒无法接 受 用户redis cluster经常连接超时,如何优化?

优化的几个金句 战略层面 2:8原则 大拆小 战术层面 延迟 换 吞吐 空间 换 时间 CPU-bound与IO-bound 资源隔离

chrome推送案例

背景 当前 目前chrome插件采用定时拉取实现,时效性低 以后 产生新文章后,主动推送给chrome插件

要做的事情 基于websocket协议,维持50万长连接在线 产生1篇新文章,遍历50万长连接推送

定位:CPU - 重复计算 协议采用json,50万次推送需要编码50万次json,服务器要 炸了

优化:CPU - 重复计算 消息只json编码一次,直接写给50万连接 试错是积累这方面经验的主要途径,不试不知道,不自信

定位:CPU - 锁瓶颈 遍历50万连接推送消息,花费时间很长 每时每刻都有连接上下线,集合锁粒度很粗,并发能力很差 ,各种僵死感

优化:CPU - 锁瓶颈 连接随机打散到多个集合,每个集合大约1万个连接,有独立 的锁保护 多线程并行遍历多个集合推送,单个集合的锁占用时间很短 使用读写锁取代互斥锁,提升多条消息同时遍历推送的并发 能力

优化:IO - 小包传输 1秒发10篇文章,就需要推送10*50万=1000万次/秒

优化:IO - 小包传输 按秒级时间窗口,将要推送的文章合并成数组,整体json编 码后,再遍历推送出去 linux协议栈的PPS经验值大概就是100-150万左右,再多 就会丢包 减少小包即减轻协议栈处理压力,整个链路上的设备都会 降低CPU损耗

优化:IO - 异步通讯 因为推送遍历集合需要锁整个集合,同步等待每个 websocket write完成无法接受

优化:IO - 异步通讯 每个websocket有独立的读写goroutine,读写消息通过 channel缓冲 遍历websocket推送时,只需向channel投递消息,不需要等 待网络发送,因此遍历很快

内部设计 连接 连接 连接 连接 连接 集合 集合 集合 多线程分发 打包与编码 消息 消息 消息

整体架构 Websocket推送消息 HTTP/2广播消息 HTTP 提交消息 连接 gateway网关 gateway网关 logic逻辑层 HTTP 提交消息 业务方 业务方 业务方

优化成果 内存占用与长连接个数呈线性关系 消息推送期间,可以用尽整机的CPU 消息推送期间,带宽高达6Gbit/s

交流环节 你有哪些优化经验分享一下?