java线程和测量延迟

hi3rlvi2  于 2021-07-11  发布在  Java
关注(0)|答案(0)|浏览(171)

关闭。这个问题需要更加突出重点。它目前不接受答案。
**想改进这个问题吗?**通过编辑这篇文章更新这个问题,使它只关注一个问题。

上个月关门了。
改进这个问题
我想对我的数据库进行基准测试,为此我编写了java代码来运行查询,因此我的代码执行以下操作:
在那里 N 查询数,每个查询将执行1000次,最大并发数为 C . 我使用consolereporter-dropwizard度量来度量查询执行时间,下面是我的主要方法类:

int concurrency = 5;
int queries = 10;
int loopTimes = 1000/concurrency ;

ExecutorService executorService = Executors.newFixedThreadPool(concurrency);

for(int index=0;index<queries;index++){
    CountDownLatch latch = new CountDownLatch(concurrency);
    for(int j=0;j<concurrency;j++) {
        TimeUnit.SECONDS.sleep(1);
        executorService.submit(new QueryRunner(index,loopTimes,latch));
    }
    latch.await();
    System.out.println("Query Complete : "+i);
}
executorService.shutdown();
executorService.awaitTermination(1, TimeUnit.DAYS);

ConsoleReporter.forRegistry(metricRegistry).build().report();

下面是我的主要运行方法

@Override
public void run() {

    try (Connection connection = DriverManager.getConnection(connectionUrl)) {

        int count =0;
         while(count!=loop) {
            count++;

            try (PreparedStatement ps = connection.prepareStatement(SQL.queries.get(index))) {

                final Timer timer = metricRegistry.timer(name("query-", Integer.toString(index)));
                ResultSet rs = null;
                final Timer.Context context = timer.time();
                try{
                    rs = ps.executeQuery();
               }finally {
                    context.stop();
                }
                if (rs!=null && rs.next()) {
                    successCounter.inc();
                } else {
                    failedCounter.inc();
                }

                Thread.sleep((long)(3000*Math.random()));

            }
        }

        try {
            latch.countDown();
        } catch (Exception e) {
            e.printStackTrace();
        }
    } catch (SQLException | InterruptedException e) {
        e.printStackTrace();
    }

每次运行代码时,对于相同的查询集,我都会得到不同的结果,因此我想检查代码中是否存在任何bug。
我还想得到一些改进基准脚本的建议。

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题