kompira の原因と対処

kompira コンテナのログに記録されるエラーから、原因と対処を調べます。

静的ファイルにアクセスできない(KeyError: 'staticfiles')

対象構成: Swarmクラスタ構成(GlusterFS 利用時)

観測される症状・影響

GlusterFS ボリュームが利用できないため、kompira が静的ファイルにアクセスできず、ブラウザ画面が崩れる・内部処理エラーになる可能性があります。

主なエラーメッセージ

  • KeyError: 'staticfiles'
  • OSError: [Errno 107] Socket not connected: '/var/opt/kompira/html/staticfiles.json'

ログのサンプルエントリ

File "/usr/local/lib/python3.11/site-packages/django/core/files/storage/filesystem.py", line 68, in _open
    return File(open(self.path(name), mode))
OSError: [Errno 107] Socket not connected: '/var/opt/kompira/html/staticfiles.json'
[2024-08-14 12:52:10,444:ap-ke2-rhel89-swarm-3:MainProcess:uWSGIWorker5Core0] ERROR: database error: [Errno 107] Socket not connected: '/var/opt/kompira/html/staticfiles.json'(OSError(107, 'Socket not connected'))
Traceback (most recent call last):
  File "/usr/local/lib/python3.11/site-packages/django/core/files/storage/handler.py", line 35, in __getitem__
    return self._storages[alias]
KeyError: 'staticfiles'

原因

静的ファイルを提供する GlusterFS ボリュームが利用できない、またはクラッシュした場合に発生します。kompira の Django アプリケーションがこのボリュームに格納された静的ファイルにアクセスしようとして接続できず、エラーになります。

解決策

  1. KE2 APP ホストサーバでリソース使用率が高い場合、ホストサーバのリソース状況の確認 を確認してください。

  2. GlusterFS のボリュームアクセスの問題が考えられます。共有ファイルシステム(glusterfs)の正常性確認 を確認してください。

  3. 正常に戻らない場合、kompira コンテナを再起動してください。

    # kompira コンテナ ID: $ docker ps -aq -f name=kompira で取得できます
    $ docker restart <KOMPIRA_CONTAINER_ID>