协助优化高流量服务器



我需要帮助。目前,我有以下包:

2048 MB80gb RAID 10硬盘空间4倍CPU优先级5000 GB带宽CentOS

(VPS-4)http://www.knownhost.com/vps_packages.html

我的VPS收到了很多流量。一天就有100万的浏览量!

尽管这很酷,但自从热作急剧上升以来,我们一直受到问题的困扰。

我们一开始使用的是SuPHP,它占用的资源越来越多。服务器每隔几天就会停机一次,我们会收到关于运行过多进程的自动电子邮件。

然后我们切换到FastCGI。这个系统运行得很好,我们也不再收到那些邮件了。然而,在高峰期,如果有很多人连接,那么网页不会显示。您必须刷新页面几次才能显示它(听起来好像所有连接槽都被占用了)。

我们目前使用的是NGINX + Apache w/CPANEL + eAccelerator + FastCGI。

忽略当前的设置配置并记住我们正在使用的硬件,你们有什么建议的配置可以最好地支持所有这些命中吗?

请记住,大量的点击发生在一个页面(不要问!)。该页面几乎没有任何PHP(但部分是动态的,所以需要PHP),甚至没有连接到数据库。

在整个过程中,我将修改nginx配置。Apache可以保持原样。

步骤1:部署gzip压缩

这一步很简单- gzip-compress output.

gzip             on;
gzip_min_length  1000;
gzip_proxied     expired no-cache no-store private auth;
gzip_types       text/plain application/xml application/json;

这将使gzip压缩:text/html(默认),application/xml, application/json和text/plain。顺便说一下,我假设你从CDN提供图像。如果没有,也为他们启用。

这应该会降低您使用的带宽,但会通过轻微的CPU成本来抵消这一点。然而,CPU很少是瓶颈——通常,它是带宽和磁盘I/O,特别是在静态站点上,所以我们将努力解决这个问题。

第2步(可选):删除apache

如果你只是提供静态内容,nginx本身是值得的。如果您已经在使用fastCGI,请考虑PHP-FPM,它允许您缩短Apache占用的内存。

步骤3:通过报头缓存

这将通过强制nginx提供的所有页面的本地缓存版本来降低带宽使用。非常酷的东西,因为它将完全防止客户端重新下载他们已经拥有的东西。

expires       24h;
add_header    Cache-Control  public;

这一步还有一个意想不到的好处:apache会得到更少的查询。

第4步:内存页面缓存

这个步骤将把您的页面从磁盘I/O移到内存中。如果您只有一个静态页面,那么通过这样做,您应该会看到显著的增益。这个问题涉及到很多。覆盖它将花费大量的时间。

这样做有两个好处:

  • nginx将更多地从内存加载而不是查询apache,从而减少apache的负载
  • Apache本身,由于这一点,将从磁盘读取和fork工作线程更少

一旦所有这些都完成了,您应该会看到负载的减少,可能足以降低Apache上的worker的数量。

最新更新