返回介绍

12.1 Web 应用的性能

发布于 2024-01-21 17:11:03 字数 1537 浏览 0 评论 0 收藏 0

Web 应用负荷过重时会产生哪些问题?面对负荷过重应采取什么对策?选择对策时又应该进行哪些考量呢?接下来我们将了解一下这些问题。

12.1.1 Web 应用面对大量集中请求时会产生哪些问题

当应用服务器接收到的请求增多时,如果一个请求尚未处理完又接到了下一个请求(即两个请求几乎同时到达),那么后一个请求将被加入队列,等待前一个请求处理完毕。即便是可以并行处理多个请求的服务器,一旦到了并行处理数的极限,后到的请求也会被加入队列,等待处理的线程将越来越多。

这种状态会使应用服务器进入高负荷状态,出现 CPU 负担加重、内存空间不足等问题。

高负荷状态下应用可能无法正常运行,或者性能出现明显下降。以第 2 章中编写的 Web 应用为例,这个应用在 Python 的 SimpleHTTPServer 模块的 Web 应用服务器上运行,然而这个服务器是单进程单线程的,无法同时处理多个请求。因此请求集中到达时等待处理的请求会增多,应用性能会下降。

另外,等待队列也是有上限的,具体上限与硬件本身的性能有关。一旦等待数达到上限,新的请求将被视为无法处理的请求,表现为切断连接,请求失败。另外,队列达到上限有时会造成服务器的程序异常停止,导致无法连接服务器。

这些问题在客户端会表现为无法连接、反应慢、频繁报错等。该状态会影响用户对应用的正常使用。

12.1.2 针对高负荷的对策

解决高负荷状态需要哪些对策呢?

高负荷其实可以细分为很多种,不同种的负荷解决方法也不同。比如应用服务器的 CPU 处理能力不足了,结果我们换了一块性能更好的硬盘,这显然无法解决问题。

因此要明确问题所在,选择合适的对策。下面是几种典型问题及其对策。

问题-

解决方法

CPU 占用率高

增加处理的进程和线程数。更换成性能更好的 CPU

硬盘 I/O 负荷高

优化读取、写入数据的方法。更换成性能更好的硬盘。

内存不足

释放被无用程序占用、分配的内存。增加物理内存。

除此之外还有许多解决方法,不过本章将以上述 3 点为中心进行说明。另外,为提高改善性能的效率,需要遵循以下原则。

· 从预期效果最大的方法开始尝试

· 从所需资金、步骤、时间最少的方法开始尝试

· 实施对策前后各评估一次性能

第一条“从预期效果最大的方法开始尝试”是因为如果先采用了效果较小的方法,日后再采用效果较大的方法时,前一个方法的效果会被覆盖掉,这就使前一次的工作成了无用功。

第二条“从所需资金、步骤、时间最少的方法开始尝试”指优先选择性价比高的方法,把成本高成效低的方法摆到次要位置。

第三条“实施对策前后各评估一次性能”是为了掌握该对策的实际效果。评估结果能明确告诉我们成本换来了多少效果。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文