百姓网如何优化网速-Qcon2011

4,682 views
4,656 views

Published on

Published in: Technology
0 Comments
9 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
4,682
On SlideShare
0
From Embeds
0
Number of Embeds
2,808
Actions
Shares
0
Downloads
53
Comments
0
Likes
9
Embeds 0
No embeds

No notes for slide

百姓网如何优化网速-Qcon2011

  1. 1. 为速度而生 ——看百姓网如何优化网速 panxiaoliang@baixing.com
  2. 2. 百姓网概况 国内领先分类信息网站 5000万动态请求/天 高峰1300次动态请求/秒 50台在线服务器 南北两个机房 30名员工 10名技术人员2
  3. 3. 百姓网有多快? * 来自北京时间2011年3月30日晚21:30 Alexa数据3
  4. 4. 优化之路 先交学费 对网速优化的理解 前端优化 后端优化 网络优化4
  5. 5. 先交学费:ETag5
  6. 6. 第一次访问 GET /image/baixing.gif HTTP/1.1 HTTP/1.1 200 OK ETag: "10c24bc-4ab-457e1c1f“6
  7. 7. 第二次访问 GET /image/baixing.gif HTTP/1.1 If-None-Match: "10c24bc-4ab-457e1c1f" HTTP/1.1 304 Not Modified7
  8. 8. ETag是根据什么得出的? Apache默认设置:inode-size-timestamp inode-size-timestamp inode-size-timestamp8
  9. 9. ETag去掉,流量减半9
  10. 10. 补课 * 图书图片取自amazon.com10
  11. 11. 页面渲染的过程 发送请求 等待响应 接收下载11
  12. 12. 我们对于网速优化的划分 前端 秒级别 涉及请求数,CSS,JS,图片以及页面布局部分 后端 毫秒级别 涉及代码优化,执行效率 网络 毫秒级别 涉及机房选择,CDN等网络相关内容12
  13. 13. 前端优化13
  14. 14. 优化容易,持续优化难14 图片取自: http://www.ytnpic.cn/bbs/viewthread.php?tid=33856&page=1
  15. 15. 持续优化要解决的问题 如何监控前端呈现速度? 如何收集最终用户的数据?15
  16. 16. 如何前端监控? Page Load Render DOM Start Ready16
  17. 17. JavaScript记录时间<header><script type="text/javascript">var start = new Date().getTime();window.onload = function(){ var time = new Date().getTime() - start; alert(time);}</script>... 17
  18. 18. 如何统计真实用户数据? Event Tracking http://code.google.com/apis/analytics/docs/tracking/eventTrackerGuide.html18
  19. 19. 用Google Analytics记录时间<header><script type="text/javascript">var start = new Date().getTime();window.onload = function(){ var time = new Date().getTime() - start; _gaq.push([_trackEvent, RenderTime, ViewAd, , time]);}</script> 19...
  20. 20. 在Google Analytics上查看数据20
  21. 21. 前端监控的一些发现 0.2s 下载HTML 0.5s Google Analytics统计 0.7s 页面加载 1.0s 新开页面21
  22. 22. 后端优化22
  23. 23. 用Cacti监控重要页面速度23
  24. 24. 用xhprof来找到算法瓶颈24 http://pecl.php.net/package/xhprof
  25. 25. 优化搜索和数据库的问题 查询压力的分布会随着业务变化而变化 真实环境的压力难以复制,追溯很难25
  26. 26. 解决方案:在线记录慢查询$dbSlowLogger = new SlowLogger();$dbSlowLogger->start();$this->result = mysql_query($this->sql, $this->connection);$ms = $dbSlowLogger->stop();if ($ms > 499) $dbSlowLogger->log(lib_db, $this- >sql);26
  27. 27. 用Cacti来显示慢查询27
  28. 28. 让数据可见28
  29. 29. 后端优化总结 寻找瓶颈所在 在线记录慢查询 可视化性能问题29
  30. 30. 网络优化30
  31. 31. 从CDN开始 静态CDN对静态内容优化非常有效 动态CDN对动态内容的优化有限 选个好机房才是根本31
  32. 32. 如何选择一个好机房 要让网站用户帮我们来挑选 具体方法:监控从机房下载一张标准图片的时长32
  33. 33. 如何获得标准图片的时长var url = http:// + testHost + /test.jpg? + Math.random();document.getElementById(tsp).innerH TML = <img src=" + url + " onload="tsp()">;function tsp() { time = new Date().getTime() - start;}33
  34. 34. 百姓网的双机房方案34
  35. 35. 双机房的问题 公网传输相当丌稳定 写代码的时候要注意读写权限 数据库更新后的cache的更新 日志数据需要合并分析 服务器的远程维护35
  36. 36. 网络优化总结 选个好机房比什么都重要 如无必要,勿增机房 CDN是静态内容很好的解决方案36
  37. 37. 我们的经验 前端:持续监控真实用户数据 后端:找出线上瓶颈所在 网络:选个好机房37
  38. 38. Q&A38

×