陈皓:高并发互联网应用性能优化实践.pdf

上传人:椰子壳 文档编号:3335845 上传时间:2019-08-13 格式:PDF 页数:30 大小:11.74MB
返回 下载 相关 举报
陈皓:高并发互联网应用性能优化实践.pdf_第1页
第1页 / 共30页
陈皓:高并发互联网应用性能优化实践.pdf_第2页
第2页 / 共30页
陈皓:高并发互联网应用性能优化实践.pdf_第3页
第3页 / 共30页
陈皓:高并发互联网应用性能优化实践.pdf_第4页
第4页 / 共30页
陈皓:高并发互联网应用性能优化实践.pdf_第5页
第5页 / 共30页
点击查看更多>>
资源描述

《陈皓:高并发互联网应用性能优化实践.pdf》由会员分享,可在线阅读,更多相关《陈皓:高并发互联网应用性能优化实践.pdf(30页珍藏版)》请在三一文库上搜索。

1、高性能系统实践高性能系统实践 陈陈 皓皓 2 2 2 2012012012012年年9 9 9 9月月 个人简介个人简介 行业背景行业背景 金融行业(Thomson Reuters) 计算平台(Platform) 电子商务(Amazon) 技术背景技术背景 C/C+/Java Unix/Linux/Windows Web WeiboWeiboWeiboWeibo: 左耳朵耗子 T T T Twitterwitterwitterwitter: haoel B B B Bloglogloglog: http:/ 我的个性我的个性 码农兼包工头码农兼包工头 敏敏捷恐怖分子捷恐怖分子 C C C C+

2、脑残粉脑残粉 C C C C2C2C2C2C痛恨者痛恨者 C C C CSDNSDNSDNSDN腾讯百度批评人腾讯百度批评人 “ “ “ “技术岗位无技术种族技术岗位无技术种族” ” ” ”歧视者歧视者 程程序员文化极端主义者序员文化极端主义者 什么是高性能?什么是高性能? 节省资源节省资源跑得更快跑得更快 为什么要关注软件性能为什么要关注软件性能 软件性能关我鸟事软件性能关我鸟事 机器速度越来越快(摩尔定律) 硬件价格越来越便宜 软件比硬件贵 软件性能还真关我鸟事软件性能还真关我鸟事 数据中心问题 全球环保 移动设备问题 用户体验 软件运维问题 个人生活 钱,钱,钱钱,钱,钱 大纲大纲 架构

3、性能架构性能 前前端性能端性能 代代码性能码性能 网网络性能络性能 I I I I/O/O/O/O性能性能 性性能调试能调试 高性能架构的设计原则高性能架构的设计原则 永远的永远的Scalability Scalability Scalability Scalability 只需要加机器就可以解决性能问题 三维Scalability X 轴扩展 分布式,负载均衡,数据冗余/分区 Y 轴扩展 业务异步,消息队列,缓存技术 Z 轴扩展 业务模式扩展 高性能架构的设计原则高性能架构的设计原则 最小化系统的耦合性最小化系统的耦合性 SOA 概念 API Service Protocol Data St

4、ore(DB, FS, ) Link Lib Share Memory 高性能架构的设计原则高性能架构的设计原则 尽可能的节省资源尽可能的节省资源 尽可能地并行处理尽可能地并行处理 并不是多线程就好 尽可能地平衡负载尽可能地平衡负载 CPU,Mem,I/O,带宽,数据 性能设计的坑性能设计的坑 数据一致性、系统运维数据一致性、系统运维 X X X X 轴扩展轴扩展 X X X X轴扩展轴扩展负载均衡、数据分区冗余负载均衡、数据分区冗余 数据复制数据复制/ / / /镜像镜像 主动同步和被动同步 主从同步 和 主主同步 MVCC 数据同步(Paxos投票) 难难点点 一致性 X X X X轴扩展

5、轴扩展 数据分区数据分区 数据分区数据分区 数据类型(如:访问位置、业务类型) 数据范围(如:时间段) 数据热度(如:用户活跃度,商品热度) 按读写分(如:商品描述 和 商品价格) 难难点点 建索引找数据 数据关联性(全文搜索) X X X X轴扩展轴扩展负载均衡、数据分区冗余负载均衡、数据分区冗余 负载均衡负载均衡 CDN 反向代理(DNS 负载均衡 CNAME) 哈希负载均衡(一致性哈希) 分发 vs 过滤 纯动态节点负载均衡负载(CPU, Mem, I/O ) 难难点点 Session Y Y Y Y 轴扩展轴扩展 Y Y Y Y轴扩展轴扩展 缓存缓存 缓存机制缓存机制 无处不在(浏览器

6、,文件系统,CPU,数据库) 缓存命中率,多级缓存 缓存更新策略 LRU,LFU,FIFO 分布式cache - NoSQL 注意注意 缓存更新算法 缓存重建 缓存异常(如:爬虫) Y Y Y Y轴扩展轴扩展 异步异步 异步处理异步处理 部分牺牲实时性和事务 异步工作流控制 异步的通知方式 消息,回调,主动查询,等 异步工作流引擎 难点难点 业务回滚 一致性 Y Y Y Y轴扩展轴扩展 消息流消息流 任务队列、消息队列任务队列、消息队列 Push 方式 Pull 方式 持久化和批处理 Pub/Sub系统,ESB架构 Throttle机制 难点难点 数据依赖 数据顺序 数据丢包重发 WebWeb

7、WebWeb前端性能优化前端性能优化 前端网页性能前端网页性能 单个页面的单个页面的HTTPHTTPHTTPHTTP请求最小化(合并文件,请求最小化(合并文件,CSS Image SpritesCSS Image SpritesCSS Image SpritesCSS Image Sprites) A A A Ajax jax jax jax 降低数据传输(降低数据传输(QuoraQuoraQuoraQuora 长连接,长连接,GETGETGETGET请求)请求) 网网页大小页大小 静静态资源的态资源的CDNCDNCDNCDN gzipgzipgzipgzip/deflate/deflate/

8、deflate/deflate网页网页 压压缩缩jsjsjsjs/ / / /csscsscsscss文件文件 使使用公用的用公用的jsjsjsjs文件服务器文件服务器 使使用多个二级域名分流(图片服务器)用多个二级域名分流(图片服务器) H H H HTML5 TML5 TML5 TML5 特性(特性(canvascanvascanvascanvas,本地存储),本地存储) E E E Expire Headerxpire Headerxpire Headerxpire Header 肥客户端肥客户端 前端MVC,Ember.js/Backbone.js 使用工具使用工具 Yahoo Exc

9、eptional Performance Yslow Google page speed 前端前端WebWebWebWeb服务器性能服务器性能 静态网页静态网页技术技术 T T T TCPCPCPCP调优调优 Keep Alive(probes, intvl, fin_timeout) TIME_WAIT(reuse, recycle) RWIN(rmem, wmem) HTTP ServerHTTP ServerHTTP ServerHTTP Server调优调优( ( ( (NginxNginxNginxNginx) ) ) ) Worker Process 最大链接数 sendfile(

10、tcpnopush) 开启压缩 Expires Header Fast-CGIFast-CGIFast-CGIFast-CGI php-fpm php5-xcache, eAccelerator, APC 内存内存,CPUCPUCPUCPU核核 程序和系统调优程序和系统调优 程序性能程序性能 内存分配内存分配/ / / /释放释放 内存碎片 操作系统内存管理 字字符串处理符串处理 比较,匹配,拼接 多多线程同步和上下文切换(多核技术)线程同步和上下文切换(多核技术) 万恶的锁(lock-free) Set Affinity 算法和数据结构算法和数据结构 算法和要处理的数据非常有关系 数据预处理

11、 空空间和时间间和时间 整体考虑 代代码执行效率码执行效率 代码指令级调优(分支预判, CPU Cache) (用VTune) 网络系统网络系统 TCPTCPTCPTCP链接建立和销毁链接建立和销毁 U U U UDPDPDPDP协议的性能协议的性能 Multicast MTU 网卡和协议栈缓存网卡和协议栈缓存 多多路复用技术(路复用技术(select, poll, select, poll, select, poll, select, poll, epollepollepollepoll) D D D DNS LookupNS LookupNS LookupNS Lookup(gethost

12、bynamegethostbynamegethostbynamegethostbyname) GNU 的 gethostbyname_r s s s sendfileendfileendfileendfile 各种各种I/OI/OI/OI/O模型模型 Unix/Linux I/OUnix/Linux I/OUnix/Linux I/OUnix/Linux I/O模型模型 阻塞方式 完全同步 无阻塞方式 轮询 select/poll/epoll 事件阻塞 AIO 真正的异步(信号,线程) Windows I/OWindows I/OWindows I/OWindows I/O模型模型 Overl

13、apped I/O WriteFile() 需要WaitForSingleObject WriteFileEx() 回调函数,APC队列,被通知状态 IOCP 使用线程池回调 性能调试性能调试 系统性能定义系统性能定义 Throughput 和 Latency 系统性能测试系统性能测试 找到系统性能极限 查找系统瓶颈查找系统瓶颈 CPU, I/O(文件或网络),Memory, 使用Profiler(分段注释/Mock) HotSpot 执行时间最长,和执行次数最多 2:8 2:8 2:8 2:8 原则原则 20%20%20%20%的代码耗了你的代码耗了你80%80%80%80%的性能的性能 找到那找到那20%20%20%20%的代码,就可以优化那的代码,就可以优化那80%80%80%80%的性能。的性能。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 建筑/环境 > 装饰装潢


经营许可证编号:宁ICP备18001539号-1