2

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).

4

2 回答 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 非常适合负载测试。

http://jmeter.apache.org/

于 2013-06-18T22:41:32.477 回答