Linuxパッケージインスタンスのアップグレードのトラブルシューティング
- プラン: Free、Premium、Ultimate
- 提供形態: GitLab Self-Managed
トラブルシューティングを支援するため、以下のコマンドを実行してください。
sudo gitlab-ctl status
sudo gitlab-rake gitlab:check SANITIZE=true詳細については、次を参照してください:
- メンテナンスに
gitlab-ctlを使用する方法については、メンテナンスコマンドを参照してください。 - 設定チェックに
gitlab-rakeを使用する方法については、GitLabの構成を確認を参照してください。
オペレーティングシステムのアップグレード後に新しいバージョンが見つからない
GitLabをアップグレードする前に、オペレーティングシステムのアップグレードが必要になる場合があります。オペレーティングシステムをアップグレードする際に、オペレーティングシステムのパッケージマネージャー設定で、GitLabパッケージのソースURLを更新する必要がある場合もあります。
パッケージマネージャーが利用可能なアップグレードを見つけられないが、アップグレードが利用可能であるはずの場合は、GitLabパッケージリポジトリを再度追加してください。詳細については、Linuxパッケージを使用してGitLabをインストールするに関する情報を参照してください。
今後のGitLabアップグレードは、アップグレードされたオペレーティングシステムに従って取得されます。
ログにPG::UndefinedColumn: ERROR:..メッセージが表示される500エラー
アップグレード後、PG::UndefinedColumn: ERROR:...のようなメッセージが表示される500エラーが発生し始めた場合、これらのエラーの原因は次のいずれかである可能性があります:
- データベース移行が完了していません。移行が完了するまで待ってください。
- データベース移行は完了しましたが、GitLabが新しいスキーマを読み込む必要があります。新しいスキーマを読み込むには、GitLabを再起動してください。
エラー: 内部GitLab APIへの接続に失敗しました
別のGitLab PagesサーバーでFailed to connect to the internal GitLab APIエラーが発生した場合は、GitLab Pages管理トラブルシューティングを参照してください。
署名の検証中にエラーが発生しました
apt-get updateを実行するときにこのエラーが発生した場合:
An error occurred during the signature verification次のコマンドを使用して、GitLabパッケージサーバーのGPGキーを更新します:
[ -x /usr/bin/apt-key ] &&
[ -s /etc/apt/trusted.gpg ] &&
apt-key --keyring /etc/apt/trusted.gpg del packages@gitlab.com
curl --fail --silent --show-error \
--output /etc/apt/trusted.gpg.d/gitlab.asc \
--url "https://packages.gitlab.com/gpg.key"
apt-get updateMixlib::ShellOut::CommandTimeout: rails_migration[gitlab-rails] [..] Command timed out after 3600s
データベーススキーマとデータの変更(データベース移行)の実行に1時間以上かかる場合、アップグレードはtimed outエラーで失敗します:
FATAL: Mixlib::ShellOut::CommandTimeout: rails_migration[gitlab-rails] (gitlab::database_migrations line 51)
had an error: Mixlib::ShellOut::CommandTimeout: bash[migrate gitlab-rails database]
(/opt/gitlab/embedded/cookbooks/cache/cookbooks/gitlab/resources/rails_migration.rb line 16)
had an error: Mixlib::ShellOut::CommandTimeout: Command timed out after 3600s:このエラーを修正するには:
残りのデータベース移行を実行します:
sudo gitlab-rake db:migrateこのコマンドの完了には非常に長い時間がかかる場合があります。SSHセッションが切断された場合にプログラムが中断されないように、
screenまたはその他のメカニズムを使用してください。アップグレードを完了します:
sudo gitlab-ctl reconfigurepumaサービスとsidekiqサービスをホット読み込みします:sudo gitlab-ctl hup puma sudo gitlab-ctl restart sidekiq
アセットファイルが見つかりません
アップグレード後、GitLabは次のようなアセットを正しく提供しない場合があります:
- 画像
- JavaScript
- スタイルシート
GitLabで500エラーが発生したり、Webユーザーインターフェースが正しく表示されない場合があります。
スケールアウトされたGitLab環境では、ロードバランサーの背後にある1つのWebサーバーがこのイシューを発生させている場合、問題が断続的に発生します。
アセットを再コンパイルするRakeタスクは、/opt/gitlab/embedded/service/gitlab-rails/public/assetsから事前コンパイルされたアセットを提供するLinuxパッケージインストールには適用されません。
以下のセクションでは、考えられる原因と解決策について概説します。
古いプロセス
古いプロセスの最も可能性の高い原因は、古いPumaプロセスが実行されていることです。古いPumaプロセスは、クライアントに以前のリリースのGitLabからのアセットファイルを要求するように指示できます。ファイルが存在しなくなったため、HTTP 404エラーが返されます。
再起動は、これらの古いPumaプロセスが実行されなくなったことを確認する最良の方法です。または、次のことを実行できます:
Pumaを停止します:
gitlab-ctl stop puma残りのPumaプロセスを確認し、強制終了します:
ps -ef | egrep 'puma[: ]' kill <processid>Pumaプロセスが実行を停止したことを
psで確認します。Pumaを起動します
gitlab-ctl start puma
重複するスプロケットファイル
コンパイルされたアセットファイルには、各リリースで一意のファイル名があります。スプロケットファイルは、アプリケーションコード内のファイル名から一意のファイル名へのマッピングを提供します。
/opt/gitlab/embedded/service/gitlab-rails/public/assets/.sprockets-manifest*.jsonスプロケットファイルが1つしかないことを確認してください。Railsは最初に使用します。
重複するスプロケットファイルのチェックは、Linuxパッケージのアップグレード中に実行されます:
GitLab discovered stale file(s) from the previous install that need to be cleaned up.
The following files need to be removed:
/opt/gitlab/embedded/service/gitlab-rails/public/assets/.sprockets-manifest-e16fdb7dd73cfdd64ed9c2cc0e35718a.jsonこれの解決オプションは次のとおりです:
パッケージのアップグレードからの出力がある場合は、指定されたファイルを削除します。次に、Pumaを再起動します:
gitlab-ctl restart pumaメッセージがない場合は、再インストールを実行して再度生成します。詳細については、不完全なインストールを参照してください。
すべてのスプロケットファイルを削除し、不完全なインストールの手順に従います。
不完全なインストール
不完全なインストールは、アセットファイルが見つからない問題の原因である可能性があります。
この問題であるかどうかを判断するために、パッケージを確認してください:
Debianディストリビューションの場合:
apt-get install debsums debsums -c gitlab-eeRed Hat/SUSE(RPM)ディストリビューションの場合:
rpm -V gitlab-ee
不完全なインストールを修正するためにパッケージを再インストールするには:
インストールされているバージョンを確認してください:
Debianディストリビューションの場合:
apt --installed list gitlab-eeRed Hat/SUSE(RPM)ディストリビューションの場合:
rpm -qa gitlab-ee
インストールされているバージョンを指定して、パッケージを再インストールします。たとえば、14.4.0 Enterprise Edition:
Debianディストリビューションの場合:
apt-get install --reinstall gitlab-ee=14.4.0-ee.0Red Hat/SUSE(RPM)ディストリビューションの場合:
yum reinstall gitlab-ee-14.4.0
NGINX Gzipサポートが無効になっています
nginx['gzip_enabled']が無効になっているかどうかを確認します:
grep gzip /etc/gitlab/gitlab.rbこれにより、一部のアセットが提供されなくなる可能性があります。関連するイシューの1つで詳細をご覧ください。
ActiveRecord::LockWaitTimeoutエラー、スリープ後に再試行
まれに、Sidekiqがビジー状態になり、移行が変更しようとしているテーブルをロックします。この問題を解決するには、以下を実行します:
GitLabを読み取り専用モードにします。
Sidekiqを停止します:
gitlab-ctl stop sidekiq
GPG署名の検証エラー: 無効なGPG署名
yum updateまたはdnf updateを実行すると、次のエラーが発生する可能性があります:
Error: Failed to download metadata for repo 'gitlab_gitlab-ee-source': repomd.xml GPG signature verification error: Bad GPG signatureこの問題を解決するには、以下を実行します:
dnf clean allを実行します。- 最新の署名キーをフェッチします。
- もう一度アップグレードを試みます。
dnf clean all後もエラーが解決しない場合は、影響を受けるリポジトリキャッシュディレクトリを手動で削除してください。この例では:
/var/cache/dnf/gitlab_gitlab-ee-sourceを削除します。dnf makecacheを実行します。