10种最常见的Web应用程序的性能问题

396 查看

Web应用程序总是不可避免的会发生问题。Neotys公司(法国一家负载测试解决方案提供商)的业务主要是通过网站监控和测试帮助您避免这些问题。但任何地方都可能出问题,有时候你只需要知道去哪找就可以了。因此,我们将您经常碰到的一些性能问题并整理成一个简短的指引。

请务必要记住,解决性能问题的最佳方式就是在其影响用户之前就发现并消除。一个良好的维护计划可以成为你的好帮手。制定停机时间策略,创建冗余和扩展计划。为用户负载在一个月或一年后可能会达到的量级做提前的思考。当然,首先要定期做测试负载并持续监控产品性能。

无论你对网站考虑得如何周全,但是有些问题总是要发生的。下面是一些常见性能问题的原因和解决办法。

问题 1: 糟糕的代码

糟糕的代码会使Web应用程序出现诸如算法低效、内存溢出、以及死锁等问题。软件版本过旧,或是集成了历史遗留的系统同样会拖累性能。确保你的团队成员都在使用适合其岗位的工具 – 从自动化分析到最佳编程实践的代码审查工具。

问题 2:未经优化的数据库

优化好的数据库可以达到很好的安全级别和处理性能,反之,没有优化的数据库可能会拖垮生产环境下的应用程序。索引的缺失会减慢SQL的查询性能,从而使整个网站变慢。一定要用脚本和文件分析检查任何低效的查询。

问题 3:失控的数据增长

数据系统一般会随时间的推移变慢。制定一项计划来管理和监控数据,因为维持数据的增长对高性能的Web应用不可或缺。首先,找出业务中导致数据增长的主因。然后,研究并制定合适的存储解决方案。留意所有数据库、缓存、以及更复杂存储方案的选项。

问题 4:流量峰值

我们通常认为流量的增长是件好事。但是当做完市场推广或是经历了疯狂传播的热门视频后,应用程序如果没有做好相应的准备,任何人都知道流量峰值会造成什么结果。提前准备是关键,同时搭建一个通过模拟用户做监测的预警系统例如 NeoSense。这样一来,你就会提前发现流量增长影响到了业务,从而避免了用户的糟糕体验。

问题 5:糟糕的负载分发

糟糕的分发机制会将新的请求分配到已经当机的服务器,而不是备用待机服务器上,导致服务器响应速度急剧变慢。如果过多的人同时访问同一个服务器,即使这个系统性能远低于瓶颈,还是会造成这样的问题。利用类似NeoLoad的工具测试产品势在必行,它有助于你发现任何薄弱的环节。

问题 6:默认设置

系统必须适当调整。默认设置会让一个新的组件很容易启动并运行,但对真正生产环境中的Web应用程序来说未必适合。检查每一项设定:线程数、内存和权限分配。确保所有的配置参数匹配Web应用程序的要求,而不是仅仅为了方便。

问题 7:DNS,防火墙,网络连接

DNS 查询占用了大部分的网站流量。这也是为什么DNS出了问题会引起很多麻烦,阻止访问者正常访问,抛出错误页面、404、以及错误路径。同样的,网络连接和防火墙的效率也是网站访问能力和性能的关键。使用DNS监控保障措施,以便找出手头的问题。此外还可以修改交换机、检查VLAN标记、以及为不同服务器分配任务。上述也只是解决这类性能的一小部分方法。

问题 8:第三方服务出了问题

如果你的系统依赖了第三方服务,那么有些变慢的问题是你无法掌控的。谁没有经历过由于第三方广告服务缓慢导致页面加载的阻塞呢。如果你的用户碰到了这类问题,必须确定问题是出在你的网站还是第三方。如果一定要用第三方服务,调整网站时尽量减少因第三方服务出问题带来的不利影响。最后,确保线下服务提供商为公司提供明确的性能保障。

问题 9:共享资源和虚拟机

现如今几乎所有的Web应用程序,从扩展到管理再到系统恢复,都依赖于虚拟服务器。可有时候上百个虚拟系统跑在了一个物理的服务器上,结果就会变成一个虚拟机挂掉会影响到所有其它的。毕竟,资源抢夺总是存在的。密切监控系统,当其中一个虚拟机出了问题,你可以很快处理其产生的副作用。

问题 10:多米诺骨牌效应

最后,一定要意识到某一个错误有可能会影响到其它很多你想不到的方方面面。多个问题会纠缠在一起,让人很难确定到底发生了什么。你需要训练团队发现问题根源,通过回溯找到真正的罪魁祸首。你甚至可以考虑Netflix 公司的 Chaos Monkey 模拟策略,通过引入网络异常来探测系统弹性和恢复的能力。

积极主动地解决性能问题

目前你对常见的性能问题有了一个大致印象,事先做更高级别的用户负载测试是非常必要的。看下这些相关文章,阐释了如何搭建高用户负载的服务器。一旦用户开始使用你的网站,就可以利用产品环境中测试(TiP)流程。最后,使用模拟用户脚本来模拟用户导航和购买业务,从而获得反映网站短板的更准确数据。