哪些服务可以帮助网站解决可扩展性/可用性问题?

时间:2011-07-15 11:18:36

标签: database scalability

我运行一个数据密集型网站,CMS通过外包建立。现在作为没有。用户增长越来越慢。它在主要产品发布期间下降。我可以转向什么服务,分析网站的瓶颈和分析SQL查询等?服务可以提供冗余服务器之间的负载分离,为db配置主从等解决方案?我是新手。

1 个答案:

答案 0 :(得分:2)

如果您有一个定制的CMS,您将需要软件工程师来分析问题并提出解决方案;没有现成的解决方案。您正在寻找的工程师需要了解CMS内置的编程语言,并具有Web可扩展性方面的经验。显然,你的外包合作伙伴将是一个很好的候选人......

如果CMS是现成的解决方案,供应商可能会推荐独立于外包合作伙伴的专业服务提供商。

通常,性能/可伸缩性过程是:

  • 了解目标,理想情况下表示为每页的页面生成 第二,必要时细分为页面类型(例如“50 CMS产品 页/秒,20登录/秒“)。建立最大可接受的响应时间(例如平均1秒,最多4秒)。
  • 创建一个您完全理解的测试环境,您可以将其与目标生产系统相关联。测试环境应易于使用,并且可供团队访问;通常我建议使用开发人员工作站或低功耗VM。目的是将瓶颈带到光明,而不是处理大量的流量。
  • 为您的测试环境建立测试目标 - 例如如果“生产”需要处理100页/秒,那么您的测试环境可能只需要处理20页/秒。
  • 将您的应用程序部署到测试环境,并设置一种收集性能信息的方法,例如: CPU,内存,磁盘,网络等。
  • 在测试环境中运行负载测试;增加负载,直到超过响应时间目标。使用监视工具来识别瓶颈。
  • 修复瓶颈
  • 冲洗&重复直至达到绩效目标
  • 将应用程序部署到类似生产的环境 - 类似的容量和体系结构 - 如果你有幸拥有一个。设置监控和性能捕获工具。
  • 运行负载测试,增加负载直到超出性能目标
  • 如果你已达到目标,恭喜!
  • 如果您没有达到目标,则表明您的生产环境与测试环境(通常是数据库)存在不同的瓶颈。找出瓶颈是什么;尝试在您的测试环境中复制。
  • 在测试环境中重新开始测试。

通常,您会发现必须对架构或基础架构进行更改以达到目标;我用过以下内容:   - 在更大的硬件上运行解决方案。   - 引入CDN来卸载流量 - 一些CMS驱动的站点几乎可以完全缓存在CDN上   - 将缓存引入应用程序,理想情况是在页面生成级别,但通常的Web应用程序有许多缓存可以帮助的地方   - 添加更多前端Web服务器(假设应用程序是在构建时考虑到负载平衡)   - 添加更多的数据库服务器(这几乎总是一个主要的干预,除非应用程序的构建考虑到这一点)

负载测试工具可以作为您可以使用的服务(Keynote是我使用过的),或者您可以自己运行的工具(JMeter是我的最爱)。