ゲームラグ白書 › L9 サーバーのゲームプロセス
オブジェクトの蓄積(消えずに残るアイテム・召喚物) Entity / timer buildup over uptime
原因ID sp-entity-buildup · 主担当 ゲーム開発チーム・サーバー開発
図と実験のあるメインページでこのカードを開く →
消えるはずの地面のアイテム、召喚物、終わったタイマーが片付けられずにたまると、サーバーを長く稼働させるほど毎ティックの処理が増えます。
なぜ 地面のアイテム・召喚物・期限切れのタイマー・空のパーティ情報が、本来のタイミングで削除されない → すると ティックごとに走査するリストが日ごとに長くなる → 画面では メンテ明けは問題ないが、数日たつとそのサーバー・エリアだけ次第に重くなる
- 症状
- スローモーション, カクつき, 入力遅延
- 要因
- ストール
- 誰に起きるか
- サーバー全体, 特定の場所・チャンネル
- いつ
- 長時間稼働するほど
- 担当
- 主担当 ゲーム開発チーム・サーバー開発
- ゲーム開発チームの対応
- エリアごとのオブジェクト数をメトリクスとして記録して傾向を確認、オブジェクトごとの寿命と個数の上限、定期的なクリーンアップ。
- 数値の目安
- ティックごとにすべてのオブジェクトを1回ずつ走査するサーバーなら、オブジェクト数が2倍になると、その部分のティック時間も2倍になります。
- グラフでは
- 徐々に上昇して急落 · ゾーンごとのオブジェクト数、サーバーのティック時間
- 確認箇所
- ゾーン・サーバーごとのオブジェクト数(地面のアイテム・召喚物・タイマー)とティック時間を、メンテナンスの周期より長い期間(数週間)で確認
- 該当する場合
- メンテ明けに低い値から始まったオブジェクト数とティック時間が日ごとに上がり、メンテナンス・再起動のたびにがくんと下がることを繰り返し、その間メモリには余裕がある
- 該当しない場合
- ティックは変わらないのにメモリだけが上がり続けるなら、メモリリークの側
- 確認手段
- ゲームサーバー・クライアントのログ・メトリクスが必要
- もっと詳しく
- メモリリークと同じく長く稼働するほど悪化しますが、メモリには余裕があるのにティック時間だけが延びる点が異なります。オブジェクト数のグラフがメンテナンスの周期ごとにのこぎり状になっていれば、このケースです。
出典
- Actor Ticking in Unreal Engine Epic Games
アクター・コンポーネントは間隔を個別に設定しなければ毎フレーム1回ティックが実行され、不要ならティックを無効にできる - AActor::SetLifeSpan Epic Games
アクターに寿命を設定すると、期限が来たときに自動で破棄
あわせて読みたい原因
同じ層:L9 サーバーのゲームプロセス
同じ症状(スローモーション)を起こすほかの層の原因
図と実験のあるメインページでこのカードを見る