Javaアプリケーションを処理するバッチ・ファイルがあります。サービスがバースト的です。多くのファイルがいくつか取得され、しばらく処理されません。バッチファイル要求を並列処理するスレッドプールがあります。私はアイドルタイムの後の最初の処理が遅いことを観察し、速度を上げます。アプライメントは数日間ウォームアップされていますが、アプリケーションが使用されていない状態では一貫した応答時間はありません。スレッドはアイドルタイムの後に本当に「冷たく」なりますか?もしそうなら、非活動時にアプリケーションをウォーミング状態に保つ方法は何ですか? ThreadPoolExecutor
内のスレッドの2種類がありますJavaバッチ・アプリケーションとアイドル・スレッド・プール
final ThreadPoolTaskExecutor executor = new ThreadPoolTaskExecutor();
executor.setCorePoolSize(100);
executor.setMaxPoolSize(2000);
executor.setQueueCapacity(250);
executor.setThreadNamePrefix(prefix);
executor.setKeepAliveSeconds(20);
executor.setWaitForTasksToCompleteOnShutdown(wait);
ニキータ、返信いただきありがとうございます。 ThreadPoolTaskExecutorでexecutor.setCorePoolSize(100)を設定します。また、アプリケーションの非アクティブ後も処理が遅くなることがあります。 – user3140656
スレッドプールが問題なのですか?たとえば、内部プールやサードパーティのフレームワークのキャッシュにすることはできますか? –
アイドル時間が経過した後、100Kファイルを実行します。最初は3回実行してから次の3回まで実行します。私はキャッシュが非アクティブの間にクリアになるとは思わないでしょう。コンパイラは、非アクティブなアプリケーションに対して何らかのメモリ「最適化」を行うことができますか? – user3140656