クライアントとサーバーの実装

<ph type="x-smartling-placeholder"></ph> 問題を報告する ソースを表示 夜間 · 7.3 · 7.2 · 7.1 · 7.0 · 6.5

Bazel システムは、有効期間が長いサーバー プロセスとして実装されています。これにより、 バッチ指向の実装では不可能な多くの最適化を BUILD ファイル、依存関係グラフ、その他のメタデータを 1 つの 次世代の基盤となります。これにより、増分ビルドの速度が向上し、 buildquery などの異なるコマンドを使用して、同じキャッシュを クエリが非常に高速になります。

bazel を実行すると、クライアントが実行されます。クライアントがサーバーを見つける 出力ベースに基づいて作成されます。デフォルトでは、 ユーザー ID が使用されます。したがって、複数のワークスペースでビルドする場合は、 出力ベースが複数あるため、Bazel サーバー プロセスも複数になります。 同じワークステーション上の複数のユーザーが同じデータベースで同時にビルドできます。 出力ベースが異なる(ユーザー ID が異なる)可能性があるためです。もし クライアントが実行中のサーバー インスタンスを見つけられない場合は、新しいインスタンスを開始します。サーバー 非アクティブな状態が一定時間(デフォルトでは 3 時間、 起動オプション --max_idle_secs を使用して変更できます)。

ほとんどの場合、サーバーが稼働中であることは ただし、それを念頭に置いた方がよい場合もあります。たとえば さまざまなディレクトリで多数の自動ビルドを実行するスクリプトを実行する アイドル状態のサーバーを大量に発生させないことが重要です 作業が終了したら明示的にシャットダウンするか、 短いタイムアウト時間を指定します

Bazel サーバー プロセスの名前が ps x または ps -e f の出力に表示されます。 bazel(dirname) の形式。ここで、dirname はアプリケーションのベース名です。 ディレクトリを作成します。例:

ps -e f
16143 ?        Sl     3:00 bazel(src-johndoe2) -server -Djava.library.path=...

これにより、特定のプロセスがどのサーバー プロセスに属しているかを簡単に 見てみましょう。(ps、Bazel サーバーに対する他のオプションがあるので注意してください)。 Bazel サーバーは java という名前を付けることができます)。 shutdown コマンドを使用します。

bazel を実行すると、クライアントはまずサーバーが適切であることを確認します。 version;そうでない場合、サーバーは停止して新しいサーバーが起動します。これにより 長時間実行されるサーバー プロセスを使用しても、 説明します。