协助优化具有高流量的服务器

时间:2013-04-06 20:19:08

标签: nginx webserver fastcgi vps

我需要一些帮助。目前,我有以下方案:

2048 MB 80GB 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),甚至连接到数据库。

非常感谢。

1 个答案:

答案 0 :(得分: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;

所有这一切都将启用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并进入内存。如果您有一个静态页面,那么您应该看到一个显着的增益。 this question对此有很多了解。覆盖它将花费大量时间。

这有两个好处:

  • nginx会经常从内存加载而不是查询apache,从而减轻Apache的负担
  • 由于这个原因,Apache本身将更少地从磁盘和fork工作者读取

完成所有这些后,您应该看到负载减少,可能足以降低Apache上的工作人员数量。