标签: performance-testing

Loadrunner 分析:第 90 个百分位如何高于平均值?

有点困惑。我从我运行的报告中得到了一些 Loadrunner 分析。我是测试新手。我对第 90 个百分位数的理解是,鉴于它采用第 90 个百分位数并排除异常值,它呈现了更真实的情况。尽管我查看的是两份不同的报告,但 90% 的响应时间高于摘要报告中给出的平均响应时间。这怎么可能?

我正在查看交易响应时间(百分位数)的图表以及最后 10% 的增长,因此告诉我采用 90% 应该会看到较短的响应时间。

 Example
Transaction 1

Min 0.012
Avg 1.919
Max 20.935
SD 2.718
90 Percentile 6.412
Run Code Online (Sandbox Code Playgroud)

很多交易或多或少都是这样的。为什么第 90 个百分位数高于平均值?

c performance-testing loadrunner percentile vugen

2
推荐指数
1
解决办法
1万
查看次数

“Rails 生成性能测试”不可用?

我目前正在尝试遵循Ruby on Rails 文档中给出的性能测试教程。但我在第一步就陷入了困境!

当我尝试运行下面给出的命令时,出现错误,

命令:

$ rails generate performance_test homepage
Run Code Online (Sandbox Code Playgroud)

我得到的错误:

Could not find generator 'performance_test'. Maybe you meant 'integration_test', 'resource_route' or 'coffee:assets'
Run Code Online (Sandbox Code Playgroud)

我跑去"rails generator --help"查看可以生成的可能文件,下面是我得到的输出,

Running via Spring preloader in process 9465
Expected string default value for '--jbuilder'; got true (boolean)
Usage: rails generate GENERATOR [args] [options]

General options:
  -h, [--help]     # Print generator's options and usage
  -p, [--pretend]  # Run but do not make any changes
  -f, [--force]    # Overwrite files that already …
Run Code Online (Sandbox Code Playgroud)

ruby ruby-on-rails performance-testing

2
推荐指数
1
解决办法
838
查看次数

如何在加特林中的 StringBody() 中给出随机字符串?

我是加特林工具的新手。

我想在方法中给出一个随机字符串StringBody()。例如,对于 100 个请求,将传递 100 个不同的字符串。

这是我的示例代码:

import io.gatling.core.Predef._
import io.gatling.http.Predef._
import scala.concurrent.duration._
class LoadTest extends Simulation {

  private val csvFeeder = csv("data.csv").random
  val httpConf = http
    .baseURL("http://localhost:5000/sample")   
    .acceptHeader("text/html,application/xhtml+xml,application/json,application/xml;q=0.9,*/*;q=0.8")

  val scn = scenario("load test")
    .feed(csvFeeder)
    .exec(http("request")
    .post("http://localhost:5000/sample")
    .body(StringBody(s"""{"inputData": ${csvFeeder} }""")).asJSON
  setUp(
    scn.inject(
      constantUsersPerSec(50)
      during (10 seconds) randomized).protocols(httpConf))
}
Run Code Online (Sandbox Code Playgroud)

但 CSV 文件中的所有字符串都会被传递。

我的代码有什么问题?我该如何解决?

scala performance-testing gatling

2
推荐指数
1
解决办法
7148
查看次数

是否可以禁用 JVM JIT 循环优化

我有非常简单的 scala 代码:

  def main(): Int = {
    var i: Int = 0
    var limit = 0

    while (limit < 1000000000) {
      i = inc(i)
      limit = limit + 1
    }
    i
  }

  def inc(i: Int): Int = i + 1
Run Code Online (Sandbox Code Playgroud)

我正在使用 JVM JIT 方法内联 inc 方法。当启用内联时,我得到了 2 秒与 4 纳秒的令人惊讶的好例子 - 我想确保或至少验证的是,同时没有循环优化占据宫殿。我看了一下机器代码,看起来没问题

0x000000010b22a4d6: mov 0x8(%rbp),%r10d  ; implicit exception: dispatches to 0x000000010b22a529
0x000000010b22a4da: cmp $0xf8033d43,%r10d  ;   {metadata('IncWhile$')}
0x000000010b22a4e1: jne L0001  ;*iload_3
                               ; - IncWhile$::main@4 (line 7)
0x000000010b22a4e3: cmp $0x3b9aca00,%ebx
0x000000010b22a4e9: …
Run Code Online (Sandbox Code Playgroud)

performance jit jvm scala performance-testing

2
推荐指数
1
解决办法
248
查看次数

Kafka 中的性能测试

有人可以解释一下如何使用 Kafka 测试性能吗?

bin/kafka-consumer-perf-test.sh --topic benchmark-3-3-none \
--zookeeper kafka-zk-1:2181,kafka-zk-2:2181,kafka-zk-3:2181 \
--messages 15000000 \
--threads 1
Run Code Online (Sandbox Code Playgroud)

bin/kafka-producer-perf-test.sh --topic benchmark-1-1-none \
--num-records 15000000 \
--record-size 100 \
--throughput 15000000 \
--producer-props \
acks=1 \
bootstrap.servers=kafka-kf-1:9092,kafka-kf-2:9092,kafka-kf-3:9092 \
buffer.memory=67108864 \
compression.type=none \
batch.size=8196
Run Code Online (Sandbox Code Playgroud)

我不清楚参数是什么以及应该获得的输出是什么。我如何检查是否向 Kafka 主题发送了 1000 条消息、其性能和确认。

performance-testing apache-kafka

2
推荐指数
1
解决办法
2万
查看次数

蝗虫请求统计

我正在考虑使用 Locust 进行一些性能测试。我对 Python 更熟悉,发现 Locust 比 JMeter JMX 更容易阅读。

我习惯使用 JMeter 做的一件事是从多次运行中生成我自己的平均值、90%、95% 和 99% 报告。为此,我编写了一个脚本来解析 JMeter 日志,其中包含每个请求的信息(响应时间、有效负载大小等),然后将所有运行合并到单个数据集中并生成平均值和百分位数。

我似乎找不到一个选项来获得这种级别的详细日志记录。我尝试过 --logfile= 但该文件不包含有关单个请求的任何内容。我尝试过 --csv= ,输出仅包含摘要信息 - 在尝试确定运行组合中的百分位数时无法使用该信息。

有没有办法获取每个请求的详细日志信息?

performance-testing locust

2
推荐指数
1
解决办法
4292
查看次数

加特林循环中基于条件的退出


我试图在加特林请求中实现的步骤:
1. 在循环中点击请求。
2. 将 JSON 响应中的“status”值保存到“respStatus”中
3. 将“respStatus”设置为会话变量“workStatus”
4. 递归检查会话变量“workStatus”的值,并在其值发生变化时退出创造其他任何东西。

这是我的代码。下面这个请求在第一次迭代后停止执行,检查响应正文显示 JSON 响应中“创建”的值在停止时没有改变。代码有什么问题或者有其他替代方法可以实现此目的吗?

.doWhile(session => !session(workStatus).as[String].equal("creating"),"index"){
  exec(http("Request1")
    .get(<URL goes here>)
    .header(<Headers in a map>)
    .check(jsonPath("$..status").saveAs("respStatus")))
    .exec(session => session.set("workStatus","${respStatus}"))
    .pause(10)
}.pause(10)
Run Code Online (Sandbox Code Playgroud)

performance-testing gatling

2
推荐指数
1
解决办法
4097
查看次数

查询“perf.data”文件以获取符号的总原始执行时间

perf曾经用perf record ./application. perf report向我展示了有关它的各种事情。如何显示运行应用程序所需的总时间以及运行特定“符号”/功能的总时间?perf 似乎经常显示百分比,但我想要原始时间,并且它想要“包容性”时间,即包括孩子。

Ubuntu Linux 18.04 上的 perf v4.15.18

optimization performance performance-testing perf

2
推荐指数
1
解决办法
1472
查看次数

如何在 Scrapy 蜘蛛上运行 cProfiler

我在 Scrapy 中有一个蜘蛛,我想检查瓶颈。我还有一些类进入主 Spider 类。我想使用 cProlifer 检查函数执行时间:

if __name__ == '__main__':
    import pstats
    import cProfile
    from pstats import SortKey

    cProfile.run("QuotesSpider(scrapy.Spider)", "output.dat")

    with open('output_time.txt', 'w') as f:
        p = pstats('output.dat', stream=f)
        p.sort_stats('time').print_stats()

    with open('output_calls.txt', 'w') as f :
        p = pstats('output.dat', stream=f)
        p.sort_stats('calls').print_stats()
Run Code Online (Sandbox Code Playgroud)

QuotesSpider(scrapy.Spider)蜘蛛类在哪里。可以理解的是,当使用 运行蜘蛛时scrapy crawl quotes,我收到以下错误:NameError: name 'QuotesSpider' is not defined

如何正确地将 cProfile 与 Scrapy 集成?由于 Scrapy 的请求是异步的,cProfile 是解决这个问题的最佳方法吗?

performance performance-testing scrapy web-scraping

2
推荐指数
1
解决办法
167
查看次数

出于测试目的对函数调用进行计时的最简单方法是什么?

所以我对 Rust 还很陌生,但来自 Python 的我发现这种情况总体来说非常令人困惑。

我喜欢 Python,因为如果你想对一段代码或只是一个函数调用进行计时,它非常容易:

print(timeit('a = "hee hee la le dah"; my_awesome_fn()', number = 1_000, globals=globals()))
Run Code Online (Sandbox Code Playgroud)

然后只需调用python script.py,或者更好的是,只需使用 IDE 中的绿色“运行”按钮即可调用脚本。但我在 Rust 中找不到等效的功能。

我知道 Rust 生态系统中有一个称为基准测试的概念,并且有一些类似的库就是criterion为此目的而存在的。问题是我对高等数学和统计学一无所知(本质上可以把我当作一个无能的白痴),而且我怀疑我能否从这样的框架或工具中受益匪浅。

所以我只是好奇如何tests在 Cargo 中使用来测试 Rust 中的代码块,甚至更好,甚至是函数调用。

例如,假设我在 Rust 中有类似的函数,我想多次调用它,然后检查性能如何变化等:

pub fn my_awesome_fn() {
    trace!("getting ready to do something cool...");
    std::thread::sleep(std::time::Duration::from_millis(500));
    info!("finished!");
}
Run Code Online (Sandbox Code Playgroud)

我怎样才能简单地在 Rust 中计时这个函数my_awesome_fn?我想我正在寻找类似timeitpython 或类似的东西。理想情况下,它应该是直接使用的,并假设我对我正在做的事情一无所知。我很好奇是否有一个现有的库或框架可以用于此目的。

time performance-testing timeit rust

2
推荐指数
1
解决办法
4635
查看次数