没有合适的资源?快使用搜索试试~ 我知道了~
笔者试图模仿其中的结构,分享自己在日常工作中积累的经验点滴。
资源推荐
资源详情
资源评论
.NET 平台网站架构调优实践点滴
真正的高并发高负载的架构并不是由语言来决定,到了最后都是抽象成简单的
结构,最后在各个点之间取得一种平衡。
文/张英刚(《程序员》2008 年 1 月刊)
《程序员》最近出版的《实战 Web2.0》增刊中列出了很多关于高并发高负载的
网站架构,让我们对这些知名 Web 2.0 网站背后神秘的架构得以一窥全豹。我
们可以把这些网站(请参阅《实战 Web 2.0》增刊中的国外篇)分为几个类型。
虽然各个网站有些业务是重叠的,我们还是可以按照所处理的信息重心来考虑分
类:
视频处理:《YouTube 架构》
图片处理:《Flickr 架构》
交易处理:《eBay 网站架构》、《Amazon 的体系结构》
海量信息处理:《Wikimedia 架构》、《Google 架构》、《Digg 网站架构》、
《Wikimedia 架构》、《Twitter 的增容处理》
综合类网站:《MySpace 的成功秘密》、《Facebook 详解》
掩卷之余,笔者试图模仿其中的结构,分享自己在日常工作中积累的经验点滴。
虽然笔者只熟悉微软的.NET 开发环境,也只在微软的平台下涉及到了相关的应
用,但真正的高并发、高负载的架构并不是由语言来决定,到了最后都是抽象成
简单的结构,最后在各个点之间取得一种平衡。本文试图结合笔者遇到的实际情
况与问题,探讨如何优化.NET 平台下的网站架构。
背景
大部分网站开发人员在很长的时间中,一直会遇到硬件资源不够,网站负载上升
的情况。那么当我们使用微软的整套软件架构,在 1 台 Web 服务器、1 台数据
库服务器的状态下,每天到底可以承载多少页面浏览量?目前可以获得的最大数
据是,百合网在系统搭建初期,每天页面浏览量达到 1200 万。当然,系统负载
的功能不同,所能承载的量就会有高有低。根据搜狐博客开发组提供的数据,在
单 Web 服务器单数据库的条件下,最多可以承载每天 300 万页面浏览量。( 当
前搜狐的博客流量已经超过了 3000 万,共有 20 多台服务器,主服务器有 8 台)。
应用到具体环境中时,如何判断当前的服务器已经满负荷了?在完成下面的所有
优化之后(通俗点讲就是所有的应用在单独运行的时候都很快,但是集合在一起
以后,当到达最高负载的时候就会使整个系统都变得很慢的情况下),需要增加
服务器。这个时候,完全没有必要重写代码,最快解决性能问题的方法就是,购
买 1 组服务器(1 台 Web 服务器,1 台数据库服务器),Web 前端做负载均衡,
这时候流量就会被均匀地分配到两组服务器中,数据库方面做失败转移(fail
over),就可以解决当前的性能问题。在燃眉之急解决后,当前情况下,有 2 种
选择方案:
◆ 代码重构,拆分数据库,把访问频繁的数据库应用拆分到不同的服务器上,
使用静态文件和缓存。
◆ 另外一种,既然开发组已经对所需要处理的业务非常了解,问题点也非常了
解,或许可以对系统做 8 到 10 倍的预期,重新开发一套新代码。
那么在这个阶段,如何优化 Web 服务器、数据库、代码(前端和服务器端代码),
以 达 到 能提供较高性能的状态呢?限于篇幅,本文只介绍笔者在 Web 服务器调优
方面的心得体会。
Web 服务器调优
1. 把不同的网站尽量分布在不同的物理磁盘上,充分利用多个磁头进行读写的
能力,根据各个网站的访问频度,规划存放文件的目录,使得磁头能最大并发访
问。
2. 把 IIS 服务器的页交换文件分布到多个物理磁盘上。
3. 应该将 IIS 服务器,设置为独立的服务器,不要让服务器去做域控制器以及
数据库服务器。
4. 关于日志的记录,应该采用文件记录而不是记录到 ODBC 数据源。
5. 为了提高性能和节约资源,应该只运行需要的 TCP/IPЬ议。同时安装有
NetBEUI、TCP/IP 和 IPXЬ议会增加系统负担。
6. 尽量使用硬件的磁盘镜像或硬件的磁盘带区集可以提高磁盘的读取性能(服
务器硬件需支持)。
7. 虽然 SSL 可以提供相当可靠的加密传输。但是所需的额外开销会导致 IIS 服
务器速度下降,尤其是在处理大型文件的时候。所以应该只对确实需要保护的目
录进行 SSL 加密。
8. 调整 Web 服务器时应考虑的注册表项。需要重新启动 IIS 才能使新的
WWW 服务设置生效。
◆ MemCacheSize (IIS 缓存的大小)注册表路径:
HKEY_LOCAL_MACHINESYSTEMCurrentControlSet?ServicesInetInfoP
arameters
数据类型:REG_DWORD
默认值:大约为可用物理内存的一半,以兆字节为单位
范围:0 - 2500MB
目前已经调整为 2500M(2.5G)
◆ MaxPoolThreads (指定为每个处理器创建的 I/O 工作线程的数量,通常,
每个处理器最好不要创建超过 20 个线程)注册表路径:
HKEY_LOCAL_MACHINESYSTEMCurrentControlSet?ServicesInetInfoP
arameters
数据类型:REG_DWORD
默认值:4
范围:0 - 无限制
目前已经调整为 20
◆ ListenBackLog (指定在队列中允许的等待服务器处理的活动连接的最大数
量)注册表路径:
HKEY_LOCAL_MACHINESYSTEMCurrentControlSet?ServicesInetInfoP
arameters
数据类型:REG_DWORD
默认值:15
范围:1 – 250
目前已经调整为 250
◆ ObjectCacheTTL(调整失效时间 )注册表路径:
HKEY_LOCAL_MACHINESystemCurrentControlSetServicesInetInfoPar
ametersObjectCacheTTL=0x8CA0
9. 调整 IIS 占用 CPU 时间 (服务器的 CPU 处理器能力总是有限的。哪一个应
用程序占用处理器的时间最长,谁的性能就能得到最大的提高)。
10. 系统尽量使用物理内存而不是虚拟内存。
]*************************************
理解 REST 软件架构
文/骆古道
一种思维方式影响了软件行业的发展。REST 软件架构是当今世界上最成功
的互联网的超媒体分布式系统。它让人们真正理解我们的网络协议 HTTP 本来面
貌。它正在成为网络服务的主流技术,同时也正在改变互联网的网络软件开发的
全新思维方式。AJAX 技术和 Rails 框架把 REST 软件架构思想真正地在实际中
很好表现出来。今天微软也已经应用 REST 并且提出把我们现有的网络变成为一
个语义网,这种网络将会使得搜索更加智能化。
REST 与 HTTP 协议
REST 软件架构是由 Roy Thomas Fielding 博士在 2000 年首次提出的。他为
我们描绘了开发基于互联网的网络软件的蓝图。REST 软件架构是一个抽象的概
剩余27页未读,继续阅读
资源评论
isealand
- 粉丝: 11
- 资源: 44
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功