0

Multithreaded programを呼び出すシンプルなものがExternal APIあり、その API から応答を返します。を使用してRestTemplateいます。

問題文:-

私は見つけようとしています

What is the estimated CPU and IO time for these calls?

私はUbuntuで働いています。

以下は私のプログラムです-

public class RestLnPTest {

    private final static Logger LOG = Logger.getLogger(NokiaLnPTest.class.getName());
    private static int noOfThreads = 10;

    public static void main(String[] args) {

        ExecutorService service = Executors.newFixedThreadPool(noOfThreads);

        try {

            for (int i = 0; i < 100 * noOfThreads; i++) {
                service.submit(new ThreadTask());
            }

            service.shutdown();
            service.awaitTermination(Long.MAX_VALUE, TimeUnit.DAYS);

        } catch (InterruptedException e) {

        } catch (Exception e) {

        } finally {
            logHistogramInfo();
        }
    }

    private static void logHistogramInfo() {

     System.out.println(ThreadTask.lookupHistogram);

    }
}

class ThreadTask implements Runnable {

    public static ConcurrentHashMap<Long, AtomicLong> lookupHistogram = new ConcurrentHashMap<Long, AtomicLong>();
    private static final String URL = "SOME_URL";

    @Override
    public void run() {

        RestTemplate restTemplate = new RestTemplate();

        long start = System.nanoTime();

        String result = restTemplate.getForObject(URL, String.class);

        long end = System.nanoTime() - start;

        final AtomicLong before = lookupHistogram.putIfAbsent(end / 1000000, new AtomicLong(1L));

        if (before != null) {
            before.incrementAndGet();
        }
    }
}

Ubuntuのコマンドラインから上記のプログラムを実行しています-

java - jar REST.jar

CPU誰かがそれを理解する方法とIO timeUnix環境でのこれらの呼び出しについて段階的に教えてもらえますか?. これらの呼び出しの大まかな見積もりが必要でした。

4

1 に答える 1

1

「外部呼び出し」が外部アプリケーションの実行である場合(たとえば、経由exec())、アプリケーションをラップするか、プロセスアカウンティングのものtimeを使用することで、(理論的には)いくつかの統計を取得できます。ac

ただし、サービスが個々のリクエストを処理するために使用するリソースを調べたいようです。サービス自体にそれを測定して報告させる以外に、その情報を取得する方法はありません。

外部から(つまりクライアントから)キャプチャできるのは、各リクエストの経過時間だけです。

于 2013-03-17T00:55:48.497 に答える