11

私はプレイ フレームワーク 1.2.5 を使用しています。過去 2 日間、サーバーへの API 呼び出しごとに平均 1200 ~ 1400 ミリ秒かかる負荷テストで非常に大きな問題がありましたが、今日は次の 1 行のみを変更しました。ファイルapplication.conf で、平均時間を20 ~ 50 msに劇的に短縮します。

  application.mode=prod
  %prod.application.mode=prod

最初はそうだった

  application.mode=dev 
  %prod.application.mode=prod

したがって、このことから、dev から production に変更すると何かが発生することがわかり、インターネットで見つけたのは、devモードではplay.pool=1がデフォルトであるのに対し、production モードでは play.pool = no of processor + 1であり、私の ubuntu マシンは4 プロセッサなので 5 スレッドを使用します。私が見つけたことが本当なら、application.confでplay.pool = 5を手動で変更すると、問題が発生しますplay.pool=1 を設定して本番モードで実行しても、結果が速くなることはありません アプリケーションの負荷テストの結果が遅くなることもないため、開発モードから本番モードに変更するとどうなるかを知る必要があります。アプリケーションを高速化する .pool 。私はprodモードで変更しても良い結果が得られないUATで問題に直面しているため、それは私のlocalhostでのみ機能します。

アップデート :

はい、私はDEVモードのようなアプリケーションのリロードとコンパイルのようなものをすべて知っていますが、おそらく最初のプログラムのロード時にのみ、すべてのリクエストに対してではないと思いますが、私の問題は、このprodモードがローカルホストとローカルで正常に動作することですサーバーで、UAT を使用すると、負荷テストで平均 800 ミリ秒前後の悪い結果が得られます。負荷テストをローカルで実行していても、製品でもアプリケーションが遅いです(jmeterはサーバーマシンにインストールされており、リモートデスクトップ接続を使用して負荷テストを行っています)。したがって、コンパイルとリロード以外に、play.pool が 1 スレッドから (プロセッサー数 + 1) スレッドに変更されるように、DEV モードから PROD モードに変更するときに、application.conf ファイルで実行されるすべての変更を知る必要があります。 参考までに: 私のローカルホスト システムは 4 プロセッサ マシンで、ローカル サーバー マシンは 4 プロセッサですが、UAT マシンは 2 プロセッサです。 UATで良い結果。

4

3 に答える 3

1

銃にジャンプする前に、さらに分析を行う必要があります。
まず、余分な時間がどこに費やされているかを理解しようとします。

  • テンプレートをレンダリングしていますか?
  • DB 接続を待機中ですか?
  • ねじロックはありますか?
  • データベースはインデックスで最適化されていますか?
  • プロセッサとメモリの使用量を測定しましたか?
  • コストのかかる IO 操作を行っていますか?
  • このマシンで他のプロセスが実行されていますか?
于 2013-08-26T10:45:04.823 に答える
0

どのように本番サーバーでプレイを開始していますか?

読んでいただければ幸いです: http://www.playframework.com/documentation/1.2.5/production

あなたの質問は、実際にはパフォーマンスの問題に関するものです。ローカル環境および本番環境とのパフォーマンスの違いの原因となる多くのことが考えられます。Play とは別に、DB は同じボックスで実行されていますか?

于 2013-08-26T14:29:41.130 に答える