クライアントブラウザでのJitsi MeetにおけるCPU使用率の高さを修正する
Jitsi MeetブラウザのCPUスパイクを診断し、ビデオタイル、カメラエフェクト、ブラウザグラフィック、ホスト設定をチェックすることで、クライアントの負荷を軽減します。
Matrix Synapseのメディアリポジトリは、ローカルユーザーがアップロードしたメディア、サムネイル、リモートホームサーバーから取得したキャッシュメディア、URLプレビューに使用されるリソースなど、さまざまな種類のファイルを保持するため、ホームサーバーのデータベースよりもディスク容量を消費しやすい場合があります。適切な解決策は、メディアディレクトリから無作為にファイルを削除することではありません。まず、容量が増加しているファイルの種類を特定し、Synapseの管理APIまたは保持制御を使用して、データベースのメタデータとディスク上のファイルの一貫性を維持してください。
2026年10月現在、Synapseの最新リリースバージョンは1.162です。公式のメディア管理ドキュメントには、メディアのクエリ、ローカルメディアの削除、キャッシュされたリモートメディアの消去、自動保持の設定を行うためのAPIが含まれています。インストールバージョンがかなり古い場合は、エンドポイントの動作や設定オプションがリリースによって異なる可能性があるため、公式のSynapseリリースを確認してください。
| 質問 | チェックすべき事項 | 次に最適な行動 |
|---|---|---|
| ファイルシステムは実際にほぼ満杯状態なのでしょうか? | df -h | メディアストアが格納されているマウント済みファイルシステムを確認してください。 |
| Synapse Mediaは主要な消費者ですか? | du -sh <media_store_path> | 何かを削除する前に、他の大きなディレクトリと比較してみてください。 |
| リモートキャッシュは最大のカテゴリですか? | du -sh <media_store_path>/* | sort -h | まず古いリモートメディアを削除してください。通常は再度取得できます。 |
| ローカルユーザーメディアが主なカテゴリですか? | 管理者APIのメディア一覧と年齢/サイズデータ | 意図的なローカルメディア保持ポリシーを適用してください。削除は永久的なものです。 |
| 成長は繰り返し起こるのだろうか? | media_retentionアップロード制限、監視 | 自動保持アラートと容量アラートを追加します。 |
Synapseではなく、ファイルシステムから始めましょう。以下を実行してください。
df -h
du -sh /path/to/media_store
パスはインストール環境によって異なります。Synapseのmedia_store_path設定では、アップロードされた画像や添付ファイルに使用されるディレクトリが定義され、デフォルトではmedia_storeSynapseのデータディレクトリからの相対パスとなっています。配布パッケージやコンテナ展開では、明示的なパスが設定されていることが多いため、場所を推測するのではなく、実際の構成を確認してください。
キャプション:メディアのクリーンアップが適切な解決策であると判断する前に、ファイルシステムの使用状況と設定済みのSynapseメディアストアのサイズを比較してください。
ディスクの空き容量がほぼ満杯の場合は、同じファイルシステム上に大きな一時ファイルやバックアップを作成するような、広範囲にわたる再帰的な操作の実行は避けてください。空き容量がすぐに不足する恐れがある場合は、まず無関係な書き込み負荷の高いジョブを停止するか、一時的な容量を追加してから、制御された方法でクリーンアップを実行してください。
アクティブなファイルを開きhomeserver.yaml、 を探してくださいmedia_store_path。またmax_upload_size、 、media_storage_providers、および既存のmedia_retentionブロックも確認してください。これらのオプションについては、公式のSynapse 設定マニュアルに記載されています。
キャプション:media_store_pathメディアストレージの測定や変更を行う前に、アクティブな状態を確認してください。ここに示されているパスは構成例です。
次に、第一階層のサブディレクトリを測定します。
du -sh /path/to/media_store/* 2>/dev/null | sort -h
Synapse のメディア リポジトリのドキュメントには、ディスク上の重要なカテゴリについて説明されています。ローカル アップロードは以下に保存されlocal_content、ローカル サムネイルは以下に保存local_thumbnailsされ、キャッシュされたリモート ファイルは以下に保存されremote_content、リモート サムネイルは以下に保存されremote_thumbnail、URL プレビュー データは以下に保存されurl_cacheますurl_cache_thumbnails。
キャプション:ディレクトリレベルのサイズ内訳は、復元可能なリモートキャッシュと、ホームサーバーに保存されている唯一のコピーである可能性のあるローカルユーザーアップロードを区別するのに役立ちます。
rm -rfこれらのディレクトリ内を通常のクリーンアップ方法として使用しないでください。Synapseはデータベースにもメディア情報を追跡しています。サポートされているクリーンアップパスを迂回すると、既に存在しないファイルを参照するメタデータが残ったり、ユーザーが取得を期待しているコンテンツが削除されたりする可能性があります。
キャッシュされたリモートメディアは、通常、容量を解放する上で最もリスクの低い場所です。Synapseは、元々他のホームサーバーでホストされていたメディアのコピーを保存します。公式のリモートメディア削除APIは、指定されたタイムスタンプより前に最後にアクセスされたキャッシュされたリモートメディアを削除します。ユーザーがそのメディアを再度要求した場合、Synapseは元のホームサーバーから再度要求します。
Admin API を使用するには、サーバー管理者アクセストークンが必要です。Synapse では、このトークンを外部からのアクセスから保護し、通常はローカルで呼び出すことを推奨しています。詳細については、公式の Admin API ガイダンスを/_synapse/admin/...参照してください。
例えば、30日前をカットオフ日として計算し、それより古いリモートキャッシュを削除します。
export SYNAPSE_ADMIN_TOKEN='your-admin-token'
CUTOFF_MS=$(( $(date -d '30 days ago' +%s) * 1000 ))
curl -sS -X POST -H "Authorization: Bearer $SYNAPSE_ADMIN_TOKEN" "http://127.0.0.1:8008/_synapse/admin/v1/purge_media_cache?before_ts=$CUTOFF_MS"
応答にはdeleted件数が含まれます。カットオフは、ファイルの最終更新時刻ではなく、最終アクセス時刻に基づいて決定されます。ユーザーが通常閲覧する期間に合わせて期間を選択してください。削除されたリモートコンテンツは、元のサーバーがまだ利用可能にしている場合にのみ再度取得できます。
ローカルメディアは別物です。ローカルメディアはホームサーバーにアップロードされているため、削除すると添付ファイル、画像、その他のMXC参照が完全に破損する可能性があります。ローカルメディアを一括削除する前に、管理APIを使用して代表的なアイテムまたはユーザーメディアを確認してください。
特定のメディアアイテムを照会するには:
curl -sS -H "Authorization: Bearer $SYNAPSE_ADMIN_TOKEN" "http://127.0.0.1:8008/_synapse/admin/v1/media/example.org/MEDIA_ID"
レスポンスにはmedia_length、、、、 MIMEタイプ、および隔離ステータスが含まれる場合があります。これらのフィールドとサポートされている削除操作については、公式のMedia Admin APIドキュメントで定義されてcreated_tsいlast_access_tsます。
キャプション:削除ルールを適用する前にメディアメタデータを照会することで、経過時間とサイズの判断がファイルシステムのタイムスタンプではなく、Synapseの記録に基づいて行われるようにします。
Synapseは、最終アクセス日、およびオプションでサイズに基づいてローカルメディアを削除できます。
CUTOFF_MS=$(( $(date -d '180 days ago' +%s) * 1000 ))
curl -sS -X POST -H "Authorization: Bearer $SYNAPSE_ADMIN_TOKEN" "http://127.0.0.1:8008/_synapse/admin/v1/media/delete?before_ts=$CUTOFF_MS&size_gt=0&keep_profiles=true"
before_tsはミリ秒単位のUnixタイムスタンプで、最終アクセス時刻を示します。size_gtはバイト単位のしきい値で、デフォルト値はゼロです。keep_profiles=trueはデフォルト値で、プロファイルやルームイメージとして使用されているメディアを保持します。これらのイメージを削除する特別な理由がない限り、この保護を有効にしてください。
特定のローカルユーザーがアップロードしたメディアを一覧表示したり削除したりすることもできます/_synapse/admin/v1/users/<user_id>/media。これは、1つのアカウントが異常な増加の原因となっている場合に便利です。削除操作を使用する前に、特にその順序付けと制限パラメータについて、ユーザー管理APIのドキュメントを確認してください。
継続的な制御のために、Synapse は を提供しますmedia_retention。公式の設定フォーマットに基づいた例は次のとおりです。
media_retention:
local_media_lifetime: 180d
remote_media_lifetime: 30d
メディアは、設定された有効期間内に一度もアクセスされていない場合に削除対象となります。一度もアクセスされていない場合は、Synapse は作成日時を基準とします。オリジナル画像とサムネイル画像の両方が削除されます。有効期間のいずれかが省略されているか、null に設定されている場合、そのカテゴリは自動的に削除されません。
ローカルの値は慎重に選択してください。リモートキャッシュとは異なり、削除されたローカルメディアは、別のホームサーバーに元のメディアを要求するだけでは復元できません。隔離されたメディアは自動保持によって削除されず、保護されたローカルメディアも設定ドキュメントに従って除外されます。
max_upload_size個々のアップロードを制限する機能ですが、リポジトリ全体のサイズを制限するものではありません。現在のSynapseでは、media_upload_limitsユーザーが指定した期間内にアップロードできる量を制限する機能もサポートしています。これらの制御機能は容量の増加を抑制しますが、保持期間や容量監視に取って代わるものではありません。
Synapseはmedia_storage_providers、メディアを別のディレクトリに配置できるファイルシステムプロバイダなど、様々な機能をサポートしています。これは、専用のストレージボリュームや階層がある場合に役立ちます。これはストレージアーキテクチャの変更であり、緊急のクリーンアップコマンドではないため、本番環境のメディアを移行する前に、バックアップ、アクセス許可、ワーカーのアクセス、およびリカバリ動作をテストしてください。
パージ処理後は、容量とアプリケーションの動作の両方を確認してください。
df -h
du -sh /path/to/media_store
du -sh /path/to/media_store/* 2>/dev/null | sort -h
| 大きいとはどういう意味ですか? | 望ましい回答 | 主なリスク |
|---|---|---|
remote_content/remote_thumbnail | 最終アクセスカットオフでリモートキャッシュをクリアし、その後設定しますremote_media_lifetime。 | 古いメディアは再ダウンロードする必要があり、配信元が提供を停止している場合は利用できない可能性があります。 |
local_content/local_thumbnails | ビジネス上の保持ルールを定義し、メディアのメタデータを検査してから、local-media Admin API を使用します。 | サーバー上でホストされているコンテンツは、削除すると永久に削除されます。 |
| URLプレビューキャッシュ | 手動で介入する前に、URLプレビューの動作と現在のSynapseのクリーンアップ状況を確認してください。 | ファイルシステムの手動削除は、保存されているメタデータの同期を崩す可能性があります。 |
| すべてのカテゴリーが成長を続けている | 追加media_retention、アップロード制御、監視、または専用メディアストレージ。 | 清掃作業だけでは、次の容量不足事故を遅らせるに過ぎない。 |
Matrix Synapseのメディアリポジトリがディスク容量を圧迫した場合、まずどのメディアクラスが原因かを特定します。リモートキャッシュは通常、最も安全な最初のターゲットです。Synapseには専用のパージAPIがあり、通常はコンテンツを再度取得できるためです。ローカルメディアは、添付ファイルのサーバー側コピーがローカルにある場合があるため、より厳格なポリシーが必要です。すぐに空き容量が確保できたら、media_retentionメディアストアの増加率を設定および監視し、クリーンアップ作業が緊急ではなく、予測可能なメンテナンスとなるようにします。
Jitsi MeetブラウザのCPUスパイクを診断し、ビデオタイル、カメラエフェクト、ブラウザグラフィック、ホスト設定をチェックすることで、クライアントの負荷を軽減します。
Jitsi Videobridgeに内蔵されたPrometheusエンドポイントを使用して、Jitsi Videobridgeの状態、会議の負荷、トラフィックを追跡し、Grafanaでデータを探索およびグラフ化できます。
Jitsi Meet Docker 用のカスタムドメインを、DNS、PUBLIC_URL、HTTPS、Let's Encrypt、ファイアウォールポート、NAT 設定、エンドツーエンド検証とともに構成します。
SSL更新後に発生するZimbra管理コンソールの404エラーを修正するには、正しいURLとポート、プロキシルーティング、サービスステータス、デプロイ済みの証明書、およびログを確認してください。
アクティブなPHP SAPI、サイズ制限、コメント、および再検証設定を確認することで、NextcloudのPHP OPcache構成警告を診断および修正する方法を学びましょう。
MySQLまたはMariaDBのアップグレード後にKopanoデータベースの移行が失敗した場合は、バックアップ、サーバーバージョン、SQLモード、文字セット、スキーマ状態、およびログを確認してトラブルシューティングを行います。
セキュアなトランスポート、ユーザーおよびグループフィルタ、ログイン属性、そしてテスト済みの展開機能を使用して、NextcloudをLDAPまたはActive Directoryに接続します。
UnifiedPush、Androidの権限設定、バッテリー設定、および信頼性の高い検証テストを設定することで、Googleサービスを削除した端末におけるElement Android通知の問題を修正します。
Nextcloudのデータベースインデックス不足警告を、公式のoccコマンドでクリアします。まずバックアップを作成し、変更内容をプレビューしてから修復を実行し、結果を確認してください。
Element Web 用の Keycloak SSO を設定するには、OIDC を Synapse に接続し、正確なコールバック URL を設定し、ユーザー クレームをマッピングし、ログアウトをテストします。