AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / server / 问题 / 827670
Accepted
jlb
jlb
Asked: 2017-01-21 18:30:56 +0800 CST2017-01-21 18:30:56 +0800 CST 2017-01-21 18:30:56 +0800 CST

当您使用单台机器产生负载/压力时,会发生什么样的“精简”?

  • 772

这个问题的标题代表了我主要关心的问题,但是如果您继续阅读问题部分之外的内容,您会发现一些关于我们设置的背景......这可能相关/有用,也可能不相关。

问题

我们正在使用Gatling对我们的应用程序进行压力测试,并在单台机器上运行 Gatling 场景。我们发现我们的应用程序能够应对压力工具产生的高负载;但是,它无法应对来自真实用户的相对较低的负载。

我的问题是:当从单台机器/操作系统向应用程序发出并发请求时,与来自多台机器的并发请求(即使用他们的网络浏览器的普通用户)相比,会发生什么样的操作系统/网络级别优化或简化?


背景

我们有一个通过 AJP 位于 Apache 后面的 Tomcat 应用程序,它本身通过端口 80 位于 Citrix Netscaler 后面(我们还计划将 Apache 排除在外,但这是另一回事..)。

我们的应用程序在相对较低的负载下(在 apache 和 tomcat 之间建立了 CLOSE_WAIT 连接)一直处于停止状态,我们正在对其进行负载测试以解决问题。在我们的 SQLServer 实例中发生的死锁非常频繁地出现,因此我们决定从那里开始。为了复制问题并随后测试我们的修复,我们使用单台机器使用 Gatling 生成负载。

刚开始时,我们能够通过使用该工具可靠地复制死锁。在我们进行一些优化之后,死锁消失了,CLOSE_WAIT 连接也消失了。然后,我们将应用程序推到我们非常满意的负载,并且它运行时没有任何重大故障。

不幸的是,当修复应用到生产系统时,我们仍然看到相同的原始行为。这让我想知道压力工具生成的负载是否不能很好地代表现实世界中实际发生的情况,因为它源自单一来源,而不是分布在互联网上的许多不同客户端。

load-testing stress-testing
  • 2 2 个回答
  • 115 Views

2 个回答

  • Voted
  1. Best Answer
    Jason Martin
    2017-01-21T19:03:52+08:002017-01-21T19:03:52+08:00

    单个负载生成器可能会比不同的客户端做得更好。例如,更好地使用 Keepalives。这使得通过更少的连接获得更多的请求。

    如果涉及轮询 DNS,它将倾向于只命中一个 DNS 目的地,而不是将负载分散到所有目的地。一些负载均衡器根据客户端 IP 做出粘性决策,在这种情况下这将是静态的。

    您的负载生成器可能有一个受限的执行池(例如,200 个“用户”),因此响应延迟会导致用户速度变慢,而在现实世界中,您有大量不耐心等待的用户其他用户完成。

    • 1
  2. Dmitri T
    2017-01-24T01:40:50+08:002017-01-24T01:40:50+08:00

    如果没有看到您的 Gatling 测试场景,就很难留下任何东西。只是一个“盲目的镜头”:您的 Gatling 测试不能准确地代表真实用户,即

    • 真正的浏览器下载嵌入页面的外部资源,即图像、脚本和样式,并使用并发线程池来执行此操作。如果您的 Gatling 测试缺少inferHtmlResources方法,则可能是来自 Gatling 的负载远低于坐在真实浏览器后面的真实用户执行的负载
    • DNS缓存。由于 IP 地址在 JVM 级别缓存 DNS 名称,Gatling 可能只命中一个 IP 地址。根据加特林常见问题解答:

      基本上,必须调整 Gatling/JVM 的 DNS 缓存。一个解决方案是添加-Dsun.net.inetaddr.ttl=0到命令行。

    • AJAX 请求。Gatling 不执行客户端 JavaScript,因此如果您的应用程序是基于 XMLHTTP Requests 构建的,则 Gatling 访问页面时不会触发它们。如果您的应用程序使用某种形式的 AJAX,您将需要手动处理它们

    所以我建议参考How To Make JMeter Behave More Like A Real Browser并实现等效的 Gatling 设置,就好像负载测试不代表现实生活中的负载一样,运行这样的测试没有多大意义。

    • 1

相关问题

  • Active Directory 的负载测试工具?

  • 如何在 Linux 上监控硬盘负载?

  • 来自 Domino/Lotus Notes 系统的群发邮件/负载测试/时事通讯

  • 我的网络服务器应该能够处理多少个请求?

  • 负载测试 HTTP 服务器的工具?[复制]

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    新安装后 postgres 的默认超级用户用户名/密码是什么?

    • 5 个回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve