奥巴马医改和 healthcare.gov 网站不断涌现出的灾难性问题,以及遭受的抨击,引发了 AppDynamics ——它是一家业界领先的性能监控公司——对此撰写的一篇深度分析的技术文章。在文章中,AppDynamics 描绘了这样一幅图像:在构建网站过程中使用了幼稚可笑的开发计划。
AppDynamics 指出的缺陷涉及了应用服务器端和客户端的性能问题,以及内部 API 之间不一致的协议。
其测试的方式是基于 Firefox ,使用流行的浏览器定制和调试插件 GreaseMonkey ,注入 AppDynamics 的 JavaScript 代理。
通过分析观测到的响应时间指标,“你会发现,在服务器端和客户端,其综合表现都非常糟糕。”
首先从注册页面开始,分析强调了服务器端和客户端之间各自的响应时间。“该页面需要接近 71 秒来载入,其中 59 秒应该归咎于服务器端;而接近 12 秒应该归咎于客户端的数据载入和渲染。”
但分析否认道:“没有访问服务器端以测量响应时间,或是访问所有将服务器端与客户端连接在一起的网段来测量延迟,我们就无法完全确定为何客户端如此缓慢。我们都知道应该进行 JS 和 CSS 优化,但如果服务器端和 / 或网络连接非常缓慢,那么其影响就会呈现在在最终用户的浏览器中。”
下一步,依照网站的工作流测试了是个人档案页面,它在加载结束时呈现为空白页。这是由于某些不正确的 Ajax 请求:“这种糟糕的 Web 应用表现会把最终用户逼疯。尽管看起来页面成功载入了(至少对浏览器来说是这样),但实际上并非如此。”
接下来该文章解释道,Ajax 响应返回了 HTTP 503 状态码(“服务不可用”),意味着 HTTP 服务器能够接到请求,但由于服务器端的一些问题,无法对此做出任何响应。
文章总结的一些建议如下:
- 纠正功能整合错误。文章提出了这样的设想:“显然,在没有恰当的监控和测试的情况下, Healthcare.gov 就发布了。而这正是一个导致许多用户交互出现失败、抛出异常,以及保险公司收到不完整数据记录表的主要原因。”
- 识别并解决扩展性方面的瓶颈。“需要快速找出软件中的性能瓶颈,并对其进行调优。”
文章指出,“这并不是一个罕见的问题。我们发现许多公司一次又一次重蹈覆辙,他们最终找到我们寻求帮助,以解决其应用性能缺陷。”
在最后,AppDynamics 免费向奥巴马政府提出了一项有助于解决该网站问题的建议:“我们认为美国人民应该享有一套功能合适的、不会浪费他们时间的系统;而且现代化的、服务为导向的应用架构,需要一些针对在这些复杂环境中使用而特别设计的监控工具。有鉴于此,AppDynamics 将随时响应政府需求以提供帮助。”
评论