腾讯大讲堂19 系统优化的方向

2,760 views

Published on

0 Comments
2 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
2,760
On SlideShare
0
From Embeds
0
Number of Embeds
89
Actions
Shares
0
Downloads
899
Comments
0
Likes
2
Embeds 0
No embeds

No notes for slide

腾讯大讲堂19 系统优化的方向

  1. 1. sunshinexiong 2008-01-15 系统优化的方向? 监控对研发的支持
  2. 2. 系统优化的驱动力 <ul><li>问题 </li></ul><ul><li>监控 </li></ul><ul><li>自我实现和挑战 </li></ul>
  3. 3. 监控 <ul><li>被动式监控 </li></ul><ul><ul><li>运维监控, Port 、 CPU 、 Memory 、 Disk IO 、 Net IO 、 FileSize 、 DiskSize </li></ul></ul><ul><li>主动式监控 </li></ul><ul><ul><li>HttpWatch 工具 </li></ul></ul><ul><ul><li>Cgi 自动化测试 </li></ul></ul><ul><ul><li>立体化监控体系 </li></ul></ul><ul><ul><li>运营数据采集 </li></ul></ul>
  4. 4. <ul><li>http://isd.itil.com </li></ul><ul><li>每天自动邮件,纪录每台设备的运维情况 </li></ul><ul><ul><li>综合负载 </li></ul></ul><ul><ul><li>CPU 占用率 </li></ul></ul><ul><ul><li>网络流量(出、入) </li></ul></ul><ul><ul><li>网络包(出、入) </li></ul></ul><ul><ul><li>Load Average/5min </li></ul></ul><ul><ul><li>磁盘 Block in/out </li></ul></ul>监控邮件、 url 地址
  5. 5. HttpWatch 工具
  6. 6. Cgi 自动化测试平台 <ul><li>http://itil.isd.com </li></ul><ul><li>3.0 结果展示 </li></ul>
  7. 7. Cgi 自动化测试原理 <ul><li>模拟前台 JS 代码发送 cgi 请求,并接收返回,纪录响应时间,并分析返回包 </li></ul><ul><li>实质是一种黑盒集成测试 </li></ul><ul><li>监控结果存在某种程度的失真 </li></ul><ul><li>建议在返回包中,提供返回码 </li></ul>
  8. 8. 立体化监控 <ul><li>LogServer </li></ul>
  9. 9. 立体化监控
  10. 10. 运营数据分析 isdstat.cm.com
  11. 11. IDC 测试平台 idcspeed.oa.com
  12. 12. 优化工作基础 <ul><li>数据分析 </li></ul><ul><li>举例:猜扑克牌 </li></ul>enum card {cardA,card2,card3,card4,card5,card6,card7,card8,card9,card10,cardJ,cardQ,cardK}; enum card i,j,k; for ( i = cardA, i < cardK, i++) for ( j= cardA, j < cardK, j++) for ( k = cardA, k < cardK, k++) if ( 3==func(i,j,k) ) Print(i,j,k), return 0; int func(int x, int y, int z);
  13. 13. 如何优化? <ul><li>func(A,A,A) </li></ul><ul><li>func(A,A,2) </li></ul><ul><li>func(A,A,3) </li></ul><ul><li>func(A,A,4) </li></ul><ul><li>… </li></ul>func(A,2,A) func(A,2,2) func(A,2,3) func(A,2,4) … func(2,A,A) func(2,A,2) func(2,A,3) func(2,A,4) … int func(int x, int y, int z); enum card {cA,c2,c3,c4,c5,c6,c7,c8,c9,c10,cJ,cQ,cK}; enum card i; int count=0,ret; for ( i = cA, i < cK, i++ ) if ( ret=func(i,i,i) != 0 ) Print(i,ret), 3==count+ret?return 0, count+=ret;
  14. 14. 日志优化 新 cache 优化后效果 <ul><li>日志回复 CACHE 上线后, CACHE 高峰期处理的平均延时由 200 - 500ms 左右降至 20ms 左右;目前日志 title 的命中率在 92% 左右,其平均延时在 8ms 左右,以前高峰期在 50-60ms 左右 </li></ul><ul><li>目前日志 title 还需 8ms 的原因,应该与目前日志 title 的数据有关,每次 DB 的 IO 操作的数据量比较大影响的 </li></ul><ul><li>后台数据 CACHE 的性能提升,减少了前台 WEB 接入的 httpsvr 的压力,用户体验提升,同时也相应带来了系统稳定性的提升 </li></ul>
  15. 15. 旧系统结构 <ul><li>模块 </li></ul><ul><ul><li>日志回复 </li></ul></ul><ul><ul><li>日志标题 </li></ul></ul><ul><ul><li>日志计数 </li></ul></ul><ul><li>优点 </li></ul><ul><ul><li>CACHE 内存化,提升性能 </li></ul></ul><ul><ul><li>多进程号段分布处理 </li></ul></ul><ul><ul><li>业务异步化 </li></ul></ul><ul><li>缺点 </li></ul><ul><ul><li>CACHE 量有限,命中率低,对 DB 的性能依赖比较重 </li></ul></ul><ul><ul><li>模块相互独立,容易造成数据不一致 </li></ul></ul>
  16. 16. 现网数据分析 <ul><li>数据量 </li></ul><ul><ul><li>日志标题 </li></ul></ul><ul><ul><ul><li>cache 10 台 约 69G 命中率:约 90% </li></ul></ul></ul><ul><ul><ul><li>DB 5 台 约 340G </li></ul></ul></ul><ul><ul><li>日志回复 </li></ul></ul><ul><ul><ul><li>cache 20 台 约 68G 命中率:约 50% </li></ul></ul></ul><ul><ul><ul><li>DB 20 台 约 9T </li></ul></ul></ul><ul><ul><li>日志计数 </li></ul></ul><ul><ul><ul><li>cache 10 台 约 122G 命中率:约 100% </li></ul></ul></ul><ul><ul><ul><li>DB 4 台 约 100G </li></ul></ul></ul><ul><li>访问量 </li></ul><ul><ul><li>日志标题 </li></ul></ul><ul><ul><ul><li>高峰期: 7100 次 / 秒 </li></ul></ul></ul><ul><ul><li>日志回复 </li></ul></ul><ul><ul><ul><li>高峰期: 5000 次 / 秒 </li></ul></ul></ul><ul><ul><li>日志计数 </li></ul></ul><ul><ul><ul><li>高峰期: 7000 次 / 秒 </li></ul></ul></ul>
  17. 17. 新系统结构 <ul><li>系统分三个模块:日志信息、日志标题、访问计数 </li></ul><ul><li>CGI 层对日志标题、访问计数模块有读 / 写权限;对日志标题模块只有读权限,其数据来源于日志信息模块 </li></ul>
  18. 18. 新 cache 优化后效果 <ul><li>日志回复 CACHE 上线后, CACHE 高峰期处理的平均延时由 200 - 500ms 左右降至 20ms 左右;目前日志 title 的命中率在 92% 左右,其平均延时在 8ms 左右,以前高峰期在 50-60ms 左右 </li></ul><ul><li>目前日志 title 还需 8ms 的原因,应该与目前日志 title 的数据有关,每次 DB 的 IO 操作的数据量比较大影响的 </li></ul><ul><li>后台数据 CACHE 的性能提升,减少了前台 WEB 接入的 httpsvr 的压力,用户体验提升,同时也相应带来了系统稳定性的提升 </li></ul>
  19. 19. 日志信息模块性能 <ul><li>单台机器 4 个 CACHE ,容纳 6000 万个存储节点, CACHE 数据量为 210G 左右空间,每秒中的处理请求约 900 次(其中读 800/ 写 100 ),平均延时为 100ms ,每分钟内处理超过 1 秒的请求为 32 个,占这分钟内访问约 1/1000 </li></ul><ul><li>现网布局: 15 台 cache 6 台 DB </li></ul>
  20. 20. 日志容量扩容 <ul><li>日志数据几何级数增长,每 12 个月数据容量翻一番 </li></ul><ul><li>DB 设备越来越多,旧架构需要翻倍增长 </li></ul><ul><li>日志正文同回复的存储在一起 </li></ul>
  21. 21. 新日志存储 <ul><li>日志不再按照 QQ ID 存储 </li></ul>
  22. 22. 谢谢! Qzone 网管监控: coatizhao 、 johnzhao Cgi 自动化 测试: Ashwang 立 体 化 监 控: frankyang 、 samuelliao 模 块 间 调 用: minskzhang Qzone 页面测速: galen 、 stonehuang Qzone : stevetang 、 xiahz

×