Docker コンテナーにPlay 2.3.xを使用する REST API があります。この API はPostgresSQL 9.4データベース (Docker コンテナー上でも) と通信し、JSON を提供します。クライアントは React と同型のアプリです (Docker コンテナーでも)。
クライアントがルートを変更すると、いくつかのリクエストが API に送信されます。問題は、すべてのリクエストが異常に遅いことです。たとえば、次の uri があります。
GET /api/taxon/185214/geojson
このリクエストをブラウザから直接送信すると、4 秒後にレスポンスが表示されます。このリクエストが他のリクエストと一緒に送信されると、12 秒長くかかります。
今回は何が原因でしょうか?
もちろん、API のすべてのアクションは非同期です。たとえば、geojson アクション:
public static Promise<Result> showGeoJson(final Long id)
{
Promise<GeoJsonModel> promise = F.Promise.promise(
new Function0<GeoJsonModel>() {
public GeoJsonModel apply() {
// Get data with ebean
return geojson;
}
}
);
return promise.map(
new Function<GeoJsonModel, Result>() {
public Result apply(GeoJsonModel geojson) {
// return Result
}
}
);
}
各リクエストは別のスレッドで処理する必要がありますか?
編集
したがって、いくつかのテストの後、遅いのは私の開発用コンピューターだけです。実際、他のコンピューターでは、応答時間は正常です。