1

いくつかのノード フレームワーク、または少なくともそのルーティング部分をテストする必要があります。つまり、リクエストがノードプロセスに到着してから、ルートが決定され、ビジネスロジックを含む関数/クラスが呼び出されるまで、たとえばそれを呼び出す直前に処理されます。私は適切なアプローチを懸命に探しましたが、外部のベンチマーク ツールを使用せずにコード内で直接実行する必要があるという結論に達しました。間違った属性を測定することを恐れています。大砲と ab を試してみましたが、RTT、不適切な OS スケジューリング、OS で実行されるランダム タスクなど、測定したいよりも多くの属性を測定します。process.hrtime() を使用したカスタム ルーティング コードの最初のベンチマークでは、約 . 0.220 ミリ秒 (220 マイクロ秒) の実行時間ですが、外部測定値は 0.700 (700 マイクロ秒) を示しています。これは 3 であるため、許容できる差ではありません。18 倍の追加時間。GC またはシステム タスクが原因で、実行時間が 1.x 秒に跳ね上がることがあります。今、再現可能なアプローチはどのように見えるのだろうか? 多分このように:

  • Scientific Linux で Docker を使用して、ある程度制御された環境を取得します。
  • 最小限の Docker コンテナ インストール、ノード対応コンテナのみ、追加要素なし。
  • テストが完了するまで時間結果をグローバル スコープに保存してから、ディスクに保存します。
  • ホスト OS の diskIO や CPU が高い/中程度の場合は、すべてのアプリケーションを終了します。
  • 前に説明したように時間を測定し、指を交差させます。

考慮すべき他の推奨事項はありますか?

4

0 に答える 0