昨天网站暂停半天及相关事宜
昨天下午收到了虚拟主机提供商发来的邮件,告知由于我们的网站负载过大,被暂停了。由于当时在外面,无法及时处理,晚上经过接洽,并对网站做了适当的处理,才得以恢复。而在这个过程中,我有一些想法和收获,在这里和大家分享一下。
一、虚拟主机的负载能力
所谓虚拟主机,就是提供商在一台服务器上为众多的客户(网站)提供服务,这些客户的网站共享这一台服务器的所有资源,包括:硬盘空间、内存、CPU和带宽等等。国外的主机提供商在一台服务器上可以放置多达多千个网站。这样,每个客户需要支付的费用经过这样平摊,就变得很低了。
因此,每个网站都不能使用太多的资源,我们现在这个虚拟主机的要求是:服务器上的每个帐号(客户)不能在连续的2分钟内,占用CPU超过25%,如果超过则会暂停网站。在邮件中,列出了当时我们的网站的资源占用情况,在那一个时刻,我们的网站占用了79%的CPU资源。对于我们的网站,CPU资源主要是花费在PHP动态页面上,这79%的资源主要是在同一时刻,有12个php文件被同时访问造成的。注意,这里的“12”的含义不是通常所说的“在线人数”的含义,“在线人数”一般是说在一定时间内,比如15分钟内,访问过的IP数;而这里说的12是操作系统意义上的“并发访问”,是一个瞬间的含义。因此“在线人数”要远远大于“并发访问”数量。
实际上,虚拟主机的质量是很难简单评估的,因为第一:他们不会公布一台服务器上到底会放置多少网站,第二:也不见得放置得少,效果就好。
二、虚拟主机商的服务质量
我们使用的是Hostgator的虚拟主机,我们对其提供的主机是非常满意的,主机稳定性非常好,而且服务非常到位。我们的流量每个月1000多G,这在国内的虚拟主机是很难想象的。更重要的是体现在服务上,这个具体很难量化说明,但是总体来说会感到非常舒服,比如,1:非常透明,这次停机以后,它会给出非常详细的列表说明当时的连接、进程以及CPU占用情况,2:并且他们会做出一定的分析,还给出了一个建议:由于我们的网站使用的是Wordpress系统,他们在邮件中建议使用WP Super Cache插件,我就安装了这个插件,感觉确实非常好,这样绝大多数访问,都由原来的访问动态PHP变为访问静态文件,这样对于CPU的占用,就大大降低了,而且访问速度也会加快。这也说明了一个真理——科技是第一生产力。根据这个插件的开发者的测试,这个插件可以在同样的负载情况下,支撑的访问量增加数倍。对于做网站来说,用尽量少的服务器资源,提供尽量大的支持访问能力,就是生产力,也就是钱哦。
三、令人头疼的下载问题
实际上我们的网站分为两部分,一部分是这个网站系统,即使用的Wordpress系统搭建的这个网站,这部分实际上不是构成负载的主要部分,负载主要是另一部分:提供的视频教程下载。下载是非常耗费资源的。如果不加任何限制,是不可想象的。更严重的问题在于很多人使用各种下载工具,这些下载工具都用同一个原理——多线程分块同时下载。也就是本来下载一个10M文件用一个连接,而这些软件会建立10个到服务器的连接,把这个文件分成10小块同时下载,夏在完成后再拼装成原来的文件。而且往往还会同时下载多个文件,这样,一个用户就会和服务器同时建立10X10=100个连接,这样的话,服务器当时的负担就变得超级大了。如果遇上同时有不止一个人这样做,肯定立即就会超过限制。而且,即使没有超过极限,这样做会使某一个人得到其他访问者100倍的资源,这样当然很不好。理想的状态应该尽可能使所有访问者平均地占用服务器资源。 因此,如果不使用一些限制,是肯定不行的。
四、目前我们使用的限制下载的措施
我们要做的,就是保证每一个访问的人,不要占用太多的连接,以致于影响其他访问者。实际上,如果使用独立的服务器,也就是我们的网站独自使用一台服务器的话,Apache上可以安装一个模块,就可以非常方便地限制每个IP的最大连接数,当超过这个连接数以后,直接拒绝掉超过的连接,这是非常适用于我们的情况的。但是遗憾的是,由于我们使用的是共享的主机,没有权限安装这个模块。那么怎么办呢?只能DIY一下了,自己写了一个PHP程序,来实现这个要求,当然只能部分实现了。
现在我对下载限制的是:
1:在同一个时刻,每个IP只允许有一个连接进行下载,比如说,一个用户正在下载或播放某一个视频教程,那么此时那就无法下载或播放其他视频教程。
这个要求用PHP是可以实现的,只需要把一个下载请求的IP记录在数据库中,对每次来的下载请求先在数据库中查一下,如果已经在下载文件了,那么就拒绝这个IP的请求,当一个下载结束或者人为终止以后,就在数据库中删除这个IP的记录,这是他在访问就被允许了。
但是仅仅这样做还不够,因为还会有很多人使用下载工具,大量并发地发出下载请求,而由于使用了上面第1条措施后,所有的下载请求都会转到一个PHP文件上,这样如果并发的下载请求数量很多的话,就需要服务器创建大量的PHP进程,这也是一个非常大的负担,而且Apache对于同时并发创建的PHP进程数量是有限制的。为此,我们就不得不采取第二个限制措施:
2:对于那些非常疯狂地发出并发下载请求的IP,就只能实施封锁的办法了。
我们经常会观察到一秒钟发出超过10个请求的IP,这些IP就必须要拒绝掉了。我们会记录每一个下载文件的IP在一段时间中发出的请求数量,如果超过一定限额,就封IP了,也就是这个“拒绝”命令直接由web服务器Apache发出,而不再由PHP程序发出。
目前,把疯狂发出下载请求的IP放入黑名单这个功能可以由这个程序自动实现。当然更理想的状态是经过一段时间比如1个小时以后,再自动从黑名单中去掉,这个我没有做到程序里。因此,指使人工地过一段时间把黑名单清空一次。我对PHP所知甚少,没有太多的时间把这个程序做得很复杂了。
当然在设置了上面的限制以后,对一些访问者是有麻烦的,比如在局域网中的不同的人,往往使用同一个对外的IP,这样他们就会被看作是同一个IP而加以限制。但是目前我们也只能这样了。
以后有条件的话,我们会尽可能改善服务期的条件,比如使用独立主机等等,但是还是需要一定的盈利以后,才可以做到。再不赢利的情况下,服务器的投资还无法做到很大。
如果哪位有一些更好的建议,可以告诉我们,谢谢大家两年多以来对前沿科技的支持!
3,278


呵呵,原来是有流量限制的啊,还涉及到负载,不好意思啊,那就请你们慢慢改进吧,我期待贵网站能做大做好,为我们这些学IT的人提供更好更全面的教材,谢谢!
没想到有这么多问题 -_!
青色,
是啊,麻烦事儿多着呢:P
我想问下温老师,一个月1000G的流量,要多少钱啊?太可怕了~~~~
ivy ,
还好,花不了多少钱,一年1000多块钱吧。多了就搞不起了,呵呵。
1、目前优酷上的视频有提供下载,并可以转换多种格式,相当方便;
2、关于网络硬盘刚出了一个叫 大米盘 的声称不限制流量大小并支持下载工具,但似乎不稳定。
但上面两种方法也只能救急,对于贵站的定位(为读者答疑及配套服务)也不可能投入过多成本,关于“宁可不挣钱,不能赔钱”的看法我非常认同。
anyLiv ,
是的,还是要稳定的才行,我们会加油!谢谢您的建议!
老师,我的网站最近打开速度奇慢,进度条一直在走不停。特别是我的blog.不知道怎么回事,还是主机的问题?我用FlashFTP上传东西也慢。打开一个目录也要停顿一会。不信你可以去我的网站试试。
愿远缘渊 ,
昨天晚上我给你回邮件了,我正在对所有会员的网站状况进行一个全面的调查,请尽快回复邮件。
这个99.9%不是因为服务器的问题,而是国内各个地方的网络状况不同,也有会员个人的网络情况。目前给我回复的数据看,其中有两个会员的路由节点都是相同的,但是一个人很慢,另一个人正常,我再继续和速度慢的会员分析具体原因。有结果以后,我会给大家一些统一的建议。
请查收邮件,然后尽快回复!
建议教程可以添加第三方(免费)网盘共享,这样的话,下载自己的空间就不用浪费了。我很就全部下了一分至今保存在电脑里,前不久我把他保存在网盘里面,但是没共享,因为这涉及到作者版权问题。
webjin ,
网盘的下载流量是否没有限制的?比如一个小时3G的下载流量,我估计悬。
作为一般人在网盘上存一点东西,肯定没有问题,但是作为下载服务器,我估计可能不行,如果可以的话,提供网盘的公司不是要赔死了?
前沿科技可以制作一些精品视频教程光盘来销售,我想会很受欢迎的,像中国教程网出品的PS专家讲堂。光盘成本低,可以保证赢利,比如我就很需要这样的教程,或者组织培训之类。只是提个建议,呵呵,希望能有帮助。
罗汉,
其实只要涉及到销售,都是一道槛,迈过去就是一番新天地,不过迈过去也需要一些过硬的东西。
用迅雷下载,超快的感觉
牛牛,
用讯雷的时候不要把重试的频率设定太高就没有问题,有些人设定的一停不停地重试,那就不好了。
相信国外的主机虽然好,但是各种问题处理上也是相当麻烦的问题。。问题的所在,个人认为,无论你去怎么研究验证虚拟机,但是使用的结果,依然是心里渺茫。。。。
所有的主机,没有完全不受限制的,对于CPU,国内一搬限制在2%左右。。你这个老外的能到25%?感觉不可想象了,一个机器,可以查到他放多少个站,不可能给这么高的CPU的,。。。。
贵站发展到这个地位,我想就算自己没有机房,但是自己应该购买自己的单独的服务器托管,应该是没有什么问题的。但是这样远比你目前老外的这个钱多些。(当然,我说的是好的服务器接入商了)。。
但是我想,良好的用户体验,这个价值要比服务器的价值高很多。。。。
自由教程网
无欲无求,
关于服务器的性能:
从性能来说,美国的虚拟主机水平远远高于其他国家的,为什么它的价格可以降到如此之低呢?这是因为规模化产生的结果,美国有很多数据中心,拥有几万台服务器,建在沙漠或者地价不高的地方,一个大机房就像水立方那么大,里面全是服务器和各种配套设施,比如空调、电源等等。一个几百台机器的机房是无法和几万台服务器的机房比较成本的。
关于CPU:
这个25%在国外的虚拟主机是很平常的水平,其他大的提供商,比如Bluehost等等,比这个还要宽松。此外,这个25%并不是永远的,而是有时间限制的,如果长期超过就会被停。就我这两年多的经验,如果不存在下载的问题,比如就是一个一般的CMS系统搭建的网站,用Hostgator的主机每天几千IP绝无问题。当然这要求站长对系统比较熟悉,很多东西是需要优化的,这个差异可差出几倍。
关于独立主机:
我们的原则是可以不挣钱,但是不能赔钱,任何赔钱的东西都不会长久的。就目前而言,我们的网站的瓶颈并不在访问速度上,还是内容不够多,我们现在希望的,还是尽可能提供更多高质量的内容。用户体验有很多方面,独立服务器还是共享的服务器并不直接和用户体相关。我们可以赔人力,比如免费提供我们原创的内容,但是觉不能赔钱,也就是不能作额外的投资。比如现在换成一个独立服务器,增加的无非是一些没有意义的下载量。比如一个读者在线观看了视频教程,这个就是有意义的流量,因为他真正看了,而另一个人哗啦哗啦下载了一堆视频走,这个流量的意义就远低于前者,因为很大的可能性他并没有看。因此,我们首先要保证前者的体验,其次才是后者的。
目前的网站模式来说,我们并不靠这个网站挣钱,主要还是为读者提供答疑和配套的服务,我们目前还想不出合适的盈利模式,如果有好的盈利模式,我们当然也会投入,不过要靠网站内容挣钱还是很难的。我们很排斥广告的方式,另外这种某技术网站,我觉得即使放广告,也不会有什么收益的。最终还是要靠高质量的内容,和增值服务来赢利。