Referensi appengine-web.xml App Engine

ID region

REGION_ID adalah kode singkat yang ditetapkan Google berdasarkan region yang Anda pilih saat membuat aplikasi. Kode ini tidak sesuai dengan negara atau provinsi, meskipun beberapa ID region mungkin tampak mirip dengan kode negara dan provinsi yang umum digunakan. Untuk aplikasi yang dibuat setelah Februari 2020, REGION_ID.r disertakan dalam URL App Engine. Untuk aplikasi lama yang dibuat sebelum tanggal tersebut, ID region bersifat opsional dalam URL.

Pelajari ID region lebih lanjut.

Selain deployment descriptor web.xml , aplikasi App Engine Java menggunakan file konfigurasi, bernama appengine-web.xml, untuk menentukan informasi tentang aplikasi dan untuk mengidentifikasi file mana dalam file WAR aplikasi yang merupakan file statis (seperti gambar) dan mana yang merupakan file sumber daya yang digunakan oleh aplikasi.

Contoh

Contoh berikut adalah file minimal yang menentukan runtime Java 8 tanpa file statis atau file resource:

<?xml version="1.0" encoding="utf-8"?>
<appengine-web-app xmlns="http://appengine.google.com/ns/1.0">
  <threadsafe>true</threadsafe>
  <runtime>java8</runtime>
</appengine-web-app>

Sintaks

Aplikasi App Engine Java harus memiliki file bernama appengine-web.xml di dalam WAR-nya, di direktori WEB-INF/. File ini adalah file XML dengan elemen root <appengine-web-app>.

Anda dapat menemukan Definisi Jenis Dokumen dan spesifikasi skema untuk appengine-web.xml di direktori docs/ SDK.

Elemen Deskripsi
<async-session-persistence>

Opsional. Anda dapat mengurangi latensi permintaan dengan mengonfigurasi aplikasi untuk menulis data sesi HTTP secara asinkron ke datastore:

<?xml version="1.0" encoding="utf-8"?>
<appengine-web-app xmlns="http://appengine.google.com/ns/1.0">
  <!-- ... -->
  <async-session-persistence enabled="true" />
  <!-- ... -->
</appengine-web-app>

Dengan mengaktifkan persistensi sesi asinkron, App Engine akan mengirimkan tugas Task Queue untuk menulis data sesi ke datastore sebelum menulis data ke memcache. Secara default, tugas akan dikirim ke antrean `default`. Jika Anda ingin menggunakan antrean lain, tambahkan atribut `queue-name`:

<?xml version="1.0" encoding="utf-8"?>
<appengine-web-app xmlns="http://appengine.google.com/ns/1.0">
  <!-- ... -->
  <async-session-persistence enabled="true" queue-name="myqueue"/>
  <!-- ... -->
</appengine-web-app>

Data sesi selalu ditulis secara sinkron ke memcache. Jika permintaan mencoba membaca data sesi saat memcache tidak tersedia (atau data sesi telah dihapus), permintaan tersebut akan digagalkan ke Datastore, yang mungkin belum memiliki data sesi terbaru. Artinya, persistensi sesi asinkron dapat menyebabkan aplikasi melihat data sesi yang sudah tidak berlaku. Namun, untuk sebagian besar aplikasi, manfaat latensi jauh lebih besar daripada risikonya.

<auto-id-policy> Opsional. Jika Anda menetapkan ID entity secara otomatis, Anda dapat mengubah metode yang digunakan dengan menetapkan kebijakan ID otomatis. Berikut ini adalah opsi yang valid:
default
Default. Menggunakan ID otomatis yang tersebar, yang merupakan bilangan bulat yang didistribusikan dengan baik, dan cukup kecil untuk ditampilkan oleh float 64-bit.
legacy
Opsi lama tidak akan digunakan lagi dalam rilis mendatang dan akan dihapus. Untuk mengetahui informasi lebih lanjut, lihat postingan blog yang mengumumkan perubahan ini.
<automatic-scaling>

Opsional. Untuk penjelasan lebih lanjut, lihat bagian penskalaan otomatis.

<basic-scaling>

Opsional. Untuk penjelasan lebih lanjut, lihat bagian penskalaan dasar.

<env-variables>

Opsional. File appengine-web.xml dapat menentukan variabel lingkungan yang ditetapkan saat aplikasi berjalan.

<env-variables>
  <env-var name="DEFAULT_ENCODING" value="UTF-8" />
</env-variables>

Untuk menghindari konflik dengan lingkungan lokal Anda, server pengembangan tidak menetapkan variabel lingkungan berdasarkan file ini, dan mengharuskan lingkungan lokal menetapkan variabel ini ke nilai yang cocok.

export DEFAULT_ENCODING="UTF-8"
dev_appserver war

Saat di-deploy ke App Engine, lingkungan dibuat dengan variabel ini yang telah ditetapkan.

<inbound-services>

Opsional. Sebelum aplikasi dapat menerima email, aplikasi harus dikonfigurasi untuk mengaktifkan layanan. Anda dapat mengaktifkan layanan untuk aplikasi Java 8 dengan menyertakan bagian <inbound-services> dalam file appengine-web.xml.

Tersedia layanan masuk berikut:

mail
Mengizinkan aplikasi Anda menerima email.
<instance-class>

Opsional. Ukuran class instance untuk modul ini.

Class instance berikut tersedia saat menentukan opsi penskalaan yang berbeda:

automatic_scaling
Saat menggunakan penskalaan otomatis, class instance F1, F2, F4, dan F4_1G akan tersedia.
Default: F1 akan ditetapkan jika Anda tidak menentukan class instance beserta elemen automatic_scaling.
basic_scaling
Saat menggunakan penskalaan dasar, class instance B1, B2, B4, B4_1G, dan B8 akan tersedia.
Default: B2 akan ditetapkan jika Anda tidak menentukan class instance bersama dengan basic_scaling.
manual_scaling
Saat menggunakan penskalaan manual, class instance B1, B2, B4, B4_1G, dan B8 akan tersedia.
Default: B2 akan ditetapkan jika Anda tidak menentukan class instance bersama dengan manual_scaling.

Catatan: Jikainstance-class disetel keF2 atau yang lebih tinggi, Anda dapat mengoptimalkan instance dengan menyetel max-concurrent-requests ke nilai yang lebih tinggi dari 10, yang merupakan nilai default. Untuk menemukan nilai optimal, tingkatkan secara bertahap dan pantau kinerja aplikasi Anda.

<manual-scaling>

Opsional. Untuk penjelasan lebih lanjut, lihat bagian penskalaan manual.

<precompilation-enabled>

Opsional. App Engine menggunakan proses "prakompilasi" dengan bytecode Java dari sebuah aplikasi untuk meningkatkan performa aplikasi di Java runtime environment. Fungsi kode prakompilasi identik dengan bytecode asli.

Jika karena alasan tertentu Anda lebih memilih agar aplikasi tidak menggunakan prakompilasi, Anda dapat menonaktifkannya dengan menambahkan kode berikut ke file appengine-web.xml:

<?xml version="1.0" encoding="utf-8"?>
<appengine-web-app xmlns="http://appengine.google.com/ns/1.0">
  <!-- ... -->
  <precompilation-enabled>false</precompilation-enabled>
  <!-- ... -->
</appengine-web-app>
module

Catatan: Modul kini diberi nama Layanan dan layanan tetap dideklarasikan dalam file appengine-web.xml sebagai modul, misalnya: <module>service_name</module>.

Wajib diisi jika membuat layanan. Opsional untuk layanan default. Setiap layanan dan versi harus memiliki nama. Nama dapat berisi angka, huruf, dan tanda hubung. Nama ini tidak boleh lebih dari 63 karakter, diawali atau diakhiri dengan tanda hubung, dan berisi string `-dot`. Pilih nama unik untuk setiap layanan dan setiap versi. Jangan gunakan nama yang sama antara layanan dan versi.

Lihat juga service.

<public-root>

Opsional. <public-root> adalah direktori dalam aplikasi Anda yang berisi file statis untuk aplikasi tersebut. Saat permintaan untuk file statis dibuat, <public-root> untuk aplikasi Anda akan ditambahkan ke jalur permintaan. Ini akan memberikan jalur file aplikasi yang berisi konten yang diminta.

Nilai default <public-root> adalah /.

Misalnya, kode berikut akan memetakan jalur URL /index.html ke jalur file aplikasi /static/index.html:

<?xml version="1.0" encoding="utf-8"?>
<appengine-web-app xmlns="http://appengine.google.com/ns/1.0">
  <!-- ... -->
  <public-root>/static</public-root>
  <!-- ... -->
</appengine-web-app>
<resource-files>

Opsional. File yang tercantum dalam elemen <resource-files> dapat diakses oleh kode aplikasi menggunakan sistem file. File ini disimpan di server aplikasi bersama aplikasi, berbeda dengan cara file statis disimpan dan ditayangkan.

Elemen <resource-files> dapat berisi elemen berikut:

<include>
Elemen <include> menetapkan file sebagai file resource dan tersedia untuk kode aplikasi Anda. File ini hanya dapat dibaca oleh kode Anda dan bukan digunakan untuk melayani traffic. Menyertakan dan mengecualikan file.
<exclude>

File dan direktori yang cocok dengan pola <exclude> tidak akan diupload atau tersedia untuk kode aplikasi Anda. Namun, file dan direktori ini tetap dapat diakses oleh aplikasi Anda saat berjalan di Server Pengembangan lokal. Untuk informasi selengkapnya, lihat Menyertakan dan mengecualikan file.

Contoh:
<resource-files>
  <include path="/**.xml" />
  <exclude path="/feeds/**.xml" />
</resource-files>

Contoh ini menunjukkan cara menetapkan semua file .xml sebagai file resource, kecuali file yang ada dalam direktori feeds/ dan semua subdirektorinya.

File resource App Engine dibaca menggunakan java.io.File atau javax.servlet.ServletContext.getResource/getResourceAsStream. Tidak dapat diakses melalui Class.getResourceAsStream().

runtime

Untuk menggunakan runtime Java 8, Anda harus menetapkan entri ini ke nilai java8.

Contoh:

<?xml version="1.0" encoding="utf-8"?>
<appengine-web-app xmlns="http://appengine.google.com/ns/1.0">
  <!-- ... -->
  <runtime>java8</runtime>
  <!-- ... -->
</appengine-web-app>
service

Layanan sebelumnya dikenal sebagai modul.

Saat ini, menentukan layanan sebagai: <service>service_name</service > hanya didukung oleh perintah gcloud app.

service-account

Opsional. Elemen service-account memungkinkan Anda menentukan akun layanan yang dikelola pengguna sebagai identitas untuk versi tersebut. Akun layanan yang ditentukan akan digunakan saat mengakses layanan Google Cloud lainnya dan menjalankan tugas.

Contoh:
<?xml version="1.0" encoding="utf-8"?>
 <appengine-web-app xmlns="http://appengine.google.com/ns/1.0">
   <!-- ... -->
   <service-account>[SERVICE_ACCOUNT_NAME]@[PROJECT_ID].iam.gserviceaccount.com</service-account>
   <!-- ... -->
 </appengine-web-app>
<sessions-enabled>

Opsional. App Engine mencakup implementasi sesi menggunakan antarmuka sesi servlet. Implementasi ini menyimpan data sesi di Datastore untuk persistensi, dan juga menggunakan memcache agar cepat. Seperti kebanyakan penampung servlet lainnya, atribut sesi yang ditetapkan dengan `session.setAttribute()` selama permintaan akan dipertahankan di akhir permintaan.

Fitur ini dinonaktifkan secara default. Untuk mengaktifkannya, tambahkan kode berikut ke appengine-web.xml:

Contoh:
<?xml version="1.0" encoding="utf-8"?>
<appengine-web-app xmlns="http://appengine.google.com/ns/1.0">
  <!-- ... -->
  <sessions-enabled>true</sessions-enabled>
  <!-- ... -->
</appengine-web-app>

Implementasi ini akan membuat entity Datastore jenis _ah_SESSION, dan entri memcache menggunakan kunci dengan awalan _ahs. Anda dapat menghapus entity ini menggunakan template Dataflow.

Catatan: Karena App Engine menyimpan data sesi di Datastore dan memcache, semua nilai yang disimpan dalam sesi harus menerapkan antarmuka java.io.Serializable.

Lihat elemen async-session-persistence untuk mengurangi latensi penyimpanan data sesi.

<ssl-enabled>

Opsional. Secara default, setiap pengguna dapat mengakses URL apa pun menggunakan HTTP atau HTTPS. Anda dapat mengonfigurasi aplikasi agar mewajibkan HTTPS untuk URL tertentu dalam deployment descriptor Lihat Deployment Descriptor: URL Aman.

Jika Anda ingin melarang penggunaan HTTPS untuk aplikasi, masukkan kode berikut dalam file appengine-web.xml:

<?xml version="1.0" encoding="utf-8"?>
<appengine-web-app xmlns="http://appengine.google.com/ns/1.0">
  <!-- ... -->
  <ssl-enabled>false</ssl-enabled>
  <!-- ... -->
</appengine-web-app>

Tidak ada cara untuk melarang HTTPS pada jalur URL tertentu dan tidak untuk yang lainnya di Java runtime environment.

<static-error-handlers>

Opsional. Saat terjadi error tertentu, App Engine akan menayangkan halaman error umum. Anda dapat mengonfigurasi aplikasi untuk menayangkan file statis kustom, bukan halaman error umum ini, selama data error kustom kurang dari 10 kilobyte. Anda dapat menyiapkan file statis berbeda yang akan ditayangkan untuk setiap kode error yang didukung dengan menentukan file dalam file appengine-web.xml aplikasi Anda. Untuk menayangkan halaman error kustom, tambahkan bagian <static-error-handlers> ke appengine-web.xml, seperti dalam contoh berikut:

<static-error-handlers>
  <handler file="default_error.html" />
  <handler file="over_quota.html" error-code="over_quota" />
</static-error-handlers>

Peringatan: Pastikan jalur ke file respons error tidak tumpang tindih dengan jalur pengendali file statis.

Setiap entri file menunjukkan file statis yang harus ditayangkan sebagai pengganti respons error umum. error-code menunjukkan kode error mana yang akan menyebabkan file terkait ditayangkan. Kode error yang didukung adalah sebagai berikut:

over_quota
Menunjukkan bahwa aplikasi telah melampaui kuota resource.
timeout
Ditayangkan jika batas waktu tercapai sebelum ada respons dari aplikasi.

error-code bersifat opsional; jika tidak ditentukan, file yang diberikan akan menjadi respons error default untuk aplikasi Anda.

Secara opsional, Anda dapat menentukan mime-type yang akan digunakan saat menampilkan error kustom. Lihat daftar lengkap jenis MIME.

<static-files>

Opsional. Elemen <static-files> menentukan pola yang cocok dengan jalur file untuk disertakan dan dikecualikan dari daftar file statis, dengan mengganti atau mengubah perilaku default. File statis ditayangkan dari server khusus dan cache yang terpisah dari server aplikasi dan berguna untuk menayangkan konten statis seperti gambar, stylesheet CSS, atau file JavaScript.

Elemen <static-files> dapat berisi elemen berikut:

<include>

Elemen <include> menggantikan perilaku default yang menyertakan semua file non-JSP. Elemen <include> dapat menentukan header HTTP yang akan digunakan saat merespons permintaan untuk resource yang ditentukan. Untuk informasi selengkapnya, lihat Menyertakan dan mengecualikan file.

Anda dapat mengganti masa berlaku cache statis default dengan menentukan atribut expiration pada elemen include. Nilainya adalah string angka dan satuan, yang dipisahkan dengan spasi, dan satuan dapat berupa d untuk hari, h untuk jam, m untuk menit, dan s untuk detik. Misalnya, "4d 5h" menetapkan masa berlaku cache ke 4 hari dan 5 jam setelah file pertama kali diminta. Untuk informasi lebih lanjut, lihat Masa berlaku cache.

<exclude>
File dan direktori yang cocok dengan pola <exclude> tidak akan diupload saat Anda men-deploy aplikasi ke App Engine. Namun, file dan direktori ini tetap dapat diakses oleh aplikasi Anda saat berjalan di Server Pengembangan lokal. Untuk informasi selengkapnya, lihat Menyertakan dan mengecualikan file.
Contoh
<static-files>
  <include path="/my_static-files" >
    <http-header name="Access-Control-Allow-Origin"
                 value="http://example.org" />
  </include>
</static-files>
<system-properties>

Opsional. File appengine-web.xml dapat menentukan properti sistem dan variabel lingkungan yang ditetapkan saat aplikasi berjalan.

<system-properties>
  <property name="myapp.maximum-message-length" value="140" />
  <property name="myapp.notify-every-n-signups" value="1000" />
  <property name="myapp.notify-url"
            value="http://www.example.com/signupnotify" />
</system-properties>

<env-variables>
  <env-var name="DEFAULT_ENCODING" value="UTF-8" />
</env-variables>
<threadsafe>

Wajib. Saat elemen threadsafe di appengine-web.xml adalah false, App Engine akan mengirimkan permintaan secara serial ke server web tertentu. Jika nilainya adalah true, App Engine dapat mengirim beberapa permintaan secara paralel:

<?xml version="1.0" encoding="utf-8"?>
<appengine-web-app xmlns="http://appengine.google.com/ns/1.0">
  <!-- ... -->
  <threadsafe>true</threadsafe>
  <!-- ... -->
</appengine-web-app>

Jika ingin menggunakan permintaan serentak, kode aplikasi Anda harus menggunakan sinkronisasi thread yang tepat sebelum mengaktifkan threadsafe.

Elemen ini tidak didukung dalam runtime Java 11+.

<url-stream-handler>

Opsional. Nilai yang mungkin adalah native atau urlfetch.

Nilai defaultnya adalah native, yang berarti class jaringan Java standar menggunakan transport HTTP(S) Java standar. Untuk menggunakan setelan ini, Anda harus mengaktifkan penagihan untuk aplikasi, atau Anda akan mendapatkan pengecualian, yang kemudian didokumentasikan dalam Permintaan masalah.

Jika Anda menetapkan url-stream-handler ke urlfetch, URL.openConnection dan metode terkait akan menggunakan Pengambilan URL memindahkan http dan https.

<?xml version="1.0" encoding="utf-8"?>
<appengine-web-app xmlns="http://appengine.google.com/ns/1.0">
  <!-- ... -->
  <url-stream-handler>urlfetch</url-stream-handler>
  <!-- ... -->
</appengine-web-app>
<version>

Elemen <version> berisi ID versi untuk kode aplikasi versi terbaru. ID versi dapat berisi huruf kecil, angka, dan tanda hubung. ID versi tidak boleh diawali dengan awalan "ah-", dan nama "default" serta "latest" akan disimpan dan tidak dapat digunakan.

Nama versi harus dimulai dengan huruf untuk membedakannya dari instance numerik yang selalu ditentukan dengan angka. Hal ini adalah untuk menghindari ambiguitas dengan URL seperti 123.my-module.uc.r.appspot.com, yang dapat diartikan dalam dua cara: Jika versi "123" ada, targetnya adalah versi "123" dari modul yang dimaksud. Jika versi tersebut tidak ada, targetnya adalah nomor instance 123 dari versi default modul.

App Engine menggunakan ID versi ini untuk menentukan apakah akan membuat versi baru aplikasi dengan ID yang diberikan (atau mengganti versi aplikasi dengan ID yang diberikan jika sudah ada). Anda dapat menguji versi baru aplikasi dengan URL menggunakan "-dot-" sebagai pemisah subdomain di URL, seperti, https://VERSION_ID-dot-default-dot-PROJECT_ID.REGION_ID.r.appspot.com. Anda dapat memilih versi default aplikasi menggunakan konsol Google Cloud. Versi default dimuat jika tidak ada versi, atau versi yang tidak valid, yang ditentukan.

<warmup-requests-enabled>

Opsional. Default: true. Warmup request diaktifkan secara default untuk aplikasi Java 8.

Dengan warmup request diaktifkan, infrastruktur App Engine mengeluarkan permintaan `GET` ke /_ah/warmup, yang melakukan inisialisasi servlet <load-on-startup>, ServletContextListeners, dan servlet warmup khusus, yang memungkinkan Anda menginisialisasi kode aplikasi sesuai kebutuhan. Anda mungkin perlu menerapkan pengendali tersendiri untuk /_ah/warmup, bergantung pada metode mana yang Anda pilih.

Untuk menonaktifkan warmup request, tentukan false untuk elemen ini:

<?xml version="1.0" encoding="utf-8"?>
<appengine-web-app xmlns="http://appengine.google.com/ns/1.0">
  <!-- ... -->
  <warmup-requests-enabled>false</warmup-requests-enabled>
  <!-- ... -->
</appengine-web-app>
<vpc-access-connector>

Opsional. Mengonfigurasi aplikasi Anda untuk menggunakan konektor Akses VPC Serverless, yang memungkinkan aplikasi mengirim permintaan ke resource internal dalam jaringan VPC Anda. Untuk mengetahui informasi selengkapnya, lihat Menghubungkan ke jaringan VPC.

name
Tentukan nama konektor Akses VPC Serverless yang sepenuhnya memenuhi syarat:
projects/PROJECT_ID/locations/REGION/connectors/CONNECTOR_NAME
egress-setting
Opsional. Nilai defaultnya adalah private-ranges-only. egress-setting dapat berupa salah satu dari berikut:
private-ranges-only
Default. Permintaan ke alamat IP internal dikirim melalui konektor Akses VPC Serverless ke jaringan VPC yang terhubung. Permintaan ke alamat IP eksternal dikirim ke internet publik.
all-traffic
Semua permintaan dikirim melalui konektor Akses VPC Serverless ke dalam jaringan VPC yang terhubung.
Contoh
<vpc-access-connector>
  <name>projects/PROJECT_ID/locations/REGION/connectors/CONNECTOR_NAME</name>
  <egress-setting>all-traffic</egress-setting>
</vpc-access-connector>

Penskalaan elemen

Tabel berikut mencantumkan opsi cara memilih penentuan penskalaan aplikasi yang sesuai.

Untuk perbandingan fitur performa jenis penskalaan, lihat bagian Penskalaan instance dinamis.

Elemen Deskripsi
<automatic-scaling>

Opsional. Penskalaan otomatis diasumsikan secara default dengan kelas instance F1 default kecuali ditentukan lain.

Elemen automatic_scaling menetapkan level minimum dan maksimum untuk jumlah instance, latensi, dan koneksi serentak untuk sebuah modul.

Elemen ini dapat berisi elemen berikut:

<target-cpu-utilization>
Opsional. Tentukan nilai dari 0,5 hingga 0,95.

Parameter ini menentukan batas penggunaan CPU di mana instance baru akan baru akan mulai menangani traffic, memungkinkan Anda untuk menyeimbangkan antara performa dan biaya, dengan nilai yang lebih rendah meningkatkan performa dan meningkatkan biaya, dan nilai yang lebih tinggi akan menurunkan performa sekaligus juga mengurangi biaya. Misalnya, nilai 0,7 artinya instance baru akan dimulai setelah penggunaan CPU mencapai 70 persen.

<target-throughput-utilization>
Opsional. Tentukan nilai dari 0,5 hingga 0,95.

Digunakan dengan max-concurrent-requests untuk menentukan kapan instance baru dimulai karena permintaan yang serentak. Jika jumlah permintaan serentak mencapai nilai yang sama dengan max-concurrent-requests dikali target-throughput-utilization, scheduler akan memulai instance baru.

<max-instances>
Opsional. Jumlah instance maksimum yang akan dibuat oleh App Engine untuk versi aplikasi ini. Hal ini berguna untuk membatasi biaya modul. Tentukan nilai antara 0 dan 2147483647.
<min-instances>
Opsional. Jumlah minimum instance yang akan dibuat oleh App Engine untuk versi modul ini. Instance ini menyalurkan traffic saat permintaan tiba, dan terus menyalurkan traffic bahkan ketika instance tambahan dimulai sesuai kebutuhan untuk menangani traffic.

Tentukan nilai dari 0 hingga 1.000. Anda dapat menetapkan parameter ke nilai 0 untuk memungkinkan penskalaan ke 0 instance guna menurunkan biaya jika tidak ada permintaan yang ditayangkan. Perlu diperhatikan bahwa Anda akan dikenai biaya untuk jumlah instance yang ditentukan, terlepas dari apakah instance tersebut menerima traffic atau tidak.

<max-concurrent-requests>

Opsional. Jumlah permintaan serentak yang dapat diterima instance penskalaan otomatis sebelum scheduler memunculkan instance baru (Default: 10, Maksimum: 80).

Anda mungkin mengalami peningkatan latensi API jika setelan ini terlalu tinggi. Perhatikan bahwa scheduler mungkin memunculkan instance baru sebelum jumlah maksimum permintaan sebenarnya tercapai.

Catatan: Jika instance-class ditetapkan ke F2 atau yang lebih tinggi, Anda dapat mengoptimalkan instance dengan menyetel max-concurrent-requests ke nilai yang lebih tinggi dari 10, yang merupakan nilai default. Untuk menemukan nilai optimal, tingkatkan secara bertahap dan pantau kinerja aplikasi Anda.

<max-idle-instances>

Jumlah maksimum instance tidak ada aktivitas yang harus dipertahankan oleh App Engine untuk versi ini. Nilai defaultnya adalah "automatic". Perhatikan hal-hal berikut:

  • Batas maksimum yang tinggi mengurangi jumlah instance yang tanpa aktivitas secara lebih bertahap saat tingkat beban kembali normal setelah terjadi lonjakan. Hal ini membantu aplikasi Anda mempertahankan performa yang stabil melalui fluktuasi beban permintaan, tetapi juga meningkatkan jumlah instance yang tanpa aktivitas (dan akibatnya, peningkatan biaya pengoperasian) selama periode dengan beban berat tersebut.
  • Batas maksimum yang rendah membuat biaya tetap rendah, tetapi dapat menurunkan performa saat tingkat beban yang berubah secara tiba-tiba.

Catatan: Saat kembali ke tingkat normal setelah lonjakan beban, jumlah instance tanpa aktivitas untuk sementara dapat melebihi batas maksimum yang Anda tentukan. Namun, Anda tidak akan ditagih untuk jumlah instance yang melebihi jumlah maksimum yang Anda tentukan.

<max-pending-latency>

Durasi maksimum App Engine harus mengizinkan permintaan menunggu dalam antrean yang tertunda sebelum memulai instance tambahan untuk menangani permintaan sehingga latensi tertunda berkurang.

  • Jumlah maksimum yang rendah berarti App Engine akan memulai instance baru lebih cepat untuk permintaan yang tertunda, sehingga meningkatkan performa tetapi menaikkan biaya operasional.
  • Maksimum yang tinggi berarti pengguna mungkin menunggu lebih lama hingga permintaan mereka ditayangkan, jika ada permintaan yang tertunda dan tidak ada instance tanpa aktivitas untuk melayani permintaan tersebut, tetapi biaya untuk menjalankan aplikasi akan lebih murah.
<min-idle-instances>

Jumlah instance yang akan tetap berjalan dan siap melayani traffic. Setelan ini hanya berlaku untuk versi yang menerima sebagian besar traffic. Ingat hal berikut:

  • Nilai minimum yang rendah membantu menjaga biaya operasional Anda tetap rendah selama periode tidak ada aktivitas, tetapi berarti jumlah instance yang tersedia mungkin lebih sedikit untuk merespons lonjakan beban tiba-tiba.
  • Nilai minimum yang tinggi memungkinkan Anda mempersiapkan aplikasi untuk lonjakan beban permintaan yang cepat. App Engine menjaga jumlah minimum instance yang berjalan untuk melayani permintaan masuk. Anda akan dikenai biaya untuk instance, baik yang menangani permintaan atau tidak. Agar fitur ini berfungsi dengan baik, Anda harus memastikan bahwa warmup request diaktifkan dan aplikasi Anda menangani warmup request.

    Jika Anda menetapkan jumlah minimum instance yang tidak ada aktivitas, ini akan mengurangi pengaruh latensi yang tertunda terhadap performa aplikasi Anda. Karena App Engine menyimpan instance yang tidak ada aktivitas sebagai cadangan, maka tidak mungkin permintaan akan masuk ke antrean tertunda kecuali dalam lonjakan beban yang sangat tinggi. Anda perlu menguji aplikasi aplikasi dan volume traffic yang diharapkan untuk menentukan yang jumlah cadangan instance yang ideal.

<min-pending-latency>

Jumlah waktu minimum dalam detik saat App Engine harus mengizinkan permintaan untuk menunggu dalam queue yang tertunda sebelum memulai instance baru untuk menanganinya. Tentukan nilai dari 0,01 hingga 15.

  • Nilai minimum yang rendah berarti permintaan menghabiskan lebih sedikit waktu dalam antrean tertunda ketika semua instance yang ada aktif. Hal ini akan meningkatkan performa, tetapi meningkatkan biaya untuk menjalankan aplikasi Anda.
  • Nilai minimum yang tinggi berarti permintaan akan ditunda lebih lama jika semua instance yang ada aktif. Hal ini menurunkan biaya operasional tetapi meningkatkan waktu yang tunggu pengguna hingga permintaan mereka dilayani.
Contoh
<appengine-web-app xmlns="http://appengine.google.com/ns/1.0">
  <application>simple-app</application>
  <module>default</module>
  <version>uno</version>
  <threadsafe>true</threadsafe>
  <instance-class>F2</instance-class>
  <automatic-scaling>
    <target-cpu-utilization>0.65</target-cpu-utilization>
    <min-instances>5</min-instances>
    <max-instances>100</max-instances>
    <max-concurrent-requests>50</max-concurrent-requests>
  </automatic-scaling>
</appengine-web-app>
<basic-scaling>

Opsional. Elemen <basic-scaling> menetapkan jumlah instance untuk modul.

Elemen ini dapat berisi elemen berikut:

<idle-timeout>
Opsional. Instance akan dihentikan selama jangka waktu ini setelah menerima permintaan terakhirnya. Defaultnya adalah 5 menit.
<max-instances>
Harus ada. Jumlah maksimum instance yang akan dibuat oleh App Engine untuk versi modul ini. Hal ini berguna untuk membatasi biaya modul.
Contoh
<appengine-web-app xmlns="http://appengine.google.com/ns/1.0">
  <application>simple-app</application>
  <module>default</module>
  <version>uno</version>
  <threadsafe>true</threadsafe>
  <instance-class>B8</instance-class>
  <basic-scaling>
    <max-instances>11</max-instances>
    <idle-timeout>10m</idle-timeout>
  </basic-scaling>
</appengine-web-app>
<manual-scaling>

Opsional. Elemen <manual-scaling> memungkinkan penskalaan manual untuk modul dan menetapkan jumlah instance untuk modul.

Elemen ini dapat berisi elemen berikut:

<instances>
Jumlah instance yang akan ditetapkan ke modul di awal.
Contoh
<appengine-web-app xmlns="http://appengine.google.com/ns/1.0">
  <application>simple-app</application>
  <module>default</module>
  <version>uno</version>
  <threadsafe>true</threadsafe>
  <instance-class>B8</instance-class>
  <manual-scaling>
    <instances>5</instances>
  </manual-scaling>
</appengine-web-app>

Elemen pembuatan stage

Sebagian besar pekerjaan yang dilakukan selama deployment berlangsung secara lokal dalam langkah persiapan yang disebut staging, tempat file JAR disusun, JSP dikompilasi, dan seterusnya. Secara opsional, Anda dapat mengonfigurasi bagian tertentu dari perilaku staging menggunakan elemen staging dalam file konfigurasi aplikasi. Sebagian besar aplikasi akan berhasil di-deploy tanpa harus mengonfigurasi perilaku staging secara manual. Jika aplikasi Anda tidak di-deploy, Anda mungkin perlu mengonfigurasi staging menggunakan opsi yang ditunjukkan di bawah ini.

Elemen Deskripsi
<staging>

Opsional. Sebagian besar aplikasi tidak perlu mengubah perilaku default.

Elemen staging memungkinkan Anda menentukan konfigurasi staging tertentu jika diperlukan untuk deployment.

Elemen ini dapat berisi elemen berikut:

<enable-jar-splitting>

Opsional. Memisahkan file jar besar (> 10 Megabyte) menjadi fragmen yang lebih kecil. (Default: true).

<jar-splitting-excludes>

Menentukan daftar akhiran file yang dipisahkan koma. Jika enable-jar-splitting diaktifkan, semua file yang cocok dengan akhiran akan dikecualikan dari semua JAR.

<disable_jar_jsps>

Jangan meng-jar class yang dihasilkan dari JSP. (Default: false).

<enable-jar-classes>

Lakukan jar untuk konten WEB-INF/class. (Default: false).

<delete-jsps>

Hapus file sumber JSP setelah kompilasi. (Default: true).

<compile-encoding>

Masukkan encoding file sumber untuk kompilasi. (Default: utf-8).

Contoh:

        <staging>
          <delete-jsps>false</delete-jsps>
        </staging>
        

Opsi staging default

Default untuk opsi staging adalah sebagai berikut:

Elemen staging Nilai default
enable-jar-splitting true
jar-splitting-excludes TA
disable-jar-jsps false
enable-jar-classes true. Hal ini dapat memengaruhi urutan pemuatan class. Jadi, jika aplikasi Anda bergantung pada urutan tertentu, setel ini ke false.
delete-jsps true
compile-encoding utf-8

Sintaksis Sertakan dan kecualikan

Pola jalur ditentukan menggunakan nol atau beberapa elemen <include> dan <exclude>. Dalam sebuah pola, '*' mewakili nol atau beberapa karakter bebas dalam nama file atau direktori, dan ** mewakili nol atau beberapa direktori di satu jalur. File dan direktori yang cocok dengan pola <exclude> tidak akan diupload saat Anda men-deploy aplikasi ke App Engine. Namun, file dan direktori ini tetap dapat diakses oleh aplikasi Anda saat dijalankan di Server Pengembangan lokal.

Elemen <include> menggantikan perilaku default yang menyertakan semua file. Elemen <exclude> berlaku setelah semua pola <include> (serta default jika tidak ada <include> eksplisit yang disediakan).

Contoh berikut menunjukkan cara menetapkan semua file .png sebagai file statis (kecuali yang ada dalam direktori data/ dan semua subdirektorinya):

<static-files>
  <include path="/**.png" />
  <exclude path="/data/**.png" />
</static-files>

Anda juga dapat menetapkan header HTTP yang akan digunakan saat merespons permintaan ke resource statis ini.

<static-files>
  <include path="/my_static-files" >
    <http-header name="Access-Control-Allow-Origin"
                 value="http://example.org" />
  </include>
</static-files>

Jenis MIME untuk file statis

Secara default, file statis ditayangkan menggunakan jenis MIME yang dipilih berdasarkan ekstensi nama file. Anda dapat mengaitkan jenis MIME khusus dengan ekstensi nama file untuk file statis menggunakan elemen <mime-mapping> di web.xml.

Waktu tunggu URLFetch

Anda dapat menetapkan batas waktu untuk setiap permintaan URLFetch. Secara default, batas waktu pengambilan adalah 5 detik. Anda dapat mengubah default ini dengan menyertakan setelan berikut dalam file konfigurasi appengine-web.xml Anda. Tentukan waktu tunggu dalam detik:

<system-properties>
    <property name="appengine.api.urlfetch.defaultDeadline" value="10"/>
</system-properties>