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 masalah konfigurasi armada untuk solusi hosting GameLift terkelola Amazon. Untuk pemecahan masalah tambahan, Anda dapat mengakses instans armada dari jarak jauh setelah armada aktif. Lihat Terhubung dari jarak jauh ke instance GameLift armada Amazon.

Masalah pembuatan armada

Saat armada dibuat, GameLift layanan Amazon memulai alur kerja yang menerapkan instance baru di setiap lokasi armada dan mempersiapkannya untuk menjalankan server game Anda. Untuk penerangan mendetail, lihat Cara kerja pembuatan GameLift armada Amazon. Armada tidak dapat meng-host sesi game dan pemain hingga mencapai status Aktif. Bagian ini membahas masalah paling umum yang menghalangi pengaktifan armada.

Mengunduh dan memvalidasi

Selama fase ini, pembuatan armada mungkin gagal jika ada masalah dengan file bangunan yang diekstrak, skrip penginstalan tidak dapat dijalankan, atau jika file yang dapat dieksekusi yang ditentukan dalam konfigurasi waktu aktif tidak disertakan dalam file bangunan. Amazon GameLift menyediakan log yang terkait dengan masing-masing masalah ini.

Jika log tidak mengungkapkan masalah, mungkin masalahnya disebabkan oleh kesalahan layanan internal. Dalam hal ini, coba buat armada lagi. Jika masalah berlanjut, pertimbangkan untuk mengunggah ulang pembuatan game (jika file rusak). Anda juga dapat menghubungi GameLift dukungan Amazon atau memposting pertanyaan di forum.

Membangun

Masalah yang menyebabkan kegagalan selama fase membangun hampir pasti karena masalah dengan file bangunan game dan/atau skrip instalasi. Verifikasi bahwa file build game Anda, seperti yang diunggah ke AmazonGameLift, dapat diinstal pada mesin yang menjalankan sistem operasi yang sesuai. Pastikan untuk menggunakan instalasi OS yang bersih, bukan lingkungan pengembangan yang ada.

Mengaktifkan

Masalah pembuatan armada yang paling umum terjadi selama faseMengaktifkan. Selama fase ini, sejumlah elemen sedang diuji, termasuk viabilitas server game, pengaturan konfigurasi runtime, dan kemampuan server game untuk berinteraksi dengan GameLift layanan Amazon menggunakan Server SDK. Masalah umum yang muncul selama aktivasi armada meliputi:

Proses server gagal dimulai.

Pertama, periksa apakah Anda telah menetapkan jalur peluncuran dan parameter peluncuran opsional dengan benar dalam konfigurasi waktu aktif armada. Anda dapat melihat konfigurasi runtime armada saat ini menggunakan bagian Fleet detail page,Detail) atau dengan memanggil perintahAWS CLI. describe-runtime-configuration Jika konfigurasi waktu aktif terlihat benar, periksa masalah dengan file build dan/atau skrip instalasi game Anda.

Proses server dimulai tetapi armada gagal diaktifkan.

Jika proses server mulai dan berjalan dengan sukses, tetapi armada tidak pindah ke status Aktif, kemungkinan penyebabnya adalah bahwa proses server gagal memberi tahu Amazon GameLift bahwa ia siap untuk meng-host sesi game. Periksa apakah server game Anda memanggil tindakan Server API ProcessReady() dengan benar (lihat Inisialisasi proses server).

Permintaan koneksi peering VPC gagal.

Untuk armada yang dibuat dengan koneksi peering VPC (lihat Mengatur peering VPC dengan armada baru), peering VPC dilakukan selama fase Mengaktifkan. Jika peering VPC gagal karena alasan apa pun, status armada baru tidak dapat berubah menjadi Aktif. Anda dapat melacak keberhasilan atau kegagalan permintaan peering dengan menelepon describe-vpc-peering-connections. Pastikan untuk memeriksa apakah ada otorisasi peering VPC yang valid (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.

Tindakan VPC tidak diotorisasi.

Masalah ini hanya berlaku untuk armada yang Anda telah secara khusus membuat koneksi mengintip VPC untuk (lihat. VPC mengintip untuk Amazon GameLift Skenario ini terjadi karena proses penghapusan armada juga termasuk menghapus VPC armada dan koneksi peering VPC apa pun. Anda harus terlebih dahulu mendapatkan otorisasi dengan memanggil Amazon GameLift service API CreateVpcPeeringAuthorization() atau menggunakan perintah AWS CLI. create-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.