[英]Performance Testing for a back-end service in Java
我有一个Java后端服务,我需要测试它的性能。 它没有暴露于网络,也可能永远都没有。 我想知道如何在大量流量(每秒超过10万次调用)下测试此多线程服务(仅是带有公共方法的类)的性能。
如果您要说要由您的程序每秒创建100K +次调用,则可以使用ThreadExecutor创建要在您的调用中测试公共方法的最大线程数。 例如,以下代码使用1000个线程同时调用您的公共方法
ExecutorService executor = Executors.newFixedThreadPool(1000);
List<YourClass> callingList = new ArrayList<YourClass>();
for (int i = 0; i < 1000; i++) {
EntryPoint Impl = new EntryPoint (YourClass);
callingList.add(Impl);
}
private Class EntryPoint implements Callable<Object>{
private YourClass example;
EntryPoint (YourClass class) {
this.example = class;
}
public List onCall() throws InterruptedException {
example.yourPublicMethod();
如果要测量每个线程为每种方法花费的时间,请使用AspectJ作为拦截器。您可以在调用1000个线程的过程中将每个方法花费的时间记录在列表中。最后,您可以再次遍历列表以获取花费的时间每种方法都有。如果您要寻找工具,则可以使用VisualVM或Jconsole。您可以获取有关CPU使用率,内存使用率,线程状态,垃圾收集器,创建的对象数和由对象占用的字节数以及装入的类和对象的信息。还有很多 。
JMeter可以很好地进行负载测试。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.