我将从一个事件现场博客,并期望stream量巨大的高峰。 我目前正在使用modphp的apache,去年在交通繁忙的时候死了,我不希望它再次发生。
我正在考虑为wordpress上运行的这个博客设置一个单独的VPS。
我应该使用什么http服务器? apache,lighttpd或者nginx?
哪个在重负荷下performance最好?
AJAX更新的内容将会非常dynamic。
Lighttpd或者nginx可能是正确的方法。 就个人而言,我会selectnginx。
不要忘记大量优化您的应用程序。 使用memcachedcaching查询结果。
进一步的优化可以通过从一个单独的cookie免费域提供您的图像,js和css。 按照该指南中的提示,您也可以顺利完成。
你可以用你的Web服务器来清除静态页面数据。 如果你真的想全力以赴,从CDN服务你的图像,JS和CSS。
取决于您获得(或期望获得)的stream量。 您可能需要考虑多个前端WebNode,在这种情况下,Varnish可以充当一个非常好的负载平衡器。
我已经说过了,我会再说一遍。 如果您预计会出现stream量高峰,并且需要正常运行时间和停机时间,那么您可以使用AutoScaling产品查看Amazon EC2。 这可能比build立自己的解决scheme更有效率,特别是如果您不希望stream量持续一年。
另外,您还没有说过您是使用VPS还是物理机器。 我发现VPS吸取高stream量的网站,因为经常有IO竞争问题,造成高IOwait时间。 对于高可用性,你真的不能打败专用硬件,双网卡,冗余networking基础设施等。
一切都取决于你的预算,我想。
Nginx或lighttpd肯定会下注。 您可以通过使用mpm-worker模块代替prefork来configurationApache,使其更具竞争力。 但是,这需要configurationPHP来使用fastcgi之类的; 这可能是一个聪明的想法本身。
我个人用php-fpm使用nginx运行wordpress,而且速度很快。
无论您select哪个Web服务器,都可以进行一些优化。
在模拟负载下testing设置,以确保它不会掉线。
我们以前有一个约200个虚拟主机(每个客户端1个)的apache2安装程序,它代理了4个负载平衡的后端服务器之一。 我们发现,对于mpm-worker或prefork,Apache2使用了大量的每个连接的非共享内存(20-30 mb ea,总共大约400-500mb,仅用于前端!)(mpm-worker似乎有助于这个数字的倍数是基于maxclients的)我们没有把RAM专门用于大量闲置的前端工作者,并且每周在我们的机器上不断地达到最大负载。
然后,我们将前端转换为nginx。 我已经configuration了最多4096个连接(类似于Apache上的最大客户端),它使用30MB RAM。 它继续运行并在重插条件下提供足够的响应。 我们能够将我们的最大同时请求翻倍。 我们只能在截止date内达到最大负载,即便如此,我们也可以调整后端,为客户提供优先权。
事后看来,使用apache2作为负载平衡器/代理可能是不明智的,但这是我们经过多年的发展而结束的。 我们明显地超过了它,nginx来救援。
请记住,这仅仅是一个轶事的证据,但是你会发现与任何基于事件的服务器(lighttpd或nginx)类似的成功案例,
欢迎来到这个网站。
我很抱歉,如果我让你失望,但你的网站可能会在高负载下再次崩溃。 任何服务器的容量有限。 VPS只有整个服务器的一小部分容量。 而且你不知道你的负荷会变得多高。
内容将会非常dynamic – AJAX更新
请注意,这可以大大增加服务器上的负载; 取决于实施。
要回答你的问题,单独使用nginx或者在Apache前面使用nginx作为代理,就像Espennilsen写的那样,可能是你提到的最好的解决scheme。
CarpeNoctem的build议也是可靠的。 WP超级caching是一个简单的方法加快Wordpress的常见build议。 如果你按照我的build议,那么WP超级caching的好处就减less了。
要真正在预算中获得performance ,您应该:
鱿鱼可以configuration为保持在Wordpress中的完整的网页输出在RAM中,并在给定的时间后从Wordpress'刷新'。 这意味着同一个版本的网页会在短时间内向所有用户提供,而同时Squid可以从RAM提供网页。 这比打击网页服务器并为每个页面请求执行Wordpress要快得多。
设置caching是棘手的,需要一些知识。 在这个领域使用具有以往经验的专业系统pipe理员将是值得推荐的。
我刚刚从apache2 prefork通过fastcgi到nginx php。 真的没有比较,nginx的默认设置只是简单地能够用prefork处理Apache的请求很多次。 我可以用apache2 mpm worker php通过快速cgi,但是我把nginx安装在同一台服务器上,但是有一个不同的端口,在把网站切换到它之前全部testing完了。 我现在可以用mpmworker和fastcgi重做apache2并进行比较。
我的整体思想是,apache2 mpm工人fastcgi会为我工作。
您可以使用http://loadimpact.com进行一些负载testing,其中我的apach2 2设置无法完成20个用户,nginx几乎没有负载完成了50个用户。 顺便说一句,我的设置只有128MB RAM,1GB交换。
你的PHP应用程序将成为所有3个select的瓶颈。 我已经用apachebuild立了数十亿的网站。