我需要帮助。目前,我有以下包:
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的数量。