我做了很多工作并进行了扩展工作,发现的是:
每个应用程序负载都是唯一的
诸如添加更多内存,获取另一台服务器,执行y,尝试x之类的通用响应通常使人感到沮丧,而不得不进行复杂的设置。
衡量正确的事情
最大的挑战之一是确定哪些基准很重要。这通常需要退后一步,您必须将自己放在客户的鞋子上。有时,简单的网站设计更改会给Web访问者带来巨大的好处。这就是为什么我喜欢YSlow之类的工具的原因!这更多地侧重于最终用户的体验,而不是服务器级别。一旦确定了适合您站点的基准,就可以开始进行调整。基准可能是页面总加载时间,页面总大小,缓存有效性,站点延迟等。您必须选择对您的应用程序有意义的参数。
螺母和螺栓
您正在跟踪正确的基准,但是从一个很低的水平开始。我喜欢使用sysstat。您可以从sysstat获取大量信息,并帮助您弄清楚哪个系统可能会限制整体应用程序性能。通常,我将性能问题归结为:
使用sysstat和其他工具,您可以开始理清头绪,找到限制性能的系统。
例如,我发现高负载服务器由于其应用程序的配置方式而失败。缓存不佳,静态内容缺少到期标头,使用HTTP vs.file include等都导致应用程序性能下降。解决这些应用程序问题无需更改硬件。在其他情况下,尽管有大量缓存,但我仍然看到磁盘已满。移至更快的磁盘可解决此问题。
冲洗并重复
通常,在应用程序调整期间,您会拉开一个瓶颈,仅找到另一个瓶颈。这就是为什么我建议尝试监视正在调整的内容的原因。
例如,假设您解决了磁盘IO问题,但是您的应用仍然运行缓慢。您可能认为您浪费了您的精力,但是发生的事情是您简单地遇到了另一个瓶颈。通过仔细监视磁盘IO,即使您的重要应用程序性能监视器没有发生变化,您也可以确保改善磁盘IO。
获取正确的工具
确保您使用正确的工具完成工作。监视,测试,基准测试,性能分析和其他优化技术都具有多种工具。找到最适合您情况的工具。
经验法则
虽然每个应用程序都是唯一的,但我确实找到了一些标准的起点:
- 内存数据库爱记忆
- 磁盘raid 10以外的任何东西都可以破坏数据库性能
- 错误的优化-大价值不会转化为大绩效
- 应用程序-将服务器设计不合理归咎于服务器
下一步
如果找不到瓶颈,则添加服务器可能无济于事。要解决磁盘IO,您可能需要其他服务器或SAN。如果您遇到内存瓶颈,则另一台服务器只能通过添加更多RAM来解决问题。与仅向现有服务器添加更多RAM相比,此举的成本相当高。
快速解决
过度部署。当应用程序堆栈出现问题时,我不得不这样做。基本上加载CPU,RAM和磁盘IO(RAID 10、15K SCSI或SSD)。充分利用硬件,然后开始调整。在解决问题之前,这可以使您保持生计。