当前位置:  开发笔记 > 编程语言 > 正文

如何检测并生存"Slashdotted"?

如何解决《如何检测并生存"Slashdotted"?》经验,为你挑选了7个好方法。

什么是生存异常高流量峰值的好方法?

我的想法是,在某些触发器,我的网站应该暂时切换到"低带宽"模式:切换到基本HTML页面,最小图形,禁用可能会对数据库施加不必要负载的小部件,等等.

我的想法是:

监控CPU使用情况

监控带宽

监控请求/分钟

编辑:我熟悉缓存,切换到静态内容或内容交付网络等选项作为生存的手段,所以也许问题应该更多地集中在如何检测网站何时会变得超载.(虽然其他生存方法的答案当然仍然非常受欢迎.)让我们说网站在Linux和PHP上运行Apache.这可能是最常见的配置,应该允许最大数量的人从答案中获得帮助.让我们假设购买另一台服务器和负载平衡等昂贵的选项是不可用的 - 至少对于我们大多数人来说,提及Slashdot将是一次千载难逢的事情,而不是我们可以花钱准备的东西.



1> yanchenko..:

    安装munin来监控负载/内存消耗等,并通知过载.

    如果它崩溃,安装monit重新启动apache2

    将nginx安装为apache2前端,它将大量减少重负载下的内存需求



2> Simon Howard..:

值得一提的是,如果您的连接上没有足够的带宽,那么聪明的缓存和低带宽模式将毫无用处,因此请确保与服务器的连接足够胖.例如,不要将其托管在家庭DSL连接上.

我是从被抨击的经历中说出来的.当你无法访问互联网时,这并不好玩,因为成千上万的人同时试图下载你的室友安装在George Foreman烤架内的电脑的照片.没有多少防火墙可以节省您的费用.



3> Phil Christe..:

基础:

    除非您是真正的 Windows大师,否则不要尝试在Windows上托管大容量网站.它可以完成,但这是一个时间与成本问题.

    尽可能使用静态内容(即无数据库查询).

    了解缓存控制标头,并将其正确用于图像和其他静态资产.

    至少,使用Apache,但如果可以,请使用lighttpd或其他高性能网络服务器.

真正的答案:

    真的知道你的SQL,花时间分析慢查询.大多数页面加载不应该需要超过一秒的直接查询.

    确定负载的确切位置.如果它是一个媒体密集的网站,请考虑在其他地方托管内容(如Akamai或其他一些服务).如果它是一个数据库密集的站点,请考虑复制.

    知道哪种复制适合您.如果你有一个读取重量级的站点,标准的MySQL主/从复制应该没问题.如果你有很多写入,你需要某种多主设置,如MySQL Cluster(或调查'级联'或'瀑布'复制).

    如果可以,请避免调用PHP - 即拥有页面的缓存静态(HTML)副本(这是大多数Wordpress缓存插件所做的).与最简单的hello world PHP脚本相比,Apache提供静态文件的速度要快得多.



4> DOK..:

这是一篇关于幸存"闪电人群"的相当冗长但内容丰富的文章.

以下是他们提出的解决方案所处理情况的情景:

在本文中,我们考虑通过我们称之为车库创新者的角色来扩展的问题.车库创新者具有创造力,技术精湛,雄心勃勃.她对Web上的Next Big Thing有一个很好的想法,并使用一些坐在车库里的备用服务器来实现它.该服务已启动并正在运行,不时吸引新访问者,并从广告和订阅中获得微薄的收入.也许有一天,她的网站将获得大奖.也许它会到达Slashdot或Digg的头版; 也许Valleywag或纽约时报会提到它.

我们的创新者可能只获得一次广泛的宣传.如果发生这种情况,成千上万的人将访问她的网站.由于她的想法如此新颖,许多人将成为创收客户并推荐朋友.但闪光的人群众所周知地变幻无常; 如果网站在其负载下崩溃,结果将不会像田园诗般的那样.如果网站第一次不工作,很多人都不会费心回来.尽管如此,如果网站遇到突然的负载峰值,很难证明支付数万美元的资源是合理的.Flash人群既是车库创新者的祸根,也是她的目标.

当代效用计算实现了摆脱这一难题的一种方法.

然后,文章提出了车库创新者可以采取的一些步骤,例如使用存储传送网络和实现高度可扩展的数据库.



5> akraut..:

我重写了几个热门网站引用的所有网址,通过coralCDN重定向.

Apache的一个例子:


RewriteEngine On
RewriteBase /

RewriteCond %{HTTP_USER_AGENT} !^Googlebot
RewriteCond %{HTTP_USER_AGENT} !^CoralWebPrx
RewriteCond %{QUERY_STRING} !(^|&)coral-no-serve$
RewriteCond %{HTTP_REFERER} ^http://([^/]+\.)?digg\.com [OR]
RewriteCond %{HTTP_REFERER} ^http://([^/]+\.)?slashdot\.org [OR]
RewriteCond %{HTTP_REFERER} ^http://([^/]+\.)?slashdot\.com [OR]
RewriteCond %{HTTP_REFERER} ^http://([^/]+\.)?fark\.com [OR]
RewriteCond %{HTTP_REFERER} ^http://([^/]+\.)?somethingawful\.com [OR]
RewriteCond %{HTTP_REFERER} ^http://([^/]+\.)?kuro5hin\.org [OR]
RewriteCond %{HTTP_REFERER} ^http://([^/]+\.)?engadget\.com [OR]
RewriteCond %{HTTP_REFERER} ^http://([^/]+\.)?boingboing\.net [OR]
RewriteCond %{HTTP_REFERER} ^http://([^/]+\.)?del\.icio\.us [OR]
RewriteCond %{HTTP_REFERER} ^http://([^/]+\.)?delicious\.com
RewriteRule ^(.*)?$ http://example.com.nyud.net/$1 [R,L]



6> Jason Baker..:

除非你对它进行压力测试,否则根本无法知道你的网站是否会承受重负荷.使用像围攻这样的东西,看看你的性能问题在哪里.它在内存中增长得太快了吗?是否通过一堆并发连接开始减速?是否开始永远访问数据库?

一旦你知道性能问题在哪里,那就变成了摆脱它们的问题.不幸的是,如果不了解更多关于你的具体情况的话,很难进入更多的细节,但请记住,你在这里谈论的是优化.因此,只有在您知道存在性能问题时才应该采取行动.

而且我认为你不一定只是为一生一次的事件做准备.DOS攻击仍然发生,所以即使你的网站没有被删除,也可以做好准备工作.

在我几乎所有情况下,我能想到的唯一可以帮助你的东西就是如果你gzip你的内容.这将节省大量带宽,所有现代浏览器都会支持它,而不会出现太多的性能问题.



7> Joel Coehoor..:

我认为前提是错误的:你真的很想得到抨击,否则你首先就不会有网站.一个更好的问题是你如何处理额外的流量?甚至那是两个问题:

    您如何在技术上管理额外的服务器负载?

    你如何迎接新用户,以便你可以希望他们中的一些能够坚持下去?

推荐阅读
wangtao
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有