代码改变世界

Windows平台高性能站点手册

2011-12-13 16:20  莫耶  阅读(447)  评论(0编辑  收藏  举报

一、       服务

1、  Web服务与数据库服务分离

2、  图片、样式表、JavaScript等静态内容,单独放置在静态服务器上

3、  对Web做负载均衡,提升系统的可用性和可扩展性

a)         Microsoft Windows Server NLB(网络负载平衡

参考资料:http://tianzt.blog.51cto.com/459544/163800

 

b)         Nginx 参考资料:http://www.xueit.com/html/2009-11-11/34-116884196140.html

Nginx是一款轻量级的Web 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器,兼具负载平衡功能。其特点是占有内存少,并发能力强,事实上nginx的并发能力确实在同类型的网页伺服器中表现较好.目前中国大陆使用nginx网站用户有:新浪、网易、 腾讯,另外知名的微网志Plurk也使用nginx。

Nginx可以处理上万并发,所以绝对是个非常不错的选择。如果网站访问量非常大,可以专门用一台服务器跑Nginx,其它服务器跑网站程序(几台服务器的程序都是一样的),这样负载就没有太大问题,如果再不行,把网站一些栏目做一个2级域名,2级域名同样做负载。

Nginx软件在linux上跑性能比在windows上跑要好,所以做负载可以用linux跑nginx,.net开发的网站放到windows服务器IIS上。

 

4、  代理服务器缓存静态内容/容灾/镜像

a)         Squid

Squid是一款流行的代理服务器和Web缓存服务器。Squid有广泛的用途,从作为网页服务器的前置cache服务器缓存相关请求来提高Web服务器的速度,到为一组人共享网络资源而缓存万维网,域名系统和其他网络搜索,到通过过滤流量帮助网络安全,到局域网通过代理上网。Squid主要设计用于在Unix一类系统运行。

b)         Nginx

Nginx做为HTTP服务器,有以下几项基本特性:

1.处理静态文件,索引文件以及自动索引;打开文件描述符缓冲;

2.无缓存的反向代理加速,简单的负载均衡和容错。

Nginx在功能和性能上全面超越了Squid。

c)         Lighttpd (参考资料: http://spiritfrog.iteye.com/blog/600229

如其名,Lighttpd是一款轻量级的Web服务器软件。

适用场景:在不考虑搭建流媒体服务器的情况下,搭建一个视频播放之用的http server。

二、       数据存储

a)         拥有一名对特定数据库系统通晓的DBA:

一行SQL语句能跑通和能跑得很快,是有很大区别的。

例如,DBA会告诉你,在存储过程中使用sp_executesql 而不是直接写SQL语句跑作业,能提高100倍以上的速度。如下范例:

--直接查询,使用聚集索引查找

SELECT * FROM dbo.test WHERE id=345632;



--使用参数化SQL 执行,避免意外的表扫描

DECLARE @i int;

SET @i = 845632;

DECLARE @SQL NVARCHAR(MAX);

SET @SQL=N'SELECT * FROM dbo.test WHERE id = @i';

EXEC sp_executesql @SQL,N'@i int',@i;

 

b)         列加上索引(聚集索引 和 非聚集索引,

参数资料: http://www.cnblogs.com/qqq88zz/archive/2011/05/17/2048300.html

c)         数据库分区分表,散列(垂直、水平分割,散列,

参考资料:http://blog.csdn.net/dongxiaohui2008/article/details/6583798

d)         减少锁的发生(行级别控制,

参考资料:http://blog.csdn.net/king_idea8848/article/details/4674664

e)         永无止境的优化(查询优化、索引优化、算法优化

参考资料:http://www.cnblogs.com/chuncn/archive/2009/04/21/1440233.html

三、       缓存

高并发的快速解决方案,有时,就是缓存。针对动态数据进行缓存,在数据库和Web服务之间,建立起一道屏蔽,在第一次请求过后,不再请求数据库,尽量避免因高并发带来的数据库死锁情况发生。缓存服务器配合前面介绍的负载与代理软件,能很好的为Web应用减压。

a)         memcached分布式缓存快取系统

(配置资料:http://www.cnblogs.com/luluping/archive/2009/01/14/1375453.html

Memcached是由Danga Interactive开发的,高性能的,分布式的内存对象缓存系统,用于在动态应用中减少数据库负载,提升访问速度。

b)         Apache Cassandra

Apache Cassandra是一套开源分布式Key-Value存储系统。它最初由Facebook开发,用于储存特别大的数据。Facebook目前在使用此系统。

主要特性:

分布式

基于column的结构化

高伸展性

c)         Mongo、Redis、VelocityCache…

四、       站点

a)         参照Yahoo前端优化原则去做(

参考资料:http://www.websbook.com/Operate/Seo/yahoowzdyhyz_20529.html

1、尽量减少HTTP请求个数——须权衡

2、使用CDN(内容分发网络)

3、为文件头指定Expires或Cache-Control,使内容具有缓存性。

4、避免空的src和href

5、使用gzip压缩内容

6、把CSS放到顶部

7、把JS放到底部

8、避免使用CSS表达式

9、将CSS和JS放到外部文件中

10、减少DNS查找次数

11、精简CSS和JS

12、避免跳转

13、剔除重复的JS和CSS

14、配置ETags

15、使AJAX可缓存

16、尽早刷新输出缓冲

17、使用GET来完成AJAX请求

18、延迟加载

19、预加载

20、减少DOM元素个数

21、根据域名划分页面内容

22、尽量减少iframe的个数

23、避免404

24、减少Cookie的大小

25、使用无cookie的域

26、减少DOM访问

27、开发智能事件处理程序

28、用<link>代替@import

29、避免使用滤镜

30、优化图像

31、优化CSS Spirite

32、不要在HTML中缩放图像——须权衡

33、favicon.ico要小而且可缓存

34、保持单个内容小于25K

35、打包组件成复合文本

b)         为IIS搭配一个唤醒模块,解救不幸的第一个访客(参考资料:

http://www.cnblogs.com/shanyou/archive/2010/12/21/1913199.html

c)         将静态服务器配置为Cookieless

五、       测试

针对性能和应用,选择不同的工具做压力测试(参考资料:

http://www.cnblogs.com/junzhongxu/archive/2010/03/02/1676508.html