Chapter 9.11: サーバートラブルシューティング
ホーム | << 前へ: MOD管理 | 次へ: 上級トピック >>
概要: 最も一般的なDayZサーバーの問題を診断し修正します -- 起動失敗、接続問題、クラッシュ、ルートと車両のスポーン、パーシステンス、パフォーマンス。ここでのすべての解決策は、数千のコミュニティレポートにわたる実際の障害パターンから得られたものです。
目次
- サーバーが起動しない
- プレイヤーが接続できない
- クラッシュとNullポインタ
- ルートがスポーンしない
- 車両がスポーンしない
- パーシステンスの問題
- パフォーマンスの問題
- ログファイルの読み方
- クイック診断チェックリスト
サーバーが起動しない
DLLファイルの不足
DayZServer_x64.exe がDLL不足エラーで即座にクラッシュする場合は、Microsoftの公式サイトから最新の Visual C++ Redistributable for Visual Studio 2019(x64)をインストールして再起動してください。
ポートがすでに使用中
別のDayZインスタンスまたはアプリケーションがポート2302を占有しています。netstat -ano | findstr 2302(Windows)または ss -tulnp | grep 2302(Linux)で確認してください。競合するプロセスを終了するか、-port=2402 でポートを変更してください。
ミッションフォルダの不足
サーバーは mpmissions/<template>/ を期待しており、フォルダ名は serverDZ.cfg の template 値と正確に一致する必要があります。チェルナルスの場合、mpmissions/dayzOffline.chernarusplus/ で、少なくとも init.c を含む必要があります。
無効なserverDZ.cfg
単一のセミコロンの欠落や間違ったクォートタイプがサイレントに起動を妨げます。注意すべき点:
- 値の行の末尾に
;がない - 直線クォートの代わりにスマートクォート
- classエントリの周りに
{};ブロックがない
MODファイルの不足
-mod=@CF;@VPPAdminTools;@MyMod のすべてのパスがサーバールートからの相対パスで存在し、.pbo ファイルを含む addons/ フォルダが含まれている必要があります。1つでも不正なパスがあると起動が妨げられます。
プレイヤーが接続できない
ポートフォワーディング
DayZには以下のポートのフォワーディングとファイアウォールでの開放が必要です:
| ポート | プロトコル | 目的 |
|---|---|---|
| 2302 | UDP | ゲームトラフィック |
| 2303 | UDP | Steamネットワーキング |
| 2304 | UDP | Steamクエリ(内部) |
| 27016 | UDP | Steamサーバーブラウザクエリ |
-port= でベースポートを変更した場合、他のすべてのポートも同じオフセットでシフトします。
ファイアウォールのブロック
OSのファイアウォール例外に DayZServer_x64.exe を追加してください。Windowsの場合: netsh advfirewall firewall add rule name="DayZ Server" dir=in action=allow program="C:\DayZServer\DayZServer_x64.exe" enable=yes。Linuxの場合、ufw または iptables でポートを開いてください。
MODの不一致
クライアントはサーバーと完全に同じMODバージョンを持つ必要があります。プレイヤーが「Mod mismatch」と表示された場合、どちらかが古いバージョンを持っています。MODがWorkshopアップデートを受けた際に両方をアップデートしてください。
.bikeyファイルの不足
すべてのMODの .bikey ファイルがサーバーの keys/ ディレクトリに必要です。ないと、BattlEyeがクライアントの署名されたPBOを拒否します。各MODの keys/ または key/ フォルダ内を確認してください。
サーバーが満員
serverDZ.cfg の maxPlayers を確認してください(デフォルト60)。
クラッシュとNullポインタ
Nullポインタアクセス
SCRIPT (E): Null pointer access in 'MyClass.SomeMethod' -- 最も一般的なスクリプトエラーです。MODが削除されたまたは未初期化のオブジェクトに対してメソッドを呼び出しています。これはサーバーの設定ミスではなくMODのバグです。完全なRPTログと共にMOD作者に報告してください。
スクリプトエラーの発見
RPTログで SCRIPT (E) を検索してください。エラー内のクラスとメソッド名が、どのMODが原因かを示します。RPTの場所:
- サーバー:
$profiles/ディレクトリ(-profiles=が設定されていない場合はサーバールート) - クライアント:
%localappdata%\DayZ\
再起動時のクラッシュ
毎回の再起動でサーバーがクラッシュする場合、storage_1/ が破損している可能性があります。サーバーを停止し、storage_1/ をバックアップし、storage_1/data/events.bin を削除して再起動してください。それでも失敗する場合は、storage_1/ ディレクトリ全体を削除してください(すべてのパーシステンスがワイプされます)。
MODアップデート後のクラッシュ
前のMODバージョンに戻してください。Workshopの変更ログでブレイキングチェンジ -- クラス名の変更、設定の削除、RPCフォーマットの変更は一般的な原因です。
ルートがスポーンしない
types.xmlが登録されていない
types.xml で定義されたアイテムは、ファイルが cfgeconomycore.xml に登録されていない限りスポーンしません:
<economycore>
<ce folder="db">
<file name="types.xml" type="types" />
</ce>
</economycore>カスタムtypesファイル(例: types_custom.xml)を使用する場合は、別の <file> エントリを追加してください。
カテゴリ、使用場所、値のタグが間違っている
types.xml内のすべての <category>、<usage>、<value> タグは、cfglimitsdefinition.xml で定義された名前と一致する必要があります。定義が military(小文字)なのに usage name="Military"(大文字M)というタイプミスがあると、アイテムは警告なしにスポーンしません。
Nominalが0に設定されている
nominal が 0 の場合、CEはそのアイテムを決してスポーンさせません。これはクラフト、イベント、または管理者配置でのみ存在すべきアイテムに対して意図的です。アイテムを自然にスポーンさせたい場合は、nominal を少なくとも 1 に設定してください。
マップグループ位置の不足
アイテムには建物内の有効なスポーン位置が必要です。カスタムアイテムに一致するマップグループ位置(mapgroupproto.xml で定義)がない場合、CEには配置する場所がありません。マップ上に既に有効な位置を持つカテゴリと使用場所にアイテムを割り当ててください。
車両がスポーンしない
車両はイベントシステムを使用し、types.xmlでは ありません。
events.xmlの設定
車両スポーンは events.xml で定義されます:
<event name="VehicleOffroadHatchback">
<nominal>8</nominal>
<min>5</min>
<max>8</max>
<lifetime>3888000</lifetime>
<restock>0</restock>
<saferadius>500</saferadius>
<distanceradius>500</distanceradius>
<cleanupradius>200</cleanupradius>
<flags deletable="0" init_random="0" remove_damaged="1"/>
<position>fixed</position>
<limit>child</limit>
<active>1</active>
<children>
<child lootmax="0" lootmin="0" max="1" min="1" type="OffroadHatchback"/>
</children>
</event>スポーン位置の不足
<position>fixed</position> の車両イベントには cfgeventspawns.xml のエントリが必要です。定義された座標がなければ、イベントには車両を配置する場所がありません。
イベントが無効
<active>0</active> の場合、イベントは完全に無効です。1 に設定してください。
損傷した車両がスロットをブロック
remove_damaged="0" の場合、破壊された車両が永久にワールドに残りスポーンスロットを占有します。CEが残骸をクリーンアップして代替品をスポーンするよう remove_damaged="1" に設定してください。
パーシステンスの問題
拠点が消失する
テリトリーフラッグはタイマーが切れる前にリフレッシュする必要があります。デフォルトの FlagRefreshFrequency は 432000 秒(5日)です。その期間内にプレイヤーがフラッグとインタラクトしない場合、フラッグとその半径内のすべてのオブジェクトが削除されます。
globals.xml の値を確認してください:
<var name="FlagRefreshFrequency" type="0" value="432000"/>プレイヤーがあまり頻繁にログインしない低人口サーバーではこの値を増やしてください。
再起動後にアイテムが消える
すべてのアイテムには types.xml に lifetime(秒)があります。プレイヤーのインタラクションなしに期限が切れると、CEがそれを削除します。参考: 3888000 = 45日、604800 = 7日、14400 = 4時間。コンテナ内のアイテムはコンテナのライフタイムを継承します。
storage_1/が大きくなりすぎる
storage_1/ ディレクトリが数百MBを超えて成長している場合、エコノミーが生産するアイテムが多すぎます。types.xml全体で nominal 値を減らしてください。特に食料、衣服、弾薬などの高カウントアイテムに注目してください。膨張したパーシステンスファイルは再起動時間を長くします。
プレイヤーデータの消失
プレイヤーのインベントリと位置は storage_1/players/ に格納されています。このディレクトリが削除または破損すると、すべてのプレイヤーがフレッシュスポーンになります。storage_1/ を定期的にバックアップしてください。
パフォーマンスの問題
サーバーFPSの低下
DayZサーバーはスムーズなゲームプレイのために30+ FPSを目標としています。低サーバーFPSの一般的な原因:
- ゾンビが多すぎる -- globals.xml の
ZombieMaxCountを減らす(デフォルト800、400-600を試す) - 動物が多すぎる --
AnimalMaxCountを減らす(デフォルト200、100を試す) - ルートが過剰 -- types.xml全体の
nominal値を下げる - 建築オブジェクトが多すぎる -- 数百のアイテムを持つ大きな拠点がパーシステンスに負荷をかける
- スクリプトが重いMOD -- 一部のMODはフレームごとに高コストなロジックを実行する
デシンク
プレイヤーがラバーバンディング、アクションの遅延、透明なゾンビを経験するのはデシンクの症状です。これはほぼ常にサーバーFPSが15を下回っていることを意味します。デシンク固有の設定を探すのではなく、根本的なパフォーマンス問題を修正してください。
再起動時間が長い
再起動時間は storage_1/ のサイズに直接比例します。再起動に2-3分以上かかる場合、永続的なオブジェクトが多すぎます。ルートのnominal値を減らし適切なライフタイムを設定してください。
ログファイルの読み方
サーバーRPTの場所
RPTファイルは $profiles/(-profiles= で起動した場合)またはサーバールートにあります。ファイル名パターン: DayZServer_x64_<date>_<time>.RPT。
検索すべきキーワード
| 検索語 | 意味 |
|---|---|
SCRIPT (E) | スクリプトエラー -- MODにバグがある |
[ERROR] | エンジンレベルのエラー |
ErrorMessage | シャットダウンを引き起こす可能性のある致命的エラー |
Cannot open | ファイルの不足(PBO、設定、ミッション) |
Crash | アプリケーションレベルのクラッシュ |
BattlEyeログ
BattlEyeログはサーバールート内の BattlEye/ ディレクトリにあります。キックとBANイベントが表示されます。プレイヤーが予期せずキックされたと報告した場合、ここを最初に確認してください。
クイック診断チェックリスト
何か問題が発生した場合、以下のリストを順に確認してください:
1. サーバーRPTでSCRIPT (E)と[ERROR]行を確認する
2. すべての-mod=パスが存在しaddons/*.pboを含むことを確認する
3. すべての.bikeyファイルがkeys/にコピーされていることを確認する
4. serverDZ.cfgの構文エラー(セミコロンの欠落)を確認する
5. ポートフォワーディングを確認: 2302 UDP + 27016 UDP
6. ミッションフォルダがserverDZ.cfgのtemplate値と一致することを確認する
7. storage_1/の破損を確認する(必要に応じてevents.binを削除)
8. まずMODなしでテストし、その後1つずつMODを追加するステップ8が最も強力な技術です。サーバーがバニラでは動作するがMODで壊れる場合、バイナリサーチで問題のMODを特定できます -- MODの半分を追加し、テストし、絞り込みます。
