我们的公司将在本周的黄金时段电视节目中露面,他们告诉我们,我们一次可以在我们的网站上吸引大约200,000位访问者。
我们通常每天只能访问100次,因此我不知道我们是否可以处理那么多的访问量。我们由主持1and1.co.uk
。
有什么预防措施可以防止我们的网站瘫痪?
我们的公司将在本周的黄金时段电视节目中露面,他们告诉我们,我们一次可以在我们的网站上吸引大约200,000位访问者。
我们通常每天只能访问100次,因此我不知道我们是否可以处理那么多的访问量。我们由主持1and1.co.uk
。
有什么预防措施可以防止我们的网站瘫痪?
Answers:
在高流量期间,您的服务器应该能够处理网站访问者提出的所有请求。但是服务器处理的并发连接有一些限制。因此,最好尽快处理页面请求。
在这些情况下,请考虑以下建议:
应用程序级别的改进:
1.最小化HTTP请求以加快页面加载时间。
a)将所有JS文件合并到一个合并的JS文件中,并将所有CSS文件合并在一个合并的CSS文件中。
b)缩小JS和CSS文件的大小,以便减小文件大小并加快下载速度。
c)使用CSS Sprites-当您将大部分或全部图像组合成一个sprite时,您会将多个图像请求变成一个。然后,您只需使用background-image CSS属性显示所需图像的部分。
d)通过延迟加载延迟图像下载,这将有助于减少http请求。
2.准备希望访问更多的轻量级页面:
a)尽可能排除图像或Flash等装饰元素;在网站导航和镶边中使用文本而不是图像,并将大部分内容放入HTML。
b)使用静态HTML页面而不是动态HTML页面;后者给服务器增加了负载。您还可以缓存动态页面的静态输出以减少服务器负载。
服务器级别的改进:
1.通过咨询您的托管服务提供商来减少服务器超时值(不要太低)。
当超时降低时,连接将很快释放,因此服务器将能够处理更多连接。
2.使用 CloudFlare之类的第三方服务进行静态数据缓存,并保护您的网站免受恶意用户和DDOS之类的攻击。
3.升级服务器硬件 -如果需要,升级物理和虚拟内存,增加I / O和进入过程的限制。您的托管服务提供商将能够为您提供更好的帮助。
4.缓存动态代码 -使用APC缓存PHP操作码。
5.负载平衡 -在多个负载平衡服务器之间分配负载。
当采取了所有必需的措施后,现在该检查网站是否已准备好应对巨大的流量高峰。
有一些第三方服务(例如loadimpact.com)提供模拟流量的负载测试。该分析将帮助您了解您的网站可以处理的负载量以及可以改进的负载量。
另外,在流量高峰期,请避免占用大量CPU使用率的操作,例如网站备份cronjobs等。
首先,我建议使用Cloudflare。您可以创建一个免费的基本帐户,该帐户将通过本地数据中心路由流量,以最大程度地减少服务器跳数。Cloudflare还非常适合缓存内容,并具有DDOS保护。
除此之外,请尝试减少服务层中的脂肪。确保您没有任何过分膨胀的数据库查询使您的代码成为瓶颈,或者没有任何可以简化的CPU密集型逻辑。
还尝试缓存所有数据库查询。Redis或Memcache是查询缓存的不错选择。如果您使用的是非编译语言,则需要考虑OpCaching。
但是,最重要的可能是使静态内容(即CSS,JS和图像)尽可能优化。压缩所有Javascript,并尽可能将它们合并到一个文件中。请记住,站点中包含的每个文件都必须经过几次服务器跃点才能到达最终用户。
也不要低估通过压缩图像可以节省多少带宽和加载时间!
最后,考虑使用诸如New Relic之类的工具监视性能。
祝你好运!
资料来源:Alexa称,它是英国第12大最受欢迎网站的开发商之一。
考虑对您的站点进行负载测试。有一些免费工具,如JMeter,The Grinder和Gatling,它们可以模拟大量访问您网站的访客。
通过提前测试繁忙流量的影响,您可以确定所做的任何调整是否有效,如果无效,请查看进一步的调整。
如果您使用的是1and1,则可能正在寻找便宜的托管服务。廉价的托管服务意味着您倾向于在一箱内做所有事情。托管的一个主要痛点是,当您将所有内容托管在同一个盒子中时,您会将资源分配到站点的重要部分:
而成为1and1,则很有可能会使用Plesk或cPanel等控制面板,这意味着您需要多一层争夺资源。还有棺材里最后的钉子?您没有很多资源。您可能只有1个CPU(或虚拟CPU)和很少的RAM(如果您有超过2GB的内存,我会感到惊讶)。
当我们放弃1and1时,我们选择了一个可扩展的托管服务提供商(在本例中为Amazon Web Services),我们做了很多以前无法做到的事情
AWS不是市面上唯一的游戏(Azure,Rackspace等),但请确保1and1可以扩展以满足您的需求。
从我的亲身经历,我知道即使最好的VPS也有其局限性。我要去真正的外行。
我们的体育网站之一托管在VPS上。在巴基斯坦和印度的比赛中,我们收到了超过7万次点击。我们有一个Inmotinghosting VPS,具有4GB RAM和2.something GHz处理能力,1TB带宽,SSD存储以及其他附带的功能。我们还激活了Cloudflare的付费版本。
比赛进行到一半时,网站就关闭了。比赛期间从来没有直播过,我们因此失去了超过70,000的访客。后来,我们知道带宽已被消耗,并且在源主机无法正常工作的情况下,CDN通常是无用的。
课程:除了获得VPS并调整为Cloudflare之类的CND之外,还应最小化页面大小。越小越好。您可以利用页面缓存和代码压缩来处理流量。
您尚未很好地定义“一次全部”。假设您在半小时内看到200,000位唯一身份访问者。那是每秒111个请求,没有考虑点击并打开更多页面的访问者(您想要的,对吗?)。
我要做的第一件事是Google讲述人们处理类似流量的故事。许多人会在自己的博客上写自己的经历,以帮助他人。您会发现,很难找到有关某人在共享主机上执行此操作的故事,这是有原因的。对于初学者,请使用与您的受众最接近的数据中心来研究诸如Digital Ocean或Amazon Web Services之类的解决方案。我同意将所有静态资源卸载到CloudFlare(甚至是免费帐户)是一个好主意。
除此之外,假设计时脚本是动态的,请在页面的顶部和底部添加计时脚本来测试您的代码。假设我对数字的假设是正确的,那么您将需要能够在10毫秒内为每个页面提供服务,以保持任何可接受的性能。如果默认情况下通过SSL服务所有请求,请在风暴过去后将其禁用几天。
同样,200,000个声音听起来很吓人,但请记住,您不必太害怕(尽管您应该有点害怕)。例如,根据本文(SFW),当Paper杂志发布NSFW的Kim Kardashian的照片时,仅用四个中型Web服务器和Amazon ELB来处理负载。我绝对不认为您当前的设置可以解决此问题,但是您不应该确切地需要16个具有48个核的Web服务器,每个服务器都由自己的小型核发电机供电。
最好是拥有具有多群集的专用服务器将解决您的问题