Debug masalah GameLift armada Amazon - Amazon GameLift

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

Debug masalah GameLift armada Amazon

Topik ini memberikan panduan tentang cara mengatasi masalah dengan EC2 armada GameLift terkelola Amazon Anda.

Masalah pembuatan armada

Saat Anda membuat EC2 armada terkelola, GameLift layanan Amazon memulai alur kerja yang membuat armada, menyebarkan EC2 instance dengan build server game yang diinstal, dan memulai proses server game di setiap instance. Untuk penerangan mendetail, lihat Cara kerja pembuatan GameLift armada Amazon. Armada tidak dapat meng-host sesi game dan pemain hingga mencapai status Aktif.

Anda dapat men-debug masalah yang mencegah armada menjadi aktif dengan mengidentifikasi fase pembuatan armada tempat masalah terjadi dan meninjau peristiwa dan log pembuatan armada. Jika log tidak menawarkan informasi yang berguna, ada kemungkinan bahwa masalahnya adalah karena kesalahan layanan internal. Dalam situasi ini, cobalah untuk membuat armada lagi. Jika masalah berlanjut, coba unggah ulang build game untuk menyelesaikan kemungkinan kerusakan file). Anda juga dapat menghubungi GameLift dukungan Amazon atau memposting pertanyaan di forum.

Mengunduh dan memvalidasi build

Selama fase ini, Amazon GameLift membuat server game yang Anda unggah, mengekstrak file, dan menjalankan skrip penginstalan apa pun. Jika pembuatan armada gagal selama fase ini, lihat peristiwa armada dan log untuk menentukan masalahnya. Kemungkinan penyebabnya meliputi:

  • Amazon tidak GameLift bisa mendapatkan file build terkompresi (eventFLEET_BINARY_DOWNLOAD_FAILED). Pastikan lokasi penyimpanan build dapat diakses, bahwa Anda membuat armada yang Wilayah AWS sama dengan build, dan Amazon GameLift memiliki izin yang benar untuk mengaksesnya.

  • Amazon tidak GameLift dapat mengekstrak file build (eventFLEET_CREATION_EXTRACTING_BUILD).

  • Skrip penginstalan dalam file build gagal diselesaikan dengan sukses (eventFLEET_CREATION_FAILED_INSTALLER).

Membangun sumber daya armada

Masalah selama fase ini biasanya melibatkan alokasi dan penyebaran sumber daya armada. Kemungkinan penyebabnya meliputi:

  • Jenis instance yang diminta tidak tersedia.

  • Jenis armada yang diminta (Spot atau Sesuai Permintaan) tidak tersedia.

Mengaktifkan proses server game

Selama fase ini, Amazon GameLift mencoba sejumlah tugas dan menguji elemen kunci, termasuk viabilitas server game, pengaturan konfigurasi runtime, dan kemampuan server game untuk terhubung dengan GameLift layanan Amazon menggunakan Server. SDK

catatan

Pada fase ini, Anda dapat mengakses instance armada dari jarak jauh untuk menyelidiki masalah lebih lanjut. Lihat Terhubung dari jarak jauh ke instance GameLift armada Amazon.

Masalah yang mungkin terjadi meliputi:

  • Proses server tidak mulai berjalan. Ini menunjukkan masalah dengan pengaturan konfigurasi runtime armada (peristiwa FLEET_VALIDATION_LAUNCH_PATH_NOT_FOUND atauFLEET_VALIDATION_EXECUTABLE_RUNTIME_FAILURE. Verifikasi bahwa Anda telah mengatur jalur peluncuran dan parameter peluncuran opsional dengan benar.

  • Proses server mulai berjalan, tetapi armada gagal diaktifkan. Jika proses server mulai dan berjalan dengan sukses, tetapi armada tidak pindah ke status Aktif, kemungkinan penyebabnya adalah proses server gagal berkomunikasi dengan GameLift layanan Amazon. Verifikasi bahwa server game Anda membuat SDK panggilan server yang benar ini (lihatInisialisasi proses server):

    • Proses server gagal untuk menginisialisasi (eventSERVER_PROCESS_SDK_INITIALIZATION_TIMEOUT). Proses server tidak berhasil meneleponInitSdk().

    • Proses server gagal memberi tahu Amazon GameLift ketika siap untuk menyelenggarakan sesi permainan (acaraSERVER_PROCESS_PROCESS_READY_TIMEOUT). Proses server diinisialisasi tetapi tidak memanggil tepat ProcessReady() waktu.

  • Permintaan koneksi VPC peering gagal. Untuk armada yang dibuat dengan koneksi VPC peering (lihatMengatur peering VPC dengan armada baru), VPC peering dilakukan selama fase Pengaktifan ini. Jika VPC pengintipan gagal karena alasan apa pun, armada baru akan gagal pindah ke status Aktif. Anda dapat melacak keberhasilan atau kegagalan permintaan peering dengan menelepon describe-vpc-peering-connections. Pastikan untuk memeriksa apakah otorisasi VPC peering yang valid ada (describe-vpc-peering-authorizations, karena otorisasi hanya berlaku selama 24 jam.

Masalah proses server

Proses server dimulai tetapi gagal dengan cepat atau melaporkan kondisi yang buruk.

Selain masalah dengan build game Anda, hasil ini dapat terjadi saat mencoba menjalankan terlalu banyak proses server secara bersamaan pada instans. Jumlah optimal proses serentak bergantung pada tipe instans dan persyaratan sumber daya server game Anda. Coba kurangi jumlah proses bersamaan, yang diatur dalam konfigurasi waktu aktif armada, untuk melihat apakah performa meningkat. Anda dapat mengubah konfigurasi runtime armada menggunakan GameLift konsol Amazon (mengedit pengaturan alokasi kapasitas armada) atau dengan memanggil perintah. AWS CLI update-runtime-configuration

Masalah penghapusan armada

Armada tidak dapat diakhiri karena jumlah instans maksimum.

Pesan kesalahan menunjukkan bahwa armada yang dihapus masih memiliki instans aktif, yang tidak diizinkan. Anda harus terlebih dahulu menskalakan armada ke nol instans aktif. Ini dilakukan dengan secara manual menyetel jumlah instans yang diinginkan armada ke "0" dan kemudian menunggu penurunan skala dideploy. Pastikan untuk mematikan auto-scaling, yang akan melawan pengaturan manual.

VPCtindakan tidak diizinkan.

Masalah ini hanya berlaku untuk armada yang secara khusus Anda buat koneksi VPC peering (lihat. VPC mengintip untuk Amazon GameLift Skenario ini terjadi karena proses menghapus armada juga termasuk menghapus armada VPC dan koneksi VPC peering apa pun. Anda harus terlebih dahulu mendapatkan otorisasi dengan memanggil GameLift layanan Amazon API CreateVpcPeeringAuthorization() atau menggunakan AWS CLI perintahcreate-vpc-peering-authorization. Setelah Anda memiliki otorisasi, Anda dapat menghapus armada.

Masalah armada Realtime Servers

Sesi game zombie: Mereka memulai dan menjalankan game, tetapi mereka tidak pernah berakhir.

Anda mungkin mengamati masalah ini sebagai salah satu skenario berikut:

  • Pembaruan skrip tidak diambil oleh Realtime Servers armada.

  • Armada dengan cepat mencapai kapasitas maksimum dan tidak menurunkan skala saat aktivitas pemain (seperti permintaan sesi game baru) berkurang.

Ini hampir pasti merupakan hasil dari kegagalan memanggil processEnding skrip Realtime Anda dengan sukses. Meskipun armada berjalan aktif dan sesi game dimulai, tidak ada metode untuk menghentikannya. Akibatnya, Realtime Servers yang menjalankan sesi game tidak pernah dibebaskan untuk memulai yang baru, dan sesi game baru hanya dapat dimulai ketika Realtime Servers baru diputar. Selain itu, pembaruan skrip Realtime tidak berdampak pada sesi game yang sudah berjalan, hanya satu.

Untuk mencegah hal ini terjadi, skrip perlu menyediakan mekanisme untuk memicu panggilan processEnding. Seperti yang diilustrasikan dalam Contoh skrip Server Realtime, salah satu caranya adalah memprogram batas waktu sesi idle di mana, jika tidak ada pemain yang connect selama jangka waktu tertentu, skrip akan mengakhiri sesi game saat ini.

Namun, jika Anda mengalami skenario ini, ada beberapa solusi untuk membuat Realtime Servers Anda tidak macet. Triknya adalah memicu proses Realtime Servers—atau instans armada yang mendasarinya—untuk memulai ulang. Dalam acara ini, GameLift secara otomatis menutup sesi permainan untuk Anda. Setelah Realtime Servers dibebaskan, mereka dapat memulai sesi game baru menggunakan skrip Realtime versi terbaru.

Ada beberapa metode untuk mencapai ini, tergantung pada seberapa luas masalahnya:

  • Menurunkan skala seluruh armada. Cara ini paling sederhana untuk dilakukan tetapi memiliki efek yang luas. Turunkan skala armada ke nol instans, tunggu hingga armada diturunkan sepenuhnya, lalu tingkatkan kembali. Ini akan menghapus semua sesi game yang ada, dan membiarkan Anda memulai dengan skrip Realtime terbaru yang diperbarui.

  • Akses instans dari jarak jauh dan mulai ulang prosesnya. Ini adalah pilihan yang baik jika Anda hanya memiliki beberapa proses untuk diperbaiki. Jika Anda sudah login ke instans, seperti tail log atau debug, maka ini mungkin menjadi metode tercepat. Lihat Terhubung dari jarak jauh ke instance GameLift armada Amazon.

Jika Anda memilih untuk tidak menyertakan cara untuk memanggil processEnding dalam skrip Realtime Anda, ada beberapa situasi rumit yang mungkin terjadi bahkan ketika armada berjalan aktif dan sesi game dimulai. Pertama, sesi game berjalan tidak berakhir. Akibatnya, proses server yang menjalankan sesi game tersebut tidak pernah bebas untuk memulai sesi game baru. Kedua, Realtime Servers tidak mengambil pembaruan skrip.