kkamegawa's weblog

Visual Studio,TFS,ALM,VSTS,DevOps関係のことについていろいろと書いていきます。Google Analyticsで解析を行っています

Azure DevOps Server 2019の消費メモリ

(9/20ちょっと修正)

Azure DevOps Server 2019のシステム要件にはこう書かれています。

docs.microsoft.com

A single-server deployment consists of a single machine with one dual-core processor, 4 GB of RAM, and a fast hard-disk drive. This configuration typically supports up to 250 users of core source control (Team Foundation Version Control or Git) and work item tracking functionality. Extensive use of automated build, test, or release likely will cause performance issues. We don't recommend use of search or reporting features for this configuration.

When you scale up a single server, the server can handle a larger number of users and an increased use of automated build, test, or release. A scaled-up server can also use search or reporting features. For example, increasing RAM to 8 GB should enable a single-server deployment to scale up to 500 users.

For evaluation or personal use, you can use a basic configuration with as little as 1 GB of RAM. This configuration isn't recommended for a production server that's used by more than one person.

シングルサーバー4GB RAMだとバージョン管理と作業項目管理ができるけど、ビルドにはちょっと厳しい。8GB RAMあれば500ユーザーが使えるだろう、みたいな感じ。

ところがですね、今実際に私の評価環境の使用メモリはこんな感じです(Windows Server 2016 + SQL Server 2017 + Azure DevOps Server 2019 update1)。

f:id:kkamegawa:20190919065438p:plain

Common Daemon Service RunnerはElastic Search(コード、作業項目検索)です。IIS Worker ProcessはIISフロント。450MBくらいですが、これはまだ未アクセスだからです。Webへアクセスするといきなり1-2GBくらいになります。メモリが少ない場合、Elastic Searchのメモリが解放されます。

f:id:kkamegawa:20190919065443p:plain

SQL Serverは明示的に最大使用メモリを4GBまでに絞っています。何も設定しないと、デフォルトでメモリをあればあるだけ使います。

docs.microsoft.com

TfsJobAgentはバックグラウンドで動いているジョブコントローラーって言っていいのかな?そんな感じです。メンテナンス ジョブを実行しているサービスだそうです(おしえてもらいました。ありがとうございます)。

特に近年のバージョンアップでElastic SearchとTfJobAgentがものすごく使うようになって(W3WP.exeもアクセスすればもちろん増えます)、さすがに8GB RAMではインストーラーの評価程度でしょうか。コード検索も最初はいいけど、たぶん無理ですね。

すくなくともSQL Server 4GB, ESで4GB, TfJobAgentで2-3GBくらい、IIS Worker Processで2GB程度は使うので、16GBくらいの環境じゃないとスタートは厳しいかなと思います。プロダクション環境で本気で考えるならWeb + ES + DBを別サーバー構成ですね。

ESが入ったTFS 2017くらいから結構消費量が多くなってきたように記憶しています。