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 / 问题

问题[load-testing](server)

Martin Hope
Christopher Bailey
Asked: 2023-07-19 00:31:37 +0800 CST

负载测试(单个客户端与数千个客户端)

  • 5

您好,服务器故障社区,

我目前正在开发一个 .NET Web API,它利用 MS SQL 作为后端来处理数据并返回简单的结果。为了确保 API 的性能和可靠性,我一直使用 Sendgrid Loader.io 进行负载测试。

在这些负载测试期间,我的目标是并行处理大约 3500 个请求,根据 Loader.io 的说法,这似乎是可以实现的。然而,负载测试是使用 3 或 4 个客户端(服务器)模拟并发请求来执行的。

我的问题是,当我对 3500 个不同的客户端进行测试时,这种负载测试方法是否会在我的服务器上产生相同的结果?

load-testing
  • 1 个回答
  • 30 Views
Martin Hope
deepbluecake123
Asked: 2022-04-11 06:31:05 +0800 CST

重负载测试期间内存使用率非常低

  • 0

我有一个 wordpress 网站,我在上面进行了繁重的负载测试。正如您在下面看到的,CPU 使用率当然很高,但同时 RAM 使用率永远不会高于 0.4%。负载测试不会产生任何错误,但网站的加载时间很长。我担心 RAM 的可用容量并没有真正使用。还是每秒 10000 个客户端的低 RAM 使用率是正常的?

服务器规格:

  • CPU:AMD Ryzen 7 PRO 3700 8 核处理器(16 核)
  • 内存:64 GB
  • 固态硬盘:960 GB NVMe
  • 带宽:1 Gbps
  • 操作系统:Ubuntu 20.04.4 LTS

未激活缓存

top我用命令得到这些结果

top - 14:12:22 up  4:11,  2 users,  load average: 29.49, 16.27, 7.29
Tasks: 467 total, 143 running, 301 sleeping,  23 stopped,   0 zombie
%Cpu(s): 27.6 us, 45.5 sy,  0.0 ni, 24.8 id,  0.0 wa,  0.0 hi,  2.1 si,  0.0 st
MiB Mem :  64306.9 total,  50683.7 free,   7559.5 used,   6063.7 buff/cache
MiB Swap:   7630.0 total,   7630.0 free,      0.0 used.  55881.2 avail Mem

    PID USER      PR  NI    VIRT    RES    SHR S  %CPU  %MEM     TIME+ COMMAND
  37346 nginx     20   0  270356 266728   6364 R  78.1   0.4   2:19.89 nginx
  57982 fibonac+  20   0  355720 153908 105132 S  14.0   0.2   0:03.36 php-fpm
  61772 fibonac+  20   0  353552 150692 105776 S  14.0   0.2   0:01.26 php-fpm
   1524 mysql     20   0 9117616 192712  20468 S  13.6   0.3   1:17.50 mysqld
  57048 fibonac+  20   0  355788 153888 105072 S  13.6   0.2   0:04.08 php-fpm
  59186 fibonac+  20   0  353712 151920 105132 S  13.6   0.2   0:02.86 php-fpm
  61435 fibonac+  20   0  353680 150108 105120 R  13.6   0.2   0:01.66 php-fpm
  57693 fibonac+  20   0  355760 153964 105132 S  13.3   0.2   0:04.53 php-fpm
  59195 fibonac+  20   0  353684 151912 105124 S  13.3   0.2   0:02.86 php-fpm
  51154 fibonac+  20   0  357824 156160 105136 R  12.3   0.2   0:08.10 php-fpm
  51197 fibonac+  20   0  357780 156064 105088 R  12.0   0.2   0:07.05 php-fpm
  58034 fibonac+  20   0  355728 153616 105132 R  11.0   0.2   0:03.17 php-fpm
  51261 fibonac+  20   0  357780 156064 105136 R  10.0   0.2   0:06.74 php-fpm
  52563 fibonac+  20   0  358116 162056 110892 R  10.0   0.2   0:06.62 php-fpm
  57410 fibonac+  20   0  355728 153948 105132 R  10.0   0.2   0:03.86 php-fpm
  59521 fibonac+  20   0  351636 149816 105136 R  10.0   0.2   0:01.98 php-fpm
  60246 fibonac+  20   0  353752 151856 105140 R  10.0   0.2   0:02.70 php-fpm
  51147 fibonac+  20   0  357812 156156 105136 R   9.6   0.2   0:07.93 php-fpm
  51210 fibonac+  20   0  357780 156136 105136 R   9.6   0.2   0:08.08 php-fpm
  51225 fibonac+  20   0  357776 156112 105128 R   9.6   0.2   0:07.47 php-fpm
  51241 fibonac+  20   0  357780 156112 105136 R   9.6   0.2   0:06.95 php-fpm
  51251 fibonac+  20   0  357784 156072 105136 R   9.3   0.2   0:06.92 php-fpm
  51255 fibonac+  20   0  357784 156132 105140 R   9.3   0.2   0:07.43 php-fpm
  57054 fibonac+  20   0  355784 153952 105124 R   9.3   0.2   0:03.91 php-fpm
  57056 fibonac+  20   0  355768 153960 105132 R   9.3   0.2   0:03.85 php-fpm
  59192 fibonac+  20   0  353708 151508 105120 R   9.3   0.2   0:02.73 php-fpm
  61746 fibonac+  20   0  343316 140124 105140 R   9.3   0.2   0:00.74 php-fpm
  51233 fibonac+  20   0  357776 156112 105140 R   9.0   0.2   0:06.65 php-fpm
  51243 fibonac+  20   0  357784 156140 105120 R   9.0   0.2   0:07.97 php-fpm
  55161 fibonac+  20   0  355728 153988 105132 R   9.0   0.2   0:04.28 php-fpm
  57424 fibonac+  20   0  355736 153600 105132 R   9.0   0.2   0:03.30 php-fpm
  59185 fibonac+  20   0  353684 151496 104832 R   9.0   0.2   0:02.73 php-fpm
  51177 fibonac+  20   0  357812 156132 105136 R   8.6   0.2   0:07.17 php-fpm
  57401 fibonac+  20   0  355728 153620 105132 R   8.6   0.2   0:03.25 php-fpm
  51239 fibonac+  20   0  357836 156128 105136 R   8.3   0.2   0:06.93 php-fpm
  54835 fibonac+  20   0  357776 155544 104892 R   8.3   0.2   0:04.93 php-fpm
  61764 fibonac+  20   0  345492 143512 105588 R   8.3   0.2   0:01.07 php-fpm
  50951 fibonac+  20   0  357860 156164 105140 R   8.0   0.2   0:08.77 php-fpm
  51024 fibonac+  20   0  357816 156128 105136 R   8.0   0.2   0:07.97 php-fpm
  51160 fibonac+  20   0  357808 156156 105136 R   8.0   0.2   0:07.45 php-fpm
  54833 fibonac+  20   0  357832 155788 104816 R   8.0   0.2   0:06.09 php-fpm
  57047 fibonac+  20   0  355788 153864 105068 R   8.0   0.2   0:03.91 php-fpm
  59193 fibonac+  20   0  355760 153208 105080 R   8.0   0.2   0:03.08 php-fpm
  63679 fibonac+  20   0  260456 107648  80836 R   8.0   0.2   0:00.24 php-fpm
  63682 fibonac+  20   0  260456 107672  80860 R   8.0   0.2   0:00.24 php-fpm
  51028 fibonac+  20   0  357856 156068 105136 R   7.6   0.2   0:06.58 php-fpm
  53620 fibonac+  20   0  357776 156048 105132 R   7.6   0.2   0:05.68 php-fpm
  54832 fibonac+  20   0  357776 155968 105052 R   7.6   0.2   0:05.61 php-fpm
  55152 fibonac+  20   0  357780 156040 105132 R   7.6   0.2   0:05.36 php-fpm
  57981 fibonac+  20   0  355732 153596 105132 R   7.6   0.2   0:03.30 php-fpm
  58035 fibonac+  20   0  355736 153604 105132 R   7.6   0.2   0:03.29 php-fpm
  59184 fibonac+  20   0  353736 151484 105100 R   7.6   0.2   0:02.47 php-fpm
  59189 fibonac+  20   0  356072 159176 110760 R   7.6   0.2   0:05.38 php-fpm
  63683 fibonac+  20   0  260456 106668  80072 R   7.6   0.2   0:00.23 php-fpm
  51208 fibonac+  20   0  357780 156188 105140 R   7.3   0.2   0:07.25 php-fpm
  51237 fibonac+  20   0  357776 156184 105136 R   7.3   0.2   0:07.43 php-fpm
ubuntu memory wordpress load-testing high-load
  • 1 个回答
  • 215 Views
Martin Hope
PierreJ
Asked: 2021-12-22 01:01:21 +0800 CST

假设平台性能基于 Nginx - ngx_http_stub_status_module

  • 0

Nginx 被放置在我们没有任何洞察力的微服务架构的前面。我们检索由http 存根状态公开的指标,并想计算平台性能的指标:我们不能在负载测试中使用延迟,因为我们想比较地理位置不同的站点。

到目前为止,我们尝试了什么:

  • 计算每单位时间总请求的增量。问题:它不反映性能,所有站点处理相同的请求量(每 100 毫秒 100 个请求)
  • 使用等待连接量规*

*使用此指标,我们观察到不同的行为。两个极端是:

2012服务器(E5-2620 v1,24线程):平均每100ms有68,62个等待连接

2021 服务器(AMD EPYC 7642,96 线程):平均每 100 毫秒 91,96 个等待连接

第一个问题。似乎应该将仪表读取为“越高越好”。为什么?该文档没有提供详细信息,但据我们所知,此处应出现等待答案的连接。或者这个量表是否仅由空闲连接组成(即已经服务的连接)?

第二个问题。在相同的负载测试中,最新服务器上接受/处理的连接指标要高得多(大约两倍)。为什么?两者都服务于由 100 个连接池发送的相同数量的请求。我们看到的是,处理的连接数量在开始时进展非常迅速,根据架构达到不同的上限,之后进展非常线性。我们无法在此图上找到对此行为的任何解释:已处理连接图

performance http load-balancing nginx load-testing
  • 1 个回答
  • 51 Views
Martin Hope
JK Laiho
Asked: 2021-10-27 04:51:18 +0800 CST

用于负载测试期间按需性能监控的轻量级 Linux 工具?

  • 0

我的任务是在几个 Tomcat 测试服务器上测试 ProxySQL,将其性能和资源利用率与当前的 Apache DBCP 连接池进行比较。我有一个粗略的负载测试计划,但我在监控和收集/比较系统级性能指标(CPU、内存、磁盘、网络等)方面的经验几乎为零

我的负载测试将涉及一个 Ansible 剧本,它执行各种准备任务,触发负载测试脚本,最后自行清理。我想添加“分别在负载测试之前和之后开始和停止收集性能指标”,但我不知道应该研究哪些工具。

在我看来,最佳解决方案如下所示:

  • 在 Tomcat 盒子的后台本地运行
  • 简单配置
  • 监控会话可以按需启动和停止
  • 高分辨率(如果需要,每秒收集一次甚至更频繁的指标)
  • 监控运行的结果很容易读入某种图形工具,用于比较不同的负载测试运行。

鉴于这些规格,我正在寻找什么样的选项,无论是监控任务本身还是用于检查它们的图形工具?

linux monitoring load-testing
  • 3 个回答
  • 79 Views
Martin Hope
Dhruv Sehgal
Asked: 2021-06-23 22:17:53 +0800 CST

Linux 服务器不允许超过 2048 个并发连接

  • 1

我尝试从我的 MACOS 对 MQTT 进行负载测试,并且能够成功实现超过 12k 的连接,直到我的带宽耗尽。

我尝试在 GCP 机器上进行相同的测试,一旦打开的端口达到 2048 和 2048 与 MQTT 代理的连接,它就会给我连接超时异常。

连接时,我的 ConnectionTimeout 为 100s(等待 conack)和 KeepAlive = 300s(一旦建立连接)

无论负载测试软件是什么,例如 mzbench、jmeter 和 emqtt-bench,都会发生此问题。所以,我认为这个问题与linux服务器有关。

我不希望实现 100 万个开放连接,而是寻找至少 30K 开放连接。

已经尝试更改 ulimit,这些是我的 ulimit 配置

core file size          (blocks, -c) 0
data seg size           (kbytes, -d) unlimited
scheduling priority             (-e) 0
file size               (blocks, -f) unlimited
pending signals                 (-i) 63887
max locked memory       (kbytes, -l) 64
max memory size         (kbytes, -m) unlimited
open files                      (-n) 102400
pipe size            (512 bytes, -p) 8
POSIX message queues     (bytes, -q) 819200
real-time priority              (-r) 0
stack size              (kbytes, -s) 8192
cpu time               (seconds, -t) unlimited
max user processes              (-u) 200000
virtual memory          (kbytes, -v) unlimited
file locks                      (-x) unlimited

proc 上的 cat 也将最大文件打开为 102400

这些也是我的 sysctl 中设置的值

fs.file-max = 200000
net.core.rmem_max = 16777216
net.core.wmem_max = 16777216
net.ipv4.tcp_rmem = 4096 87380 16777216
net.ipv4.tcp_wmem = 4096 65536 16777216
net.ipv4.tcp_syncookies = 1
net.ipv4.tcp_mem = 50576   64768   98152
net.core.netdev_max_backlog = 2500

编辑:添加了机器详细信息和测试模式

机器类型:n2-highcpu-16(16 个 vCPU,16 GB 内存)

lscpu 的结果

Architecture:          x86_64
CPU op-mode(s):        32-bit, 64-bit
Byte Order:            Little Endian
CPU(s):                16
On-line CPU(s) list:   0-15
Thread(s) per core:    2
Core(s) per socket:    8
Socket(s):             1
NUMA node(s):          1
Vendor ID:             GenuineIntel
CPU family:            6
Model:                 85
Model name:            Intel(R) Xeon(R) CPU
Stepping:              7
CPU MHz:               2800.200
BogoMIPS:              5600.40
Hypervisor vendor:     KVM
Virtualization type:   full
L1d cache:             32K
L1i cache:             32K
L2 cache:              1024K
L3 cache:              33792K
NUMA node0 CPU(s):     0-15
Flags:                 fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ss ht syscall nx pdpe1gb rdtscp lm constant_tsc rep_good nopl xtopology nonstop_tsc cpuid tsc_known_freq pni pclmulqdq ssse3 fma cx16 pcid sse4_1 sse4_2 x2apic movbe popcnt aes xsave avx f16c rdrand hypervisor lahf_lm abm 3dnowprefetch invpcid_single ssbd ibrs ibpb stibp ibrs_enhanced fsgsbase tsc_adjust bmi1 hle avx2 smep bmi2 erms invpcid rtm mpx avx512f avx512dq rdseed adx smap clflushopt clwb avx512cd avx512bw avx512vl xsaveopt xsavec xgetbv1 xsaves arat avx512_vnni md_clear arch_capabilities

测试模式:每秒打开 200 个连接并以恒定速率等待 conack。

linux tcp load-testing gcloud mqtt
  • 1 个回答
  • 172 Views
Martin Hope
derangedhk417
Asked: 2021-01-20 07:41:07 +0800 CST

如何在 azure 上加载测试我的 http 服务器而不自动禁止 IP

  • 0

我有一个在 Microsoft Azure 上运行的 Ubuntu Server VM,我需要进行一些自定义负载测试。我编写了一个 Python 脚本来发出必要的请求。问题是我知道如果我每秒发送太多请求,Azure 会自动阻止我的 IP。我不知道这个门槛是多少。我想在我的本地网络和硬件允许的情况下每秒发送尽可能多的请求。不过,我绝对不想打开支持票来让自己不受限制地连接到服务器。

据我所知,VM 内部的所有内容都已配置,因此我不会被阻止。

load-testing azure
  • 1 个回答
  • 313 Views
Martin Hope
KernelPanic
Asked: 2020-07-21 08:04:41 +0800 CST

这种针对生产的持续流量生成叫什么?

  • 0

我们服务的流量并非完全可预测。为了帮助保持服务略微过度配置,并提前警告因流量增加而导致的任何性能下降,我们维护了一种“连续缓冲负载生成器”。这会在用户流量之上对我们的生产 API 产生持续的负载。如果我们发现服务正在降级,它会自动关闭,理想情况下,我们有一点时间来找出问题并在自然用户流量与导致服务降级的增强流量相匹配之前扩大规模。一旦服务再次稳定,缓冲负载就会重新打开。

虽然我们一直将这种持续的流量生成称为“持续负载测试”,但这似乎是令人困惑的措辞,并且很难区分“实际”负载测试(我将称之为具有定义的开始和结束的实验,加载模式,以及最后的二进制通过/失败结果)。我几乎想将其称为“金丝雀流量”,因为我们会发送额外的流量以在用户遇到问题之前警告我们,但这与业内对金丝雀含义的一般理解不太相符.

这是在负载平衡、自动缩放等之上的附加策略。我们不会尝试在这里替换任何行业标准的流量管理步骤。

我怀疑这是不知道谷歌正确用词的情况,所以:

  • 如果这是其他地方使用的模式,它叫什么?
  • 或者,如果没有其他人这样做,为什么不呢?我完全愿意相信通过其他类型的测试或监控可以更好地获得这个结果。
traffic load-testing traffic-management
  • 1 个回答
  • 52 Views
Martin Hope
jlb
Asked: 2017-01-21 18:30:56 +0800 CST

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

  • 1

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

问题

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

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


背景

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

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

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

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

load-testing stress-testing
  • 2 个回答
  • 115 Views
Martin Hope
zeros-and-ones
Asked: 2017-01-18 10:38:21 +0800 CST

可能的 DOS 攻击或计算机“崩溃”

  • -1

我是一名 dev-ops Web 开发人员,其站点在 AWS 上的负载均衡器后面运行两个 ec2.smalls。

最近我们看到每秒有 3-4 个请求关闭我们的客户网站。

该站点已关闭,并且在多次服务器重新启动和错误日志扫描任何可能导致问题的脚本后不会恢复,即使最近没有推送任何更改。

打开负载平衡器日志记录后,我看到单个页面的 1000 多个请求来自一个 IP 地址。

我们使用 X-forwarded-for 将请求从负载均衡器转发到处理请求的服务器,并使用 .htaccess 规则阻止 IP。

在与客户 IT 通信时,他们被告知负责大量请求的 IP 地址实际上是他们的内部公司机器之一。

负责的机器被远程重启,所有请求都停止了。该网站重新上线。

对此的官方解释是“电脑吓坏了”。

Web 浏览器或 Windows 机器是否可以每秒向负载平衡的网页发出 3-4 个请求并将其关闭 5 小时以上?

以下是请求的样子:

2017-01-14T01:00:46.170447Z west-ssl XX.XXX.XX.XXX:33370 - -1 -1 -1 503 0 0 0 "GET https://www.example.com:443/example/12 HTTP/1.1" "Mozilla/5.0 (Windows NT 6.1; WOW64; Trident/7.0; rv:11.0) like Gecko" ECDHE-RSA-AES128-SHA256 TLSv1.2
load-balancing ddos denial-of-service load-testing amazon-web-services
  • 1 个回答
  • 114 Views
Martin Hope
CMPSoares
Asked: 2016-05-21 11:13:56 +0800 CST

在给定时间段之间记录和重放 HTTP 请求/帖子 (Apache)

  • -1

免责声明:我知道我要问的甚至不接近最佳实践,但由于非常具体的要求,我认为这可能是极少数解决方案之一。

语境:

我们希望完全复制生产环境以进行压力、负载、功能和集成测试。我们已经在生产环境 VM (RHEL6)、Apache 2.4、Tomcat 6、Java 1.6 和 MySQL 5.1 的类似版本中完成了开发所需的部署;还为基础设施的每台服务器构建和复制数据库以进行开发。现在我们希望能够复制 Apache 全天接收的请求流。为了保持请求类型的复杂分布,我们认为可以在生产环境中记录 Apache 在特定时间范围内收到的请求,并在我们的测试环境中重放它。如果可能的话,扩展该分布(例如 100 倍)或循环它。

问题是:

有什么方法可以做到这一点,最好是在 Apache 级别甚至应用程序上,知道每个环境只能与 SSH 通信(这可能不是永久性的)并且防火墙阻止它们通信,因为它们属于不同的组织(官僚是****)。但如果绝对必要,可以对最后两个进行例外处理。此外,该过程是否具有最新的复制或具有超快的过程并不重要。

那么,满足这些要求的最佳解决方案是什么?

load-testing apache-2.4 stress-testing rhel6 tomcat6
  • 1 个回答
  • 742 Views

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