2022年大型网站平台优化方案 .pdf
《2022年大型网站平台优化方案 .pdf》由会员分享,可在线阅读,更多相关《2022年大型网站平台优化方案 .pdf(13页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、1. 平台优化方案大型网站,在面对大量用户访问、高并发请求方面,基本的解决方案集中在这样几个环节:使用高性能的服务器、高性能的数据库、高效率的编程语言、还有高性能的 Web 容器。但是除了这几个方面,还没法根本解决大型网站面临的高负载和高并发问题。上面提供的几个解决思路在一定程度上也意味着更大的投入,并且这样的解决思路具备瓶颈, 没有很好的扩展性, 下面我从低成本、 高性能和高扩张性的角度来说说我的一些经验。1.1. HTML 静态化由于效率最高、消耗最小的就是纯静态化的html 页面,所以尽可能使网站上的页面采用静态页面来实现, 这个最简单的方法其实也是最有效的方法。但是对于大量内容并且频繁
2、更新的网站,无法全部手动去挨个实现, 于是出现了常见的信息发布系统 CMS , 信息发布系统可以实现最简单的信息录入自动生成静态页面,还能具备频道管理、权限管理、自动抓取等功能,对于一个大型网站来说,拥有一套高效、可管理的 CMS 是必不可少的。除了门户和信息发布类型的网站,对于交互性要求很高的社区类型网站来说,尽可能的静态化也是提高性能的必要手段,将社区内的帖子、 文章进行实时的静态化,有更新的时候再重新静态化也是大量使用的策略,如Mop 的大杂烩就是使用了这样的策略,网易社区等也是如此。同时,html 静态化也是某些缓存策略使用的手段,对于系统中频繁使用数据库查询但是内容更新很小的应用,可
3、以考虑使用 html 静态化来实现, 比如论坛中论坛的公用设置信息, 这些信息目前的主流论坛都可以进行后台管理并且存储在数据库中, 这些信息其实大量被前台程序调用,但是更新频率很小, 可以考虑将这部分内容进行后台更新的时候进行静态化,这样避免了大量的数据库访问请求。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 1 页,共 13 页 - - - - - - - - - 1.2. 图片服务器分离对于Web 服务器来说,不管是 Apache、IIS 还是其他容器,图片是最消耗资源的,于是
4、有必要将图片与页面进行分离,这是基本上大型网站都会采用的策略,他们都有独立的图片服务器, 甚至很多台图片服务器。 这样的架构可以降低提供页面访问请求的服务器系统压力,并且可以保证系统不会因为图片问题而崩溃,在应用服务器和图片服务器上,可以进行不同的配置优化,比如apache在配置ContentType 的时候可以尽量少支持, 尽可能少的 LoadModule,保证更高的系统消耗和执行效率。1.3. CPU 与 IO 均衡在一个网站提供的所有功能中,有的功能可能需要消耗大量的服务器端IO资源,像下载,视频播放等,而有的功能则可能需要消耗大量的服务器CPU 资源,像视频格式转换, LOG 统计等。
5、在一个服务器集群中, 当发现某些机器上 CPU 和IO的利用率相差很大的时候,例如CPU 负载很高而 IO负责很低,可以考虑将该服务器上的某些耗 CPU 资源的进程换成耗 IO的进程,以达到均衡的目的。均衡每一台机器的 CPU 和IO消耗,不仅可以获得更充分的服务器资源利用,而且还能够支持暂时的过载,遇到突发事件,访问流量剧增的时候,实现得体的性能下降(Graceful performance degradation),而不是立即崩溃。1.4. 读写分离如果网站的硬盘读写性能是整个网站性能提升的一个瓶颈的话,可以考虑将硬盘的读,写功能分开,分别进行优化。在专门用来写的硬盘上, 我们可以在 Li
6、nux下使用软件 RAID-0(磁盘冗余阵列 0级)。 RAID-0在获得硬盘 IO提升的同时,也会增加整个文件系统的故障率它等于RAID 中所有驱动器的故障率之和。 如果需要保持或提高硬盘的容错能力,就需要实现软件 RAID-1,4或5,它们能在某一个(甚至几个) 磁盘驱动器故障之后仍然保持整个文件系统的正常运行,但文件读写效率不如 RAID-0。而专门用来读的硬盘, 则不用如此麻烦, 可以使用普通的服务器硬盘,以降低开销。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 2 页,共
7、 13 页 - - - - - - - - - 一般的文件系统,会综合考虑各种大小和格式的文件的读、写效率,因而对特定的文件读或写的效率不是最优。如果有必要, 可以通过选择文件系统, 以及修改文件系统的配置参数来达到对特定文件的读或写的效率最大化。比如说,如果文件系统中需要存储大量的小文件,则可以使用ReiserFS来替代 Linux 操作系统默认的 ext3 系统,因为ReiserFS是基于平衡树的文件系统结构, 尤其对于大量文件的巨型文件系统, 搜索速度要比使用局部的二分查找法的ext3 快。 ReiserFS里的目录是完全动态分配的, 因此不存在 ext3 中常见的无法回收巨型目录占用的
8、磁盘空间的情况。 ReiserFS里小文件( 4K)可以直接存储进树,小文件读取和写入的速度更快,树内节点是按字节对齐的,多个小文件可共享同一个硬盘块,节约大量空间。 ext3 使用固定大小的块分配策略,也就是说, 不到4K的小文件也要占据 4K的空间,导致的空间浪费比较严重。但ReiserFS对很多 Linux 内核支持的不是很好,如果网站想要使用它,就必须要安装与它配合的较好的内核。ReiserFS还是一个较为年轻的, 发展迅速的文件系统, 它相对于 ext3 来说有一个很大的缺陷就是, 每次ReiserFS文件系统升级的时候, 必须完全重新格式化整个磁盘分区。所以在选择使用的时候,需要权
9、衡取舍。1.5. 数据库集群和库表散列大型网站都有复杂的应用,这些应用必须使用数据库,那么在面对大量访问的时候, 数据库的瓶颈很快就能显现出来, 这时一台数据库将很快无法满足应用,于是需要使用数据库集群或者库表散列。在数据库集群方面,很多数据库都有自己的解决方案,Oracle 、Sybase等都有很好的方案,常用的 MySQL 提供的 Master/Slave 也是类似的方案,使用了什么样的DB ,就参考相应的解决方案来实施即可。上面提到的数据库集群由于在架构、成本、扩张性方面都会受到所采用DB 类型的限制,于是需要从应用程序的角度来考虑改善系统架构,库表散列是常用并且最有效的解决方案。 在应
10、用程序中安装业务和应用或者功能模块将数据库进行分离,不同的模块对应不同的数据库或者表,再按照一定的策略对某个页面或者功能进行更小的数据库散列, 比如用户表, 按照用户 ID进行表散列, 这样就能够低成本的提升系统的性能并且有很好的扩展性。如sohu的论坛就是采用了这样的名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 3 页,共 13 页 - - - - - - - - - 架构,将论坛的用户、设置、帖子等信息进行数据库分离,然后对帖子、用户按照板块和 ID进行散列数据库和表, 最终可
11、以在配置文件中进行简单的配置便能让系统随时增加一台低成本的数据库进来补充系统性能。1.6. 缓存网站架构和网站开发中的缓存也是非常重要。架构方面的缓存, Apache提供了自己的缓存模块,也可以使用外加的Squid模块进行缓存,这两种方式均可以有效的提高 Apache的访问响应能力。网站程序开发方面的缓存,Linux 上提供的Memory Cache 是常用的缓存接口,可以在web 开发中使用,比如用 Java开发的时候就可以调用 MemoryCache 对一些数据进行缓存和通讯共享。另外,在使用 web语言开发的时候,各种语言基本都有自己的缓存模块和方法。1.6.1. 硬盘级缓存硬盘级别的缓
12、存是指将需要动态生成的内容暂时缓存在硬盘上,在一个可接受的延迟时间范围内, 同样的请求不再动态生成, 以达到节约系统资源, 提高网站承受能力的目的。 Linux 环境下硬盘级缓存一般使用Squid cache 。Squid是一个高性能的代理缓存服务器。和一般的代理缓存软件不同,Squid用一个单独的、非模块化的、I/O 驱动的进程来处理所有的客户端请求。它接受来自客户端对目标对象的请求并适当地处理这些请求。比如说,用户通过浏览器想下载(即浏览)一个 web 页面,浏览器请求 Squid为它取得这个页面。 Squid随之连接到页面所在的原始服务器并向服务器发出取得该页面的请求。取得页面后,Squ
13、id再将页面返回给用户端浏览器, 并且同时在 Squid本地缓存目录里保存一份副本。当下一次有用户需要同一页面时,Squid可以简单地从缓存中读取它的副本,直接返回给用户, 而不用再次请求原始服务器。 当前的 Squid可以处理 HTTP ,FTP , GOPHER, SSL和WAIS 等协议。Squid默认通过检测 HTTP 协议头的 Expires 和 Cache-Control 字段来决定缓存的时间。在实际应用中, 可以显式的在服务器端脚本中输出HTTP 头,也可以通过配置apache的mod_expires模块,让 apache自动的给每一个网页加上过期时间。对于静态内容,如图片,视频
14、文件,供下载的软件等,还可以针对文件类型(扩名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 4 页,共 13 页 - - - - - - - - - 展名),用 Squid 的 refresh_pattern 来指定缓存时间。Squid 运行的时候,默认会在硬盘上建两层 hash目录, 用来存储缓存的 Object 。它还会在内存中建立一个Hash Table,用来记录硬盘中 Object 分布的情况。如果Squid配置成为一个 Squid集群中的一个的话, 它还会建立一个 Dige
15、st Table( 摘要表) ,用来存储其它 Squid 上的Object 摘要。当用户端想要的资料本地硬盘上没有时,可以很快的知道应该去集群中的哪一台机器获得。在硬盘空间快要达到配置限额的时候, 可以配置使用某种策略 (默认使用 LRU :Least Recently Used-最近最少用)删除一些 Object ,从而腾出空间。集群中的 Squid Server 之间可以有两种关系:第一种关系是:Child 和Parent 。当 Child Squid Server 没有资料时,会直接向 Parent Squid Server 要资料,然后一直等,直到 Parent 给它资料为止。 第二种
16、关系是: Sibling 和Sibling 。当 Squid Server 没有资料时,会先向 Sibling 的 Squid Server 要资料,如果 Sibling 没资料,就跳过它向 Parent 要或直接上原始网站去拿。默认配置的 Squid, 没有经过任何优化的时候, 一般可以达到 50% 的命中率。如果需要,还可以通过参数优化,拆分业务,优化文件系统等办法,使得Squid达到 90% 以上的缓存命中率。 Squid 处理 TCP 连接消耗的服务器资源比真正的HTTP 服务器要小的多,当 Squid分担了大部分连接,网站的承压能力就大大增强了。1.6.2. 内存级缓存内存级别的缓存
17、是指将需要动态生成的内容暂时缓存在内存里,在一个可接受的延迟时间范围内, 同样的请求不再动态生成, 而是直接从内存中读取。 Linux环境下内存级缓存 Memcached 是一个不错的选择。Memcached 是开发的一套非常优秀的分布式内存对象缓存系统,用于在动态系统中减少数据库负载,提升性能。和 Squid 的前端缓存加速不同,它是通过基于内存的对象缓存来减少数据库查询的方式改善网站的性能,而其中最吸引人的一个特性就是支持分布式部署;也就是说可以在一群机器上建立一堆Memcached 服务, 每个服务可以根据具体服务器的硬件配置使用不同大小的内存块,这样,理论上可以建立一个无限大的基于内存
18、的缓存系统。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 5 页,共 13 页 - - - - - - - - - Memcached 是以守护程序方式运行于一个或多个服务器中,随时接受客户端的连接操作,客户端可以由各种语言编写,目前已知的客户端 API 包括Perl/PHP/Python/Ruby/Java/C#/C 等等。 客户端首先与 Memcached 服务建立连接,然后存取对象。 每个被存取的对象都有一个唯一的标识符 key ,存取操作均通过这个 key 进行,保存的时候
19、还可以设置有效期。保存在 Memcached 中的对象实际上是放置在内存中的, 而不是在硬盘上。 Memcached 进程运行之后, 会预申请一块较大的内存空间, 自己进行管理, 用完之后再申请一块, 而不是每次需要的时候去向操作系统申请。Memcached 将对象保存在一个巨大的Hash 表中,它还使用 NewHash 算法来管理 Hash表,从而获得进一步的性能提升。所以当分配给Memcached 的内存足够大的时候,Memcached 的时间消耗基本上只是网络Socket连接的时间了。Memcached 也有它的不足。首先它的数据是保存在内存当中的,一旦服务进程重启(进程意外被关掉,机器
20、重启等),数据会全部丢失。其次Memcached 以root 权限运行,而且Memcached 本身没有任何权限管理和认证功能, 安全性不足。第一条是 Memcached 作为内存缓存服务使用无法避免的,当然,如果内存中的数据需要保存,可以采取更改Memcached 的源代码,增加定期写入硬盘的功能。对于第二条,我们可以将 Memcached 服务绑定在内网 IP上,通过Linux 防火墙进行防护。1.7. 镜像镜像是大型网站常采用的提高性能和数据安全性的方式,镜像的技术可以解决不同网络接入商和地域带来的用户访问速度差异,比如ChinaNet和EduNet之间的差异就促使了很多网站在教育网内搭
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 2022年大型网站平台优化方案 2022 大型 网站 平台 优化 方案
限制150内