0

我需要一些帮助。目前,我有以下软件包:

2048 MB 80GB RAID 10 磁盘空间 4x 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),甚至没有连接到数据库。

非常感谢你。

4

1 回答 1

1

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

第 1 步:部署 gzip 压缩

这一步非常简单——gzip-compress 输出。

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

这将做的就是为:text/html(默认)、application/xml、application/json 和 text/plain 启用 gzip 压缩。顺便说一句,我假设您正在从 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 上的工作人员数量。

于 2013-04-06T21:03:39.180 回答