Mengelola Resource Aplikasi

App Engine menghasilkan laporan penggunaan tentang performa dan pemanfaatan resource aplikasi Anda. Di bawah ini tercantum strategi potensial untuk mengelola resource Anda dengan lebih efisien. Untuk mengetahui informasi selengkapnya, lihat halaman pricing.

Melihat laporan penggunaan

Saat mengevaluasi performa aplikasi, Anda harus memeriksa jumlah instance yang dijalankan aplikasi, dan cara aplikasi menggunakan resource.

Melihat laporan penggunaan dasbor

Melihat halaman Instance

Bagian berikut menyarankan beberapa strategi untuk mengelola resource.

Mengelola penskalaan instance dinamis

Menurunkan latensi

Latensi aplikasi memengaruhi jumlah instance yang diperlukan untuk menangani traffic Anda. Dengan mengurangi latensi, Anda dapat mengurangi jumlah instance yang digunakan untuk menyajikan aplikasi. Cloud Trace adalah alat yang berguna untuk melihat data tentang latensi dan dapat memahami potensi perubahan untuk menguranginya.

Setelah menggunakan Cloud Trace untuk melihat latensi, coba beberapa strategi berikut untuk mengurangi latensi:

  • Tingkatkan caching untuk data bersama yang sering diakses - Ini adalah cara lain untuk mengatakan - gunakan Memcache App Engine. Selain itu, menetapkan header kontrol cache aplikasi dapat memberikan dampak yang signifikan terhadap seberapa efisien data Anda disimpan dalam cache oleh server dan browser. Bahkan menyimpan data dalam cache selama beberapa detik dapat berdampak pada seberapa efisien aplikasi Anda melayani traffic.
  • Gunakan Memcache App Engine secara lebih efisien - Gunakan panggilan batch untuk mendapatkan, menetapkan, menghapus, dll., daripada serangkaian panggilan individual.
  • Gunakan tugas untuk fungsi yang tidak terikat permintaan- Jika aplikasi Anda melakukan pekerjaan yang dapat dilakukan di luar cakupan permintaan yang ditampilkan kepada pengguna, masukkan dalam tugas! Mengirim pekerjaan ini ke Task Queue, daripada menunggunya selesai sebelum menampilkan respons dapat mengurangi latensi yang ditampilkan kepada pengguna secara signifikan. Task Queue dapat memberi Anda lebih banyak kontrol atas kecepatan eksekusi dan membantu memperlancar beban Anda.
  • Gunakan Firestore dalam mode Datastore (Datastore) secara lebih efisien - Lihat di bawah untuk detail selengkapnya.
  • Jalankan beberapa panggilan URL Fetch secara paralel:
    • Batch beberapa panggilan Fetch URL, daripada menanganinya satu per satu di dalam setiap permintaan yang ditampilkan kepada pengguna, dan tangani dalam tugas offline secara paralel melalui Fetch URL asinkron.
    • Gunakan kategori.
  • Untuk sesi HTTP, tulis secara asinkron.

Mengubah setelan performa penskalaan otomatis

File konfigurasi app.yaml berisi beberapa setelan yang dapat Anda gunakan untuk menyesuaikan keseimbangan antara beban performa dan resource untuk versi tertentu aplikasi Anda. Untuk daftar pengaturan penskalaan otomatis, lihat menskalakan elemen. Tonton video Setelan Scheduler Baru App Engine untuk melihat efek setelan ini.

Catatan: Semua instance Go memiliki permintaan serentak yang diaktifkan secara otomatis.

Mengonfigurasi setelan Task Queue

Setelan default untuk Task Queue disesuaikan untuk performa. Dengan default ini, ketika Anda memasukkan beberapa tugas ke dalam antrean secara bersamaan, tugas tersebut kemungkinan akan menyebabkan Frontend Instance baru dimulai. Berikut beberapa saran cara menyesuaikan Task Queue untuk menghemat Jam Kerja Instance:

  • Menetapkan header X-AppEngine-FailFast pada tugas yang tidak sensitif terhadap latensi. Header ini menginstruksikan scheduler untuk segera menggagalkan permintaan jika instance yang ada tidak tersedia. Task Queue akan mencoba ulang dan melakukan back-off hingga instance yang ada tersedia untuk melayani permintaan. Namun, penting untuk diperhatikan bahwa saat permintaan dengan set X-AppEngine-FailFast memenuhi instance yang ada, permintaan tanpa set header tersebut masih dapat menyebabkan instance baru dimulai.

Tayangkan konten statis jika memungkinkan

Penayangan konten statis ditangani oleh infrastruktur App Engine khusus, yang tidak memerlukan Jam Kerja Instance. Jika Anda perlu menetapkan header kustom, gunakan Blobstore API. Penyajian respons Blob yang sebenarnya tidak mengurangi Jam Kerja Instance.

Mengelola penyimpanan aplikasi

App Engine menghitung biaya penyimpanan berdasarkan ukuran entity dalam Datastore, ukuran indeks Datastore, ukuran tugas dalam task queue, dan jumlah data yang disimpan di Blobstore. Berikut beberapa hal yang dapat Anda lakukan untuk memastikan Anda tidak menyimpan lebih banyak data dari yang diperlukan:

  • Hapus setiap entity atau blob yang tidak lagi diperlukan aplikasi Anda.
  • Hapus indeks yang tidak diperlukan, seperti yang dibahas di bagian Mengelola Penggunaan Datastore di bawah, untuk mengurangi biaya penyimpanan indeks.

Mengelola penggunaan Datastore

App Engine memperhitungkan jumlah operasi yang dilakukan di Datastore. Berikut adalah beberapa strategi yang dapat mengakibatkan penurunan konsumsi resource Datastore, serta latensi yang lebih rendah untuk permintaan ke Datastore:

  • Dataviewer konsol Google Cloud menampilkan jumlah operasi tulis yang diperlukan untuk membuat setiap entity di Datastore lokal Anda. Anda dapat menggunakan informasi ini untuk memahami biaya penulisan setiap entity. Lihat Memahami Biaya Penulisan untuk mengetahui informasi tentang cara menafsirkan data ini.
  • Hapus indeks yang tidak diperlukan, yang akan mengurangi biaya penyimpanan dan penulisan entity. Anda dapat melihat indeks yang saat ini ditayangkan untuk aplikasi Anda di halaman penelusuran konsol Google Cloud.
  • Saat mendesain model data, Anda mungkin dapat menulis kueri dengan cara sedemikian rupa, sekaligus untuk menghindari indeks kustom. Baca dokumentasi Kueri dan Indeks untuk mengetahui informasi selengkapnya tentang cara App Engine menghasilkan indeks.
  • Jika memungkinkan, ganti properti yang diindeks (yang merupakan default) dengan properti yang tidak diindeks (), yang mengurangi jumlah operasi tulis Datastore saat Anda menempatkan entity. Perhatian, jika nantinya Anda memutuskan bahwa Anda harus membuat kueri pada properti yang tidak diindeks, Anda tidak hanya perlu mengubah kode untuk kembali menggunakan properti yang diindeks, tetapi Anda harus menjalankan pengurangan peta atas semua entity untuk membuat reputasinya.
  • Berkat peningkatan perencana kueri Datastore dalam rilis App Engine 1.5.2 dan 1.5.3, kueri Anda mungkin sekarang memerlukan lebih sedikit indeks daripada sebelumnya. Meskipun Anda masih dapat memilih untuk mempertahankan indeks kustom tertentu karena alasan performa, Anda mungkin dapat menghapus indeks lainnya, sehingga mengurangi biaya penyimpanan dan penulisan entity.
  • Konfigurasi ulang model data sehingga Anda dapat mengganti kueri dengan pengambilan menurut kunci yang lebih murah dan lebih efisien.
  • Gunakan kueri khusus kunci, bukan kueri entity, jika memungkinkan.
  • Untuk mengurangi latensi, ganti beberapa get() entity dengan batch get().
  • Gunakan kursor Datastore untuk penomoran halaman, daripada offset.
  • Paralelkan beberapa RPC Datastore melalui datastore API asinkron.

Catatan: Operasi Datastore kecil mencakup panggilan untuk mengalokasikan ID Datastore atau kueri khusus kunci. Lihat halaman pricing untuk mengetahui informasi selengkapnya tentang biaya.

Mengelola resource lainnya

Sebaiknya pastikan Anda memeriksa tingkat error dan mewaspadai semua panggilan tidak valid yang mungkin Anda buat. Dalam beberapa kasus, Anda mungkin dapat mendeteksi panggilan tersebut lebih awal.