构建高性能web站点 摘记_第1页
构建高性能web站点 摘记_第2页
构建高性能web站点 摘记_第3页
构建高性能web站点 摘记_第4页
构建高性能web站点 摘记_第5页
已阅读5页,还剩2页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

优化招数优化招数 一一 服务器并发策略服务器并发策略 1 这里的吞吐率特指 Web 服务器单位时间内处理的请求 2 压力测试的前提 1 并发用户数 2 总请求数 3 请求资源描述 3 用户平均请求等待时间主要用户衡量服务器在一定并发用户数的情况下 对于单个用户的服务器质量 而服务器平均请求处理时间与前者相比 则用于 衡量服务器的整体服务质量 它其实就是吞吐率的倒数 4 对 http header 中标记为 Connection Keep Alive 的请求 开启 web 服 务器的长连接支持 减少系统调用 accept 的次数 即减少建立连接的开销 5 老调重弹 进程 内核级线程和用户级线程在不同情况下的优劣 IO 模 型 mmap 内村映射 直接 IO 例如 sendfile syscall 以及异步 IO 等 多 路 IO 复用 select poll epoll and kqueue etc 6 服务器并发策略 1 一个进程处理一个连接 非阻塞 IO 稳定性强 但 context switch 的开销随 http request 递增而快速增长 2 一个内核级线程处理一个连接 非阻塞 IO 多进程多线程混合方式 Context switch 的问题依然存在 理论上可以支持更多的并发连接 3 一个进程处理多个连接 非阻塞 IO epoll kqueue lighttpd nginx 支持并发性能强劲 上述情况的适用范围不能一刀切 而且这里都是 指单机并发 需根据实际情况 实际并发数 来选择 通常 在并发用户数较 大的情况下 Web 服务器使用什么样的并发策略 是影响最大并发数的关键 二二 动态内存缓存动态内存缓存 在实际应用中 动态内容缓存可能是使用得最多的技术 但是并不见得所 有的动态内容都适合使用网页缓存 缓存带来的性能提升恰恰与有些动态数据 实时交互的需求形成矛盾 这就是一个权衡 1 缓存动态生成的 html 代码 2 把动态内容静态化 直接缓存整个 html 文件 这样就可以直接访问缓 存 这时的更新策略 1 在数据更新时重新生成静态化内容 2 定时重新生成静态化内容 3 使用 SSI server side include 进行局部静态化 但 web server 的 SSI 功能会对静态文件的吞吐率有负面影响 三三 动态脚本加速动态脚本加速 加快脚本语言的执行速度 缓存中间代码 opcode 以供复用 四四 浏览器缓存浏览器缓存 减少 http 请求 充分利用浏览器的缓存 而 webapp 通过 http 协议 更具 体位置就是 http header 来与浏览器协商 那些东东浏览器可以使用其缓存 即可 1 Last Modified If Modified Since 2 ETag If None Match 3 Expires Cache Control max age 1 和 2 需要浏览器和 webserver 交互后 有服务器端通知浏览器是否使用浏览 器缓存 而 3 则是在过期前直接使用浏览器缓存 这样就直接 kill 掉了 http request 同时还需注意 在使用 SSI 的内容中 由于整个页面是服务器动态生 成的 所以 Last Modified 标记在不同的 Web 服务器中有不同的生成方法 五五 WebWeb 服务器缓存服务器缓存 这个第二点动态内存缓存有区别 前者更指缓存是否命中与否完全由应用 程序决定 且缓存方式也有应用来决定 而后者更指有 web 服务器通过 URL 决 定是否缓存命中 比如静态内容或者更新不太频繁的动态内容就比较时候由其 缓存 六六 反向代理缓存反向代理缓存 Web 服务器隐藏在代理服务器之后 这种代理机制称为反向代理 Reverse proxy 同时 实现这种机制的服务器便成为反向代理服务器 隐藏在反向代 理服务器之后的 Web 服务器 我们习惯称它为后端服务器 Back end server 当然 反向代理服务器就被称为前端服务器 Front end server 引入反向代理服务器的目的之一就是基于缓存的加速 我们可以将内容缓 存在反向代理服务器上 所有缓存机制的实现仍然采用 HTTP 1 1 协议 缓存命中率和后端吞吐率的理想技术模型 缓存丢失率 活跃内容数 实际吞吐率 平均缓存有效期 100 缓存命中率 1 缓存丢失率 后端吞吐率 活跃内容数 平均缓存有效 期 缓存命中率 1 后端吞吐率 实际吞吐率 100 后端吞吐率 1 缓存命中率 实际吞吐率 结论结论 1 活跃内容数和平均缓存有效期一定的情况下 缓存命中率与实 际吞吐率成正比 2 实际吞吐率和平均缓存有效期一定的情况下 缓存命中率 与活跃内容数成反比 3 活跃内容数和实际吞吐率一定的情况下 缓存命中率与平 均缓存有效期成正比 4 活跃内容数一定的情况下 后端吞吐率与平均缓存有效期 成反比 5 平均缓存有效期一定的情况下 后端吞吐率与活跃内容数 成正比 6 缓存命中率的变化不一定会影响后端吞吐率 7 后端吞吐率的变化不一定会影响缓存命中率 ESI Edge Side Include 类似与 SSI 但不在 webserver 端组装内容 而是在 http 代理服务器上组装内容 包括反向代理 在处理只有局部更新动态 内容时 AJAX 是更好的原则 它不依赖与底层 webserver 的实现 但 ESI 的优势 在于再有多个后端服务器的情况下 变可以避免多个后端的重复组装 减少总 工作量 七七 WebWeb 组件分离组件分离 从以下几个方面来看 Web 组件的差异 1 文件大小 2 文件数量 3 内容更新频率 4 预计并发用户数 5 是否需要脚本解释器 6 是否涉及大量 CPU 计算 7 是否访问数据库 8 访问数据库的主要操作是读还是写 9 是否包含 RPC 对每种类型的 Web 组件采取不同的优化方式 一种或多种 1 是否使用 epoll 模型 2 是否使用 sendfile syscall 3 是否使用异步 IO 4 是否支持 HTTP 持久连接 http keep alive 5 是否需要 opcode 缓存 6 是否使用动态内容缓存以及有效期为多长 7 是否使用 Web 服务器缓存以及有效期为多长 8 是否使用浏览器缓存以及有效期为多长 9 是否使用反向代理缓存以及有效期为多长 10 是否使用负载均衡策略 按照 Web 组件的不同类型将其放在不同的二级域名 机器 不同类型的 WebServer 同时 还需考虑到不同的浏览器对同一个域名下的访问有多大并发数限制 而 使用多个域名 IE6 7 2 http 1 1 IE8 6 http 1 1 Firefox2 2 http 1 1 Firefox3 6 http 1 1 发挥各自的潜力发挥各自的潜力 对于动态内容 开启 opcode 缓存 使用足够快的 CPU 足够大的内存 多 进程以及与数据库保持高速连接 对于静态内容 支持 epoll 非阻塞 IO 异步 IO 使用 sendfile 单进程 对于 IO 密集型任务 多进程无法发挥优势 使用高速磁盘 使用 RAID 对于 image css and script 分配合理设置其过期时间 expires 八八 分布式缓存分布式缓存 使用分布式缓存避免应用服务器的内存缓存瓶颈 使其更易于扩展 当使 用多台应用服务器时 分布式缓存易于内容共享 九九 数据库性能优化 泛泛而谈 数据库性能优化 泛泛而谈 1 合理的执行计划 包括合理使用索引 2 使用慢查询分析工具 找出执行很慢的 sql 并优化之 3 合理的数据库缓存 索引缓存 数据缓存等 4 更具实际需求选择合理的数据库引擎或数据库 5 反范式化设计 对查询带来优化 但增加写和更新的工作量 6 放弃关系型数据库 针对实际情况 读写要求极高时 数据库扩展 读 写分离 按业务实施合理的垂直分区 对热点表进行水平分区 十十 WebWeb 负载均衡负载均衡 DNS 负载均衡 需要 DNS 服务商提供该功能 且 DNS 记录存在缓存 无法及时修改 带来更新延迟 反向代理负载均衡反向代理负载均衡 HTTP 重定向和 DNS 解析在请求的调度上体现在 转发 上 而其则体 现在 转移 任何对于实际服务器的 http 请求都必须经过调度器 调度器必须等待 实际服务器的 http 响应 并将它反馈给用户 由于调度策略在自己手中 就可以使用诸如按照权重进行调度等策略 也可以对个应用服务器进行健康监控 对无效服务器不在把请求转移给它 还 可以实现 sticky sessions 作为负载均衡调度器的反向代理服务器在扩展上的制约 反向代理服 务器的处理能力制约了整个集群的处理能力 其次 容易出现单点故障 IP 负载均衡 Netfilter IPVS 用 iptables 修改 Netfilter 规则 进行基于 IP 的 tcp 包转发 也即调度 IPVS IP Virtual Server 也成为 LVS Linux Virtual Server 两者结合的具体策略有 1 LVS NAT 2 LVS DR 十一十一 其他其他 内容分发和同步 WebDAV rsync etc 分布式文件系统 分布式计算 十二 性能监控 工具列表工具列表 1 MRTG 网卡流量报告 可以获取实际带宽 Max Speed 它便是从交换 机接收端口获得的最大接收速度 同时也是该主机的最大数据发送速度 2 apache ab 通过 http 进行压力测试 3

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论