淘客熙熙

主题:【建议】谈谈西西河的稳定性问题 -- 兼答雪个 -- Highway

共:💬15
全看分页树展 · 主题
家园 【建议】谈谈西西河的稳定性问题 -- 兼答雪个

前一段西西河不太稳定,原因现在基本上明白了。那就是服务商给西西河的连接数作了限制。其原因大概是西西河流量过大,可能影响了其他一些网站的运行。

经过铁手的努力,www.cchere.net在另外一处开通了。虽然服务商还没有对我们做出任何限制,但西西河另外一个问题暴露出来了,那就是稳定性。我没有Run 任何Benchmark程序,无法定量的指出问题,但就雪个斑竹以及其他一些朋友的观察,西西河上线人数超过400后,系统就感觉不太Smooth了,严重时西西河还会短时间瘫痪。对于大家来说,这是一个稳定性的问题,但导致西西河不稳定的原因却可能是的可扩充性问题。IT界叫做 Scalability.

今天茶博士在给铁手的建议中提出,把西西河划分成几个部分,让其他人在别处Host西西河的一些版面。茶博士的建议非常好,深合IT界最流行的分布式计算的思想(Distributed Computation)。微软所谓的Web Farm, Web Garden以及Server Cluster就是这么个意思。但是分布式计算并不是可以简单应用到每一个程序上的。比如说茶博士在美东Host性感世界,文化百家,铁手继续Host其它版面。这样的方案面临的问题就是如何Share 数据库。通过Internet Share Database 基本是不太可行的,因为那样速度会很慢;如果每个网站各运行一套数据库,那么西西河的许多功能就不工作了,比如文章查询,用户积分统计等等。甚至于你要在两处分别登陆才行。

Share Nothing的程序是最容易使用分布式计算的。像西西河这样中心数据库驱动的网站就不太容易。可行的方案是使用多台Web Server,让这些Server共同分担负载,或是每一个Server负责一部分版面,这些Server通过高速网络和数据库Server紧密连接,共享一个数据库。

文学城基本上是这种结构。他们有一批Web server,IP 地址从66.166.3.21到66.166.3.34。每一个IP对应的Web Server负责一个或几个板块,后台的数据库和这些Web Server相连。这是一种静态(Static) 的负载分担技术,比较简单,容易操作。但缺点也是明显的,比如有一天“几曾回首”突然人满为患,对应的Web Server忙不过来,而其他的Server却帮不上忙,虽然他们当时无事可做。不管怎么说,这种方法使得文学城还能基本应付现在的荷载。

这种方案的假定是现在的扩充性瓶颈是Web Server,而不是Database Server。如果Database Server成为了扩充性的瓶颈,那么我们可以再讨论如何扩充Database Server的性能(Optimizing Index,Using Stored Procedure, Partition Table and so on)。

以上谈论的Scalability的方案叫做Scale Out。另外一种方案做Scale Up。那就是根据系统瓶颈,升级相应的部分。比如增加Server的CPU,增加内存,升级硬盘子系统等等。

这两种方案对于铁手来说有一定的困难。因为我们请别人Host我们的网站,我们无法在硬件设置上提出要求。直到我们有了自己的Server群,我们才可能实现这些想法。这可能是铁手提出资金问题的最主要原因吧!

除去升级/更改硬件设施外,软件上我们还是有一些潜力可以挖掘的。比如说,

1)使用最新的IIS 6.0来Host我们的网站。IIS 6.0和以前的5.0/4.0相比,在体系结构上有很大的突破。服务更加可靠,跟安全,管理的功能更加丰富,性能上也有较大提到。它可以Host 传统的ASP网页,更可以Host最新的ASP.NET网页。铁手可以努力寻找有这样能力的服务商(Windows 2003 上运行的就是IIS 6.0)

2)逐渐从ASP向ASP.NET转移。现在的网页是内嵌VBScript /Jscript的ASP Page,已经是比较过时的技术。如果可能的话,今后要向.NET转移。和ASP相比,ASP.NET的优势是压倒性的。Full-Blown的OO开发语言,强大的开发调试环境,服务完善的Runtime,强大而且灵活的Page Cache能力。。。如果铁手对西西河有长远打算的话,升级到ASP.NET是早晚的事。新的ASP.NET 2.0支持用户端自定义Skin和Theme,那就是说每个西西河的朋友可以按照自己的口味设计自己的西西河,就像现在每个人可以自由变更自己的Windows的Theme一样。

3)如果可能的话(眼下的权宜之计),可以把VBScript里面的一些费时的操作拿出来放到VB里,编译成COM Object。然后在VBScript里面调用 COM。这样做的性能要比纯ASP好不少。如果愿意的话,可以进一步把它写成COM+ Object,这样管理和发布起来会更方便一些,资源的利用上也会更好一些。

我这里已经是半夜2点了,就先写到这里了。如果明天想起来什么再补充!


本帖一共被 2 帖 引用 (帖内工具实现)
全看分页树展 · 主题


有趣有益,互惠互利;开阔视野,博采众长。
虚拟的网络,真实的人。天南地北客,相逢皆朋友

Copyright © cchere 西西河