我们通常每天只有100次访问,所以我不知道我们能否处理那么多的流量。我们由
1and1.co.uk
托管。是否可以采取任何预防措施来防止我们的网站瘫痪?
#1 楼
在高流量期间,您的服务器应该能够处理网站访问者提出的所有请求。但是服务器处理的并发连接有一些限制。因此,最好尽快处理页面请求。
以下是在这种情况下需要考虑的一些建议,
应用程序级别的改进:
1。最小化HTTP请求以加快页面加载时间。
a)将所有JS文件合并到一个合并的JS文件中,并将所有CSS文件合并在一个合并的CSS文件中。
b)最小化JS和CSS文件,因此文件大小会减少,下载速度也会更快。
c)使用CSS Sprites-当您将大部分或全部图像组合成一个sprite时,您会将多个图像请求变成一个。然后,您只需使用background-image CSS属性显示所需的图像部分。
d)通过延迟加载延迟图像下载,这将有助于减少http请求。
2。准备希望更多访问的轻量级页面:
a)尽可能排除装饰元素,例如图像或Flash;
b)使用静态HTML页面而非动态HTML页面;在网站导航和镶边中使用文本而不是图像,并将大部分内容放入HTML。后者给服务器增加了负载。您还可以缓存动态页面的静态输出以减少服务器负载。
服务器级别的改进:
1。请咨询您的托管服务提供商以减少服务器超时值(不应太低)。
当超时降低时,连接将很快释放,因此服务器将能够处理更多连接。
2。使用CloudFlare之类的第三方服务进行静态数据缓存,并保护您的网站免受恶意用户和DDOS之类的攻击。<br /> 3。升级服务器硬件-如果需要,升级物理和虚拟内存,增加I / O和进入过程的限制。您的托管服务提供商将能够为您提供更好的帮助。
4.缓存动态代码-使用APC缓存PHP操作码。
5。负载平衡-在多个负载平衡服务器之间分布负载。
完成所有必需的操作后,现在该检查网站是否已为流量激增做好准备。
有一些第三方服务(例如loadimpact.com)提供模拟流量的负载测试。该分析将帮助您了解您的网站可以处理多少负载以及可以改善的负载。 。
评论
这些都是与网站相关的事情,非常好!但是,除非您一次有200,000个请求全部命中服务器,否则这可能还不够。作为以前的Web主机,我曾经喜欢建立一个大型硬件缓存,并在整个站点中加载缓存。我还将在多个服务器上复制站点,即使它们是共享的,也可以使用代理或防火墙来实现负载平衡。通常就足够了。大多数人没有意识到最大的瓶颈实际上是HD I / O。增加内存并将其用于Apache和MySQL缓存确实也有帮助。
– closetnoc
2015年1月19日在16:45
欢迎您改善答案! :)
– Nikhil Supekar
15年1月19日在16:48
我喜欢你的答案!我投票赞成。请不要被冒犯。我只是想从虚拟主机的角度指出一些事情。只是一个评论。不是大满贯。再次,您的回答很好!!我经常建议与主机联系,因为这些事情会不时出现,并且主机可以提供一些可以帮助您的选择,而不会花费任何费用。多数房东都很高兴得到关注!对我来说,这是一个简单的过程,因为硬件已经就位。我花了很长时间为这个事件做准备站点。 ;-) 谢谢你的邀请。
– closetnoc
15年1月19日在17:06
没有冒犯。实际上,我们真的可以利用您的服务器硬件经验。
– Nikhil Supekar
15年1月19日在17:17
除了研究信任网络外,我已经退休了十多年。我喜欢做的一件事是增加Apache和MySQL或类似应用程序的缓存,以减少钉住I / O子系统。我在这里做了,它真的可以工作。我还警告说自后备存储以来系统上的内存过多。交换文件等的维护可以从根本上增加I / O请求,而这些请求往往会变慢。有一个最佳的位置,但是我不知道那个最佳位置了。我怀疑您比我更像专家。 ;-)
– closetnoc
15年1月19日在17:35
#2 楼
首先,我建议使用Cloudflare。您可以创建一个免费的基本帐户,该帐户将通过本地数据中心路由流量,以最大程度地减少服务器跳数。 Cloudflare还非常适合缓存内容并具有DDOS保护。除此之外,请尝试减少服务层中的负担。确保您没有任何过分膨胀的数据库查询使代码成为瓶颈,或者没有任何可以简化的占用大量CPU的逻辑。
也尝试缓存所有数据库查询。 Redis或Memcache是查询缓存的不错选择。如果您使用的是非编译语言,则需要考虑OpCaching。
但是最重要的也许是使静态内容(即CSS,JS和图像)尽可能优化。压缩所有Javascript,并尽可能将它们合并到一个文件中。请记住,站点中包含的每个文件都必须经过几次服务器跃点才能到达最终用户。
不要小看压缩图像还能节省多少带宽和加载时间!
最后,考虑使用诸如New Relic之类的工具监视性能。
祝你好运!
来源:Alexa称,它是英国第12大最受欢迎网站的开发人员之一。
#3 楼
考虑对您的站点进行负载测试。有免费的工具,例如JMeter,The Grinder和Gatling,它们可以模拟大量访问者访问您的网站。通过提前测试繁忙流量的影响,您可以确定是否有您所做的调整非常有效,如果没有,请查看进一步的调整。
#4 楼
如果您使用的是1and1,则可能正在寻找便宜的托管服务。廉价的托管服务意味着您倾向于在一箱内做所有事情。托管的一个主要痛点是,当您将所有内容托管在同一个盒子上时,您会将资源分配到站点的重要部分:等)您的数据库(MySQL,PostGreSQL等)
作为1and1,您很有可能会使用Plesk或cPanel等控制面板,这意味着您需要额外一层东西争夺资源。还有棺材里最后的钉子?您没有很多资源。您可能只有1个CPU(或虚拟CPU)和很少的RAM(如果您有超过2GB,我会感到惊讶)。
当我们放弃1and1时,我们选择了一个可扩展的托管服务提供商(Amazon就我们的Web服务而言),我们做了一些以前无法做到的事情
Amazon拥有自己的数据库实例(RDS),因此我们的数据库有足够的资源可供使用。大多数RDBMS系统在RAM上生活和呼吸,这是我们可以得到的很多东西。现在,您还可以配置具有高I / O的SSD,从而减轻了其他DB阻塞点(写入数据)的麻烦。
我们有一个带有2个Web服务器的负载均衡器。有了庞大的数据库后端,我们不需要高端前端,因此我们有了两台低端服务器。
我们切换到了一种可以按需提高完全配置的机器的系统。使用Chef或Puppet之类的工具,您可以轻松添加新的Web服务器,如果操作正确,它对最终用户是100%透明的。 AWS还具有Opsworks,因此您可以将脚本直接构建到AWS中。
根据需要更改实例大小。这是我们的关键。如果数据库陷入困境,我可以在几分钟之内将其降低并重新启动为更大的数据库。是的,这将涉及停机时间,但是几分钟的停机时间比一个极其缓慢的站点的小时数要好。完全害怕停机?将只读副本保留在机翼中,然后将其复制下来,将其切换到更大的实例,升级为母版,这样就可以避免因额外机器而造成的停机。
AWS并非唯一在城镇(Azure,Rackspace等)中进行游戏,但请确保1and1可以扩展以满足您的需求。
#5 楼
请与您的ISP联系,以查看您的带宽是否有上限。如果带宽不足以容纳您期望的流量,请升级您的托管计划。您不想向您的访问者显示“超出带宽限制”消息。#6 楼
从我的亲身经历,我知道即使最好的VPS也有其局限性。我要去的是真正的外行。我们的体育网站之一托管在VPS上。在巴基斯坦和印度的比赛中,我们收到了超过7万次点击。我们有一个Inmotinghosting VPS,具有4GB RAM和2.something GHz处理能力,1TB带宽,SSD存储以及其他附带的功能。我们还激活了付费版本的Cloudflare。
比赛进行到一半时,网站就关闭了。比赛期间它从来没有上线过,我们因此失去了超过70,000的访客。后来,我们知道带宽已耗尽,并且在源主机无法正常工作的情况下,CDN在大多数情况下是无用的。尺寸。越小越好。您可以利用页面缓存和代码压缩来处理流量。
#7 楼
您尚未很好地定义“一次全部”。假设您在半小时内看到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服务器,每个服务器都由自己的小型核发电机供电。
#8 楼
知道这个古老但很好的问题,并希望几年前我能获得有关该主题的良好信息...我们有时会在电视网络上开设(与学校活动相关的)网站。由于我们的预算非常紧张,因此“负载平衡”是解决方案。现在,VPS盒的价格可能非常便宜,我们只需将其中的2-3个内容镜像/复制即可。
看看这篇文章,阅读有关“轮循”的信息。
可以在这里找到有关负载测试的更多信息。
当我们第一次尝试处理峰值时,我们只是将内容放在2-3个VPS盒中,并将其NS放在注册商设置中。
#9 楼
最好是拥有具有多群集的专用服务器将解决您的问题#10 楼
祝您好运,您可以在不到一周的时间内重写您的网站,切换提供商并将内容迁移到CDN。准备大幅度增加流量。尽管如果您当前在1and1.co.uk上运行,则可能没有强大的网络工程师,DBA,程序员和前端优化器团队为您服务。这不太可能发生吗?
您还没有说过您对网站的处理方式,无论它是运行购物车还是可以通过静态方式实现内容。如果是后者,那么如果您将整个站点都刮到静态文件中并发布到常规站点的位置(请先备份当前版本),则可能会幸免于海啸。
您也应该与1and1通话(使用您的信用卡)。
评论
你读过这个吗?我绝对建议启用像CloudFlare这样的服务,以至少处理静态资产。 webmasters.stackexchange.com/questions/14394 / ...您应该尽快与1and1.co.uk通话!他们可以将您的网站移至具有较高cpu / ram /带宽比率的VPS服务之一,从而实现峰值!之后他们可以减少CPU / RAM来节省您的钱
您是否正在与1&1共享托管计划?如果是这样,您确实需要尽快寻找替代解决方案(功能非常强大的VPS或基于云的托管)。我非常怀疑任何共享托管环境都可以处理这种流量。
我曾经是一个虚拟主机。如果大多数主机事先知道,便可以相当轻松地处理此类峰值问题,并且可以为您提供通常不提供的大量选项。这样做的原因是简单的。他们可能手头上有设备,例如硬件缓存,额外的服务器,负载平衡选项,故障转移选项等。其想法是看起来好像它们可以优雅地处理任何事情。这对企业有好处。大多数将免费设置这些选项。这实际上是业务的正常部分。
您想知道有一些工具可以测试服务器的繁重负载。我不知道名字,但很容易找到它们。放大设置,当真实的人出现时,您可以自己进行受控的测试驱动,而无需冒充:)