如何正确编写多线程测试程序

时间:2013-01-09 02:05:22

标签: java multithreading web-services rest

我正在尝试编写一个压力测试程序来打击我们的Web服务器。我正在尝试使用线程来模拟多个人撞到服务器。但是,我遇到的问题是使用1个线程99.9%的时间工作。 2个线程似乎在10-20%的时间内工作,而且任何事情似乎总是失败。

这是我的代码片段,正在尝试生成用于测试的线程:

    public static final MAX = 1; // (or 2, or 100 while testing)
    <snip>
    <snip>

    String newParams = "{ bunch, of, test, parameters }";
    Callable<String> call1;
    ExecutorService pool = Executors.newFixedThreadPool(10);
    Future<String> f1;

    for (int i = 0; i < MAX; i++) {
    //      newParams = newParams + slight changes each iteration for each thread;
        call1 = new HttpPostClass.HttpPost(url, newParams);
        f1 = pool.submit(call1);
    }
    pool.shutdown();

我不知道是不是因为我在循环中重复使用相同的Callable / Future对象,或者这是由于我自己对多线程编程的无知/缺乏经验导致了这个问题。

提前感谢你们给我的任何帮助。

1 个答案:

答案 0 :(得分:0)

如果您想加载测试网络服务器,请查看简单但功能强大的ab:http://httpd.apache.org/docs/2.2/programs/ab.html