I have a back-end service in Java that I need to test its performance. It is not exposed to web and may never be. I was wondering how I can test this multi-threaded service's (simply a class with public methods) performance under a lot of traffic (100K+ calls per second).
问问题
1221 次
2 回答
4
如果你说你的程序每秒创建 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 使用情况、内存使用情况、线程状态、垃圾收集器、创建的对象数和对象消耗的字节数以及加载的类数和还有很多 。
于 2013-06-19T07:28:33.730 回答
1
JMeter 非常适合负载测试。
于 2013-06-18T22:41:32.477 回答