我们已经建立了一个持续的集成过程,运行单元测试,进行静态代码分析并生成文档.但是,我们希望将其扩展为包括自动性能测试.在这种情况下,我们正在开发.NET Web应用程序.
我们已经使用JMeter(在CI流程之外)进行了一些性能测试,但我不知道这是否是包含在CI流程中的最佳工具?Selenium是一种选择吗?WAPT Pro?
我们应该在哪个级别测试性能?我们应该有一套"性能单元测试"吗?我们应该在类似生产的环境中运行JMeter(或类似的东西),如果任何请求需要> 1秒,则会失败吗?这样的东西不会有太高的变化吗?
那么,你们是否将自动性能测试作为CI的一部分?你测试什么,你使用哪些工具?你的经历是什么样的?
.net continuous-integration selenium jmeter performance-testing
我有一个非常大的CSV文件(8000多项)的URL,我正在阅读CSV数据集配置元素.它填充HTTP请求采样器的路径并使用while控制器进行迭代.
这很好,除了我想要的是让每个用户(线程)从CSV URL列表中选择一个随机URL.我不想要的是每个线程顺序使用CSV项目.
我能够通过带有多个HTTP请求采样器的随机顺序控制器来实现这一点,但是8000多个HTTP采样器确实将jmeter陷入了无法使用的状态.所以这就是我将HTTP Sampler URL放在CSV文件中的原因.但是,我似乎无法将随机顺序控制器与CSV文件数据一起使用.那么如何在每个线程中实现随机CSV数据项选择呢?
我一直在寻找可以帮助我进行负载测试和基准测试的工具.我发现夫妇喜欢:https://github.com/wg/wrk,http://www.joedog.org/siege-home/,https://github.com/rakyll/boom.我想知道是否有人对这些工具有任何经验,并且对这些工具有任何反馈优点和缺点.我的负载压力将包括使用DELETE,PUT,GET,POST ...标头的不同测试用例
谢谢
Visual Studio 2017社区版
我试图了解/使用Performance Profiler的内存使用情况,我认为应用程序中的内存泄漏(带有自定义控件的MVVM).拍摄了三个快照:
然后我将快照#3与快照#1进行了比较.在结果表中,我强加了一个"NewProgressNoteView"的过滤器.以下是扩展顶级Doctor_Desk.Views.NewProgressNoteView实例的结果.值得注意的是'[检测到周期]感觉可疑,但我不知道它究竟意味着什么,或者如何使用这些信息来修复内存泄漏?接下来我该怎么办?
非常感激任何的帮助.
TIA.
我正在使用ApacheBench来获取一些基本的时序信息.很好地满足我的需求.我注意到"-g file"创建了一个制表符分隔文件,每个调用都是一行.但是,我无法确定列的定义.这是我最好的猜测:
starttime:不言自明,这个调用开始的时间
秒:基于数据,我认为这可能是不同格式的"starttime"
ctime:?,对我来说每行的值都是0,所以不知道
DTIME,TTIME,等待:要么DTIME或TTIME或等待似乎是"时,这个呼叫参加了MS"
在AB文档似乎并没有覆盖输出格式.任何人都知道这些列的含义,或者我在哪里可以找到一些文档?
我是一名非常熟练的C#开发人员,但需要开始编写适用于JVM的代码.与C#相比,Java语言功能较差,因此我对Scala提供的功能感兴趣.
然而,当在Scala中听到所有操作符都只是方法时,我开始怀疑对数学繁重计算会产生的性能影响(这对我的团队编写的应用程序类型很重要)
所以我运行了一些简单的基于int的测试,发现Scala比同等的Java代码慢大约30倍.不好!谁能告诉我我做错了什么?或者如何提高scala示例的计算性能以与Java相提并论?
UPDATE1:正如前两个答案所指出的,我是一个超级菜鸟并在IntelliJ IDE中运行它.我不知道如何通过java命令行运行scala应用程序,这可能是IntelliJ问题.感谢帮助人员,在继续执行perf测试之前,我需要调查scala的简单命令行执行,因为IDE给出的结果显然太不准确了.
UPDATE2:Luigi在评论中说他在IntelliJ中获得了相同的时间,所以看起来我的差异不是因为IntelliJ?关于这可能是什么的任何其他想法?我将尝试通过命令行运行并使用我的结果发布更新.
UPDATE3:通过命令行运行后,我得到相同的30倍性能差异.
我的电脑是3核AMD x64 3.4Ghz,运行J2SE 6 jdk 64bit 1.6.0_31,Window7.
这是我的运行时:Java:210ms.
Scala:2000到7400ms(一般是7000范围)
所以,我想问题仍然存在.为什么scala在我的平台上运行得如此之慢?使用java 64bit运行时,还是使用Java 6?
运行时版本:
C:\Users\jason>java -showversion
java version "1.6.0_31"
Java(TM) SE Runtime Environment (build 1.6.0_31-b05)
Java HotSpot(TM) 64-Bit Server VM (build 20.6-b01, mixed mode)
C:\Users\jason>scala
Welcome to Scala version 2.9.1-1 (Java HotSpot(TM) 64-Bit Server VM, Java 1.6.0_31).
Run Code Online (Sandbox Code Playgroud)
更新4,而我的原始测试有30倍的差异,将迭代次数增加到100000000导致差异缩小到大约33%,所以看起来scala仍然被我的机器上的一些未知的初始化成本所支配.我将以最高评级的答案结束这个,因为我认为我们不会发现性能问题,因为没有人除了我看到问题:(
以下是我的示例应用:
//scala
object HelloWorld {
//extends Application {
def main(args: Array[String]) {
println("hello scala")
var total: Long = 0
var i: Long = 0 …Run Code Online (Sandbox Code Playgroud) 我以前主要使用JMeter脚本在网站上进行性能测试.
然而,越来越多的项目使用前端MVC构建,例如AngularJS,当前项目通过角度视图文件,REST调用等加载所有内容.不幸的是,JMeter不执行任何javascript因此我的负载测试返回给我主页只有(400毫秒).实际上,在浏览器中加载实际上需要几秒钟.当我检查响应数据时,由于Angular,它不包含任何数据.
而不是调查网络流量并单独加载每个组件(例如profile.html,notification.html,REST调用等).是否有市场上的产品或我可以遵循的一些最佳情况,类似于执行JMeter脚本,但考虑到javascript执行和由于javascript加载外部资源?
(我不打算描述javascript执行时间.这仍然是测试后面的基础设施是否能够为xyz同时用户服务)
使用GCC编译C程序的默认优化级别是-O0.根据GCC文档关闭所有优化.例如:
gcc -O0 test.c
Run Code Online (Sandbox Code Playgroud)
但是,要检查-O0是否真的关闭了所有优化.我执行了这个命令:
gcc -Q -O0 --help=optimizers
Run Code Online (Sandbox Code Playgroud)
在这里,我有点惊讶.我启用了大约50个选项.然后,我使用以下方法检查了传递给gcc的默认参数:
gcc -v
Run Code Online (Sandbox Code Playgroud)
我懂了:
Using built-in specs.
COLLECT_GCC=gcc
COLLECT_LTO_WRAPPER=/usr/lib/gcc/x86_64-linux-gnu/4.8/lto-wrapper
Target: x86_64-linux-gnu
Configured with: ../src/configure -v --with-pkgversion='Ubuntu 4.8.4-
2ubuntu1~14.04' --with-bugurl=file:///usr/share/doc/gcc-4.8/README.Bugs --
enable-languages=c,c++,java,go,d,fortran,objc,obj-c++ --prefix=/usr --
program-suffix=-4.8 --enable-shared --enable-linker-build-id --
libexecdir=/usr/lib --without-included-gettext --enable-threads=posix --with-
gxx-include-dir=/usr/include/c++/4.8 --libdir=/usr/lib --enable-nls --with-
sysroot=/ --enable-clocale=gnu --enable-libstdcxx-debug --enable-libstdcxx-
time=yes --enable-gnu-unique-object --disable-libmudflap --enable-plugin --
with-system-zlib --disable-browser-plugin --enable-java-awt=gtk --enable-gtk-
cairo --with-java-home=/usr/lib/jvm/java-1.5.0-gcj-4.8-amd64/jre --enable-
java-home --with-jvm-root-dir=/usr/lib/jvm/java-1.5.0-gcj-4.8-amd64 --with-
jvm-jar-dir=/usr/lib/jvm-exports/java-1.5.0-gcj-4.8-amd64 --with-arch-
directory=amd64 --with-ecj-jar=/usr/share/java/eclipse-ecj.jar --enable-objc-
gc --enable-multiarch --disable-werror --with-arch-32=i686 --with-abi=m64 --
with-multilib-list=m32,m64,mx32 --with-tune=generic --enable-checking=release
--build=x86_64-linux-gnu …Run Code Online (Sandbox Code Playgroud) c optimization gcc performance-testing compiler-optimization
目前我正通过Prometheus.io监控码头集装箱.我的问题是我只是得到"cpu_user_seconds_total"或"cpu_system_seconds_total".我的问题是如何将这个不断增加的值转换为CPU百分比?
目前我在查询:
rate(container_cpu_user_seconds_total[30s])
Run Code Online (Sandbox Code Playgroud)
但我不认为它是正确的(与顶部相比).
如何将cpu_user_seconds_total转换为CPU百分比?(就像在顶部)
上下文
我们希望使用"重播"Web服务器访问日志来生成负载测试.我想起了JMeter,因为我最近阅读了关于在云中使用jmeter的博客文章(例如,启动了一些Amazon EC2实例来生成负载)
多年来我听说过JMeter重播访问日志的能力,但在审查这个功能时,我发现了以下内容.
作用:
jsessionId令牌(认为它试图通过IP地址估计会话);才不是:
发布数据对于重新创建实际负载会有很长的路要走.
此外,该文档将访问日志采样器描述为"alpha代码",即使它已有8年历史.它似乎没有积极维护.(这比Gmail的测试版要长.)
HttpPerf
另一篇博客文章向我指出了httpperf工具.我已经开始阅读了它:
摘要
jmeter ×4
performance ×2
.net ×1
angularjs ×1
apachebench ×1
benchmarking ×1
c ×1
cpu-usage ×1
csv ×1
gcc ×1
java ×1
jvm ×1
load-testing ×1
memory-leaks ×1
optimization ×1
prometheus ×1
random ×1
scala ×1
selenium ×1
siege ×1
wrk ×1