标签: performance-testing

垃圾收集需要开销帮助

我正在寻找一些关于尝试诊断GC相关问题的指导.

我们正在使用WebSphere Portal在Solaris上进行测试,并且我当前的环境具有7%的垃圾收集开销(这是使用详细的GC计算并通过PMAT运行日志)我应该将此值与另一个以平均值运行的环境进行比较4.5%.env与WebSphere Portal的版本完全相同,JVM大小,参数,自定义变量等.在1小时性能测试期间,我的JVM有20多个分配失败,2个更多完整GC,在GC期间平均暂停时间比其环境高2秒.

您能否就所有相同的配置值和相同的1小时性能测试给出任何可能导致此问题的建议?或其他任何要审查?

谢谢

java garbage-collection performance-testing websphere-portal

6
推荐指数
1
解决办法
1515
查看次数

libaio 引擎是否应该仅与无缓冲 io(直接)一起使用?

我试图使用 fio 工具和 ioengine 作为 libaio 来获取性能数据(简单的 4K 随机读取)。我观察到,如果直接 io 被禁用(direct=0),那么 iops 会急剧下降。当提供 direct=1 时,IOPS 提高了 50 倍!

setup: fio being run from a linux client connected to a PCIe based 
appliance over Fibre Channel.
Run Code Online (Sandbox Code Playgroud)

这是我的 fio 配置文件中的片段:

[global]
filename=/dev/dm-30
size=10G
runtime=300
time_based
group_reporting

[test]
rw=randread
bs=4k
iodepth=16
runtime=300
ioengine=libaio
refill_buffers
ioscheduler=noop
#direct=1
Run Code Online (Sandbox Code Playgroud)

通过此设置,我观察到 iops 约为 8000,当我在上面显示的配置文件中启用 direct=1 时,我看到 iops 跃升至 250K!(对于我正在使用的设置来说这是现实的)

所以,我的问题是如果我们使用 libaio 引擎,使用缓冲 I/O 有什么问题吗?如果我们使用libaio,我们是否必须坚持直接io?

performance-testing

6
推荐指数
1
解决办法
2735
查看次数

在 JMeter 中通过非 GUI 模式绘制结果图

是否有可能在 JMeter 测试中获得下面提到的图形结果,该测试在非 GUI 模式下执行。我可以使用 csv 提取其值,但我们需要在非 GUI 模式下运行测试才能获取仪表板结果。这有什么可能性吗?

在此输入图像描述

performance jmeter listener performance-testing

6
推荐指数
1
解决办法
5155
查看次数

使用 xarray 打开 netcdf 文件时如何禁用缓存?

我正在尝试设置一个性能测试来重复读取具有不同分块配置的 netcdf 文件,以最终确定特定用例的最佳块大小。我遇到的一个问题是,当使用xarray.open_dataset()读取文件时,即使缓存设置为 False,它仍然以某种方式将缓存存储在内存中。我知道这是基于两个指标的情况:

  • 第一次运行时读取总是很慢。
  • 使用RamMap应用程序,我看到即使关闭数据集,打开的文件仍在内存中。

这是我运行的代码:

ds = xr.open_dataset("path/to/netcdf/file", engine='h5netcdf', cache=False)

lat_dim = 2160
lon_dim = 4320
time_dim = 46
read_chunk_size = 2160

data = np.empty((time_dim, lat_dim, lon_dim))
data[0:time_dim, 0:read_chunk_size, 0:read_chunk_size] = \
ds['value'][0:time_dim, 0:read_chunk_size, 0:read_chunk_size]

ds.close()
Run Code Online (Sandbox Code Playgroud)

很明显,我对 xarray 中缓存的理解非常少。因此,如果有人能向我解释它的实际工作原理,以及如何在多运行性能测试中利用它,我将不胜感激。

python caching performance-testing netcdf python-xarray

6
推荐指数
0
解决办法
356
查看次数

Jmeter:如何增加请求中的值

我有一个像波纹管一样的样本请求

{
  "schema": "urn:com.xyx9723.syodhnc:bulk.v1",
  "version": "7-06-26201",
  "msg": [
    {
      "topic": "tags/kdhud/${ID}/sadknnf",
      "ids": [
        {
          "_time": "2107-09-09 13:13:12",
          "id": "TID-2153656--00089312121"
        },
        {
          "_time": "2107-09-09 13:13:12",
          "id": "TID-2153656-00089312122"
        },
        {
          "_time": "2107-09-09 13:13:12",
          "id": "TID-2153656-00089312123"
        },
        {
          "_time": "2107-09-09 13:13:12",
          "id": "TID-2153656-00089312124"
        }
      ]
    }
  ]
}
Run Code Online (Sandbox Code Playgroud)

当涉及到实际测试时,我必须发送带有 100 个 IDS 的请求,其增量值例如 (TID-2153656--00089312121, TID-2153656--00089312122, TID-2153656--00089312123 ....

在 JMeter 中发送请求时如何在请求中提供增量值。

performance jmeter performance-testing

6
推荐指数
1
解决办法
4069
查看次数

Avro 与 Protobuf 性能比较

我编写了一个 JMH 基准测试来比较 java 1.8 中 Avro (1.8.2) 和 Protobuf (3.5.0) 的序列化性能。根据 JMH 的说法,Protobuf 可以在一秒钟内序列化某些数据 470 万次,而 Avro 每秒只能序列化 800k 次。

序列化的测试数据约为 200 字节,我为 Avro 和 Protobuf 生成了架构。

这是我的 Avro 序列化代码,熟悉 Avro 的人可以确保我没有犯一些重大错误吗?

JMH 进行了基准测试,名为 Serialize 的方法。另外,我已将其发布在https://groups.google.com/forum/#!topic/protobuf/skmE78F-XbE

非常感谢

public final class AvroSerialization{

    private BinartEncoder encoder;
    private final SpecificDatumWriter writer;

    public AvroSerialization( ){
         this.writer = new SpecificDatumWriter( AvroGeneratedClass.class );
    }

    //MyDataObject = A pojo that contains the data to be serialized
    public final byte[] serialize( MyDataObject data ){

         ByteArrayOutputStream  out …
Run Code Online (Sandbox Code Playgroud)

java serialization performance-testing protocol-buffers avro

6
推荐指数
1
解决办法
8720
查看次数

如果性能下降太多,是否可以使用 Benchmark.NET 使 CI 构建“失败”?

我有单元测试。如果其中之一失败,我的构建就会失败。

我想将相同的原则应用于性能。我有一系列针对通过库的几个热路径的微基准测试。根据经验,这些领域的放缓对图书馆的整体性能产生了不成比例的影响。

如果有某种方法可以有一些“性能构建”的概念,如果性能回归太显着,它可能会失败,那就太好了。

我曾考虑过不得超过的硬编码阈值。就像是:

Assert.IsTrue(hotPathTestResult.TotalTime <= threshold)

但是将其与绝对值挂钩是硬件和环境相关的,因此很脆弱。

有没有人实现过这样的东西?微软为 Kestrel 做了什么?

performance-testing benchmarkdotnet

6
推荐指数
1
解决办法
923
查看次数

当realm数量达到470左右时,Keycloak基本变得不稳定

我们将 Keycloak 4.8.1.Final 部署在具有两个默认设置的节点的 k8 集群上。后端数据库是 PostgreSQL。

我们正在增加 Keycloak 中的领域数量,以确定 Keycloak 是否可以支持更多领域;这些创作是按顺序完成的。

然而,当领域的数量达到 470 左右时,它使得 keycloak 基本无法使用,管理 GUI 根本不加载,请求执行时间太长。

以下是所用时间的摘要。我们尚未向领域添加任何用户。

+--------------+----------+------------+------------+------------+
|  Operation   | 0 realms | 100 realms | 250 realms | 350 realms |
+--------------+----------+------------+------------+------------+
| Create realm |     1104 |       3739 |       8659 |      11535 |
| Get realm    |      128 |        961 |       3067 |       3853 |
| Get token    |      636 |       1159 |       2714 |       3197 |
| Get roles    |      127 |       1037 …
Run Code Online (Sandbox Code Playgroud)

performance-testing keycloak

6
推荐指数
1
解决办法
1715
查看次数

python locust中的任务权重和顺序

我需要实现下一个逻辑:
1)执行on_start方法(例如login
2)执行下一个任务(task_2)5次
3)之后执行下一个任务(task_3)10次
返回on_start等...
所以最后我需要登录:1,任务_2:5,任务_3:10。(每1次登录5次和10次)
我尝试用下面的代码来实现它:

class MyTaskSet(TaskSequence):
    def on_start(self):
        login()


    @seq_task(1)
    def task_2(self):
        print('Need to be executed 5 times after 1 login')

    @seq_task(2)
    def task_3(self):
        print('Need to be executed 10 times after 1 login')

class LocustUser(HttpLocust):
    host = http://localhost
    task_set = MyTaskSet
Run Code Online (Sandbox Code Playgroud)

性能大师可以帮我解决这个逻辑吗?

python performance-testing locust

6
推荐指数
1
解决办法
4159
查看次数

生成灯塔报告时可以更改用户代理吗?

我正在尝试使用搜索引擎爬虫用户代理(例如 Googlebot)而不是默认的 lighthouse 用户代理通过 lighthouse 运行页面性能报告。我在灯塔中看不到可以指定备用用户代理的任何地方,所以想知道是否可能?

谢谢

google-chrome performance-testing lighthouse

6
推荐指数
1
解决办法
2617
查看次数