大流量Web系统的性能优化实践.pdf

大流量Web系统性能优化实践 君山 2015.10.15 关于我 • 许令波(君山) • 在阿里6年,做了4件还不错的事情 • 商品详情、店铺、图片空间TL • 关注大流量web系统的架构和性能优化工作。 目录 • 这些年的挑战 • 我们走过的路 • 我们的经验 5 流量爆发增长 • 图片来自网上 系统还比较脆弱 • 图片来自网上 环境造就了技术 图片来自网上 搞不好就淹死了 图片来自网上 业务爆发增长 图片来自网上 只有在这里才能遇到 图片来自网上 遇到的挑战 • 流量爆发增长带来机器的成倍增加,系统必 须要能水平扩展 • 流量的峰值(秒杀),单商品或者用户维度 会出现热点,给cache带来瓶颈 • 大面积的攻击,如何区分正常流量防止误杀 • 复杂的业务逻辑给系统系统的耦合度和数据 的分类更加困难 我们走过的路 • 系统代码层面的优化 • 架构优化 • 链路优化 代码级优化 代码优化实践:模板引擎的热点 • Velocity是动态解释性语言,执行效率较 差 • 页面复杂,反射调用非常多 • 发现模板渲染占用了60% 以上的CPU时间。 • 整个页面输出比较大,平均在100K 左右。 代码优化实践:sketch模板引擎 • 将Velocity模板直接转成Java类去执行, 将 Velocity语法转成Java语法 • 将方法的反射调用转成直接Java原生方 法 调用 • 减少页面大小,删除空行等无效字符输 出 • 将页面中的字符转成字节输出减少编码 转 换 代码优化实践:class.forname热点 • Class.forname会导致线程block 代码优化实践:增加cache • 性能提升5% more.. • 对象作为HashMap的key • web.xml配置版本信息可以减少启动时 annotation 的扫描时间 • Logger创建没有使用static修饰符导致线程 阻塞 • 少用Thread.getStackTrace() • 正则运算尽量cache 架构优化 • 数据的动静分离 • 读写的分层校验 数据动静分离 • 系统的静态化是读系统性能优化的终极必 杀器 • 让用户的请求尽量不要经过Java系统 • 让静态数据放在离用户最近的地方 • 让动态数据尽可能的小 架构优化实践:读系统的静态化 架构优化实践:商品详情的静态化 • 每天支持30+亿的PV • 可以支持峰值100w的QPS • 静态请求单机10000+ (物理机) • 动态请求单机1500+ (16核) 读写数据的分层校验 看一下全球最大的秒杀系统如何实现

文档评论(0)

1亿VIP精品文档

相关文档