微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

在Linux上使用Apache / Varnish / MySQL优化服务器架构

我是一个小型初创公司的服务器管理员,作为一个副业(意味着我不是一个经验丰富的专家),我最近帮助将网站从一台 Windows机器移动到Rackspace上的一组机器上云.

目前网站基准测试大约有600个请求/秒,但考虑到我们分配给它的资源量,我觉得它可能要高得多.

现在我们在8台Web服务器前使用Rackspace云负载均衡器(Apache Zeus).每个Web服务器在512MB云实例上运行Linux,内容由Varnish提供Apache 2后端.

Web应用程序本身就是PHP. Apache在mpm-worker中运行,而PHP在fcgi中运行. PHP APC也已启用.

至于数据库后端,我在Master-Master复制设置中有两个服务于MysqL的4gb服务器实例,其中一半Web服务器指向每个服务器.该应用程序是数据库密集型的,因此拥有如此多的专用于数据库的资源.

性能通常很好,但是我们遇到了现有基础架构无法处理的负载峰值,因此我动态地增加了节点的大小.这很好,但我觉得在我们拥有的特定负载条件下,我不得不在基础设施上投入比我预期的更多的资源来保持网站的快速启动.在我的研究中,似乎我们使用了一个非常罕见的设置,因为有这么多单独的清漆实例,我可能需要探索缓存层的选项.

绘制了当前体系结构的概述here (google docs link)

架空云的定价模型非常线性,这意味着1024mb的服务器实例正好是512mb实例的两倍.因此,我希望在相同数量的资源(成本)下工作时最大化我的表现.

我最初的想法是删除机架空间负载均衡器,而不是在apache后端使用单个清漆实例,并且可能使apache后端为4x 1gb实例而不是8x 512mb实例.负载平衡器的成本非常便宜,因此为了证明用另一个专用服务器替换它,合理的性能增益需要很大.

我已经玩弄了HAProxy和Nginx的想法,但我不想盲目地在生产网站上进行实验.

我的目标是能够在大致相同的硬件分配上提供接近2000 req / s的服务.

编辑:我让mod_pagespeed工作了一段时间,这让我大约100 req / s,但我似乎有很多与它如何与清漆互动的问题.

编辑:Varnish VCL,磁盘是Rackspace Cloud的认值(非san,猜测SATA),目前数据库约为1.5gb.在正常情况下不能交换到磁盘. Apache进程每个大约20mb. php-cgi进程倾向于咀嚼更多资源.

解决方法

我会选择一个高RAM(使用varnish-tools检查清漆RAM使用情况并增加直到罚款)Varnish实例并且没有负载均衡器(或者两个清漆和负载平衡器,你想要高可用性)和尽可能多的apache您需要的服务器…如果您的应用程序受cpu限制(更多服务器)或RAM限制(具有更高MEM的服务器)由您决定.

同时使用缓存设置(可以兑换多长时间)也会有所帮助.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐