Bitbucket を AWS で実行する場合の推奨事項
Bitbucket Server
アクティブ ユーザー数 | EC2 インスタンス タイプ | EBS 最適化 | EBS ボリューム タイプ | IOPS |
---|---|---|---|---|
0 – 250 | c3.large | いいえ | 汎用 (SSD) | N/A |
250 – 500 | c3.xlarge | はい | 汎用 (SSD) | N/A |
500 ~ 1000 | c3.2xlarge | はい | プロビジョンド IOPS | 500 – 1000 |
Bitbucket Data Center (クラスタ ノード)
アクティブ ユーザー数 | EC2 インスタンス タイプ | 推奨されるノード数 |
---|---|---|
0 – 250 | c3.large | 1-2* |
250 – 500 | c3.xlarge | 1-2* |
500 – 1000 | c3.2xlarge | 2 |
1000 – 大規模 | c3.4xlarge+ | 3+ |
* 高可用性のためには、最低でも 2 つ以上のクラスター ノードをデプロイすることをお勧めします。
Bitbucket Data Center (共有ファイル サーバ)
これらの推奨事項では、単一の EC2 インスタンスに、クラスタの共有 NFS サーバとして機能する EBS ボリュームが接続されていることを前提としています。
アクティブ ユーザー数 | EC2 インスタンス タイプ | EBS ボリューム タイプ | IOPS |
---|---|---|---|
0 – 250 | m4.large | 汎用 (SSD) | N/A |
250 – 500 | m4.xlarge | 汎用 (SSD) | N/A |
500 – 1000 | m4.2xlarge | プロビジョンド IOPS | 500 – 1000 |
1000 – 大規模 | m4.4xlarge+ | プロビジョンド IOPS | 1000+ |
The Amazon Elastic File System (EFS) is not supported for Bitbucket's shared home directory due to poor performance of git operations.
詳細については、「Amazon EC2 インスタンス タイプ」、「Amazon EBS – 最適化されたインスタンス」、および「Amazon EBS ボリューム タイプ」を参照してください。
注意
ホスティング負荷が高い Bitbucket インスタンスでは、I/O パフォーマンスが制限要因となることが多くあります。EBS ボリューム オプションの次の点に特に注意することをおすすめします。
- EBS ボリュームのサイズも I/O パフォーマンスに影響します。一般に、EBS ボリュームを大きくすると、利用可能な帯域幅および 1 秒あたりの I/O 操作数のスライスが大きくなります。本番環境では最低でも 100 GiB が推奨されます。
- 汎用 (SSD) ボリュームによって持続可能な IOPS は、Amazon の I/O クレジットによって制限されます。I/O クレジット残高を使いきると、IOPS はベースライン レベルに制限されます。より大きな汎用 (SSD) ボリュームを使用したり、プロビジョンド IOPS (SSD) ボリュームに切り替えたりすることを検討する必要があります。詳細については、「Amazon EBS ボリューム タイプ」を参照してください。
- 特に新しい EBS ボリュームでは、各ブロックが初めてアクセスされた際にパフォーマンスが低下します。詳細については、「Amazon EBS ボリュームの事前ウォーミング」を参照してください。
上記の推奨事項は、指定された数のアクティブ ユーザーでの一般的なワークロードを基準にしています。実際の Bitbucket インスタンスのリソース要件は、次のような多数の要因によって大きく異なります。
- Bitbucket Server からクローンまたはフェッチする継続的インテグレーション サーバの数。多数のビルド サーバが Bitbucket Server から頻繁にクローンまたはフェッチするように設定されている場合、Bitbucket Server はより多くのリソースを使用します。
- 継続的インテグレーション サーバーがプッシュ モード通知を使用しているか、更新をウォッチするために定期的にリポジトリをポーリングしているか
- 継続的インテグレーション サーバーがフル クローンを実行するように設定されているか、シャロー クローンを実行するように設定されているか
- Bitbucket Server への主なトラフィックが、HTTP、HTTPS、または SSH のどれに該当するか、および使用されている暗号化方式
- リポジトリの数とサイズ。多数の大きなリポジトリを運用している場合、Bitbucket Server はより多くのリソースを使用します
- ユーザーのアクティビティ。ユーザーがプル リクエストを参照、クローン、プッシュ、および操作するために Bitbucket Server の Web インターフェイスを積極的に使用している場合、Bitbucket Server はより多くのリソースを使用します
- オープンなプル リクエストの数。オープンなプル リクエストが大量にある場合、特にそれらのすべてが大規模でビジーなリポジトリの同じブランチを宛先にしている場合、Bitbucket Server はより多くのリソースを使用します
Bitbucket Server のリソース要件の詳細については、「Bitbucket Server のスケーリング」および「継続的インテグレーション パフォーマンスのための Bitbucket Server のスケーリング」を参照してください。
その他のサポート対象のインスタンス サイズ
次の Amazon EC2 インスタンスも、Bitbucket Server の最低ハードウェア要件を満たしています。これらのインスタンスでは、CPU、メモリ、I/O パフォーマンスがさまざまなバランスで提供されており、CPU、メモリ、I/O が通常よりも集中するワークロードで使用できます。
モデル | vCPU | メモリ (GiB) | インスタンス ストア (GB) | EBS | 専用 EBS スループット (Mbps) |
---|---|---|---|---|---|
c3.large | 2 | 3.75 | 2 x 16 SSD | - | - |
c3.xlarge | 4 | 7.5 | 2 x 40 SSD | はい | - |
c3.2xlarge | 8 | 15 | 2 x 80 SSD | はい | - |
c3.4xlarge | 16 | 30 | 2 x 160 SSD | はい | - |
c3.8xlarge | 32 | 60 | 2 x 320 SSD | - | - |
c4.large | 2 | 3.75 | - | はい | 500 |
c4.xlarge | 4 | 7.5 | - | はい | 750 |
c4.2xlarge | 8 | 15 | - | はい | 1,000 |
c4.4xlarge | 16 | 30 | - | はい | 2,000 |
c4.8xlarge | 36 | 60 | - | はい | 4,000 |
i2.xlarge | 4 | 30.5 | 1 x 800 SSD | はい | - |
i2.2xlarge | 8 | 61 | 2 x 800 SSD | はい | - |
i2.4xlarge | 16 | 122 | 4 x 800 SSD | はい | - |
i2.8xlarge | 32 | 244 | 8 x 800 SSD | - | - |
m3.large | 2 | 7.5 | 1 x 32 SSD | - | - |
m3.xlarge | 4 | 15 | 2 x 40 SSD | はい | - |
m3.2xlarge | 8 | 30 | 2 x 80 SSD | はい | - |
m4.large | 2 | 8 | - | はい | 450 |
m4.xlarge | 4 | 16 | - | はい | 750 |
m4.2xlarge | 8 | 32 | - | はい | 1,000 |
m4.4xlarge | 16 | 64 | - | はい | 2,000 |
m4.10xlarge | 40 | 160 | - | はい | 4,000 |
m4.16xlarge | 64 | 256 | - | はい | 10,000 |
r3.large | 2 | 15.25 | 1 x 32 SSD | - | - |
r3.xlarge | 4 | 30.5 | 1 x 80 SSD | はい | - |
r3.2xlarge | 8 | 61 | 1 x 160 SSD | はい | - |
r3.4xlarge | 16 | 122 | 1 x 320 SSD | はい | - |
r3.8xlarge | 32 | 244 | 2 x 320 SSD | - | - |
x1.32xlarge | 128 | 1,952 | 2 x 1,920 SSD | はい | 10,000 |
すべての AWS インスタンス タイプで、Bitbucket Server は "large" 以上のインスタンスのみをサポートしています。"Micro"、"small"、"medium" サイズのインスタンスは Bitbucket の最低ハードウェア要件を満たすことができないため、本番環境では推奨されません。
Bitbucket では、D2 インスタンス、Burstable Performance (T2) インスタンス、または旧世代のインスタンスはサポートされていません。
インスタンス ストア デバイスが利用可能なインスタンス タイプでは、Bitbucket AMI から起動された Bitbucket インスタンスにより、Bitbucket Server の一時ファイルとキャッシュを含む 1 つのインスタンス ストアが構成されます。インスタンス ストアは EBS ボリュームよりも高速になる可能性がありますが、インスタンスが停止または再起動された場合にデータが保持されません。インスタンス ストアを使用すると、パフォーマンスを改善し、EBS ボリュームの負荷を削減できます。詳細については、「Amazon EC2 インスタンス ストア」を参照してください。
高度なヒント: Bitbucket を監視してインスタンス サイジングを調整する
このセクションは、インスタンスのリソース消費を監視し、この情報をインスタンス サイジングのガイドとして使用したいユーザーを対象としています。大規模環境でのパフォーマンスが懸念されている場合、Bitbucket Data Center をエラスティック スケーリングでデプロイをおすすめします。これは、単一ノードで流動的な負荷や増大する負荷に対応する方法について心配する必要がないデプロイです。詳細については、「Bitbucket Data Center 向け AWS クイック スタート ガイド」を参照してください。
上述の推奨事項は、一般的なワークロードに関するガイダンスを提供しています。それぞれの Bitbucket Server インスタンスのリソース消費は、ワークロードの組み合わせによって異なります。Bitbucket Server インスタンスが AWS で十分にプロビジョニングされているかどうかを判断するための最も信頼できる方法は、Amazon CloudWatch でリソースの使用量を定期的に監視することです。これによって、Bitbucket Server が消費している CPU、I/O、およびネットワーク リソースの実際の量の統計情報が得られます。
以降の単純な BASH スクリプトの例では次のものを使用します。
これらを使用して、CPU、I/O、およびネットワーク統計を収集し、インスタンス サイジングの決定に役立つシンプルなグラフで表示します。
このスクリプトを通常の Bitbucket Server インスタンスで実行すると、次のようなグラフが生成されます。
このようなグラフの情報を使用して、CPU、ネットワーク、または I/O リソースがインスタンスでオーバー プロビジョニングかアンダー プロビジョニングかを判断できます。
インスタンスが頻繁に最大利用可能 CPU 使用率 (インスタンス サイズのコア数を考慮) に達する場合、CPU 数が多い EC2 インスタンスが必要なことを示している場合があります (Amazon 環境の他のテナントがあなたのインスタンスが実行されているものと同じ物理ハードウェアで CPU サイクルを消費している場合、Amazon CloudWatch で報告される小さい EC2 インスタンス サイズの CPU 使用率は "ノイジー ネイバー" 現象の影響をある程度受ける可能性があります)。
インスタンスが EBS ボリュームで利用可能な IOPS を頻繁に超えていたり、I/O リクエストが頻繁にキューに入れられたりする場合、EBS 最適化インスタンスにアップグレードする必要がある、および / または EBS ボリュームのプロビジョンド IOPS を増やす必要があることを示している場合があります。詳細については、「EBS ボリューム タイプ」を参照してください。
インスタンスがネットワーク トラフィックによって頻繁に制限される場合、利用可能なネットワーク帯域幅のスライスが大きい EC2 インスタンスを選択する必要があることを示している場合があります。