Mengonfigurasi dukungan payload pesan besar di Apigee hybrid

Ringkasan

Apigee Hybrid mendukung payload pesan besar hingga 30 MB. Mulai dari hybrid 1.15.1, hybrid dapat mengizinkan payload pesan besar hingga 75 MB. Ukuran payload pesan default adalah 10 MB. Lihat Ukuran payload pesan.

Mengonfigurasi dukungan untuk payload pesan hingga 30 MB

Untuk mengaktifkan lingkungan dalam penginstalan hybrid Anda agar mendukung payload pesan besar, Anda harus melakukan perubahan berikut pada konfigurasi runtime:

  • Perbesar ukuran heap menjadi minimal 4Gi.
  • Tingkatkan batas memori menjadi minimal 6Gi.
  • Tingkatkan permintaan resource memori menjadi minimal 4 Gi.

Anda dapat mengonfigurasi setelan ini untuk setiap lingkungan atau untuk semua lingkungan dalam penginstalan Anda.

Mengonfigurasi setiap lingkungan untuk mendukung payload pesan besar

Jika proxy yang dikonfigurasi untuk mendukung payload pesan besar hanya memiliki endpoint di satu atau beberapa lingkungan dalam penginstalan Anda, Anda dapat mengonfigurasi lingkungan untuk mendukung payload besar. Hal ini menghindari penambahan memori tambahan ke lingkungan yang tidak perlu mendukung payload besar.

Untuk mengonfigurasi setiap lingkungan agar mendukung payload pesan besar, Anda dapat menggunakan properti envs.components.runtime. Buat perubahan berikut pada file overrides.yaml Anda:

  1. Tambahkan stanza berikut ke file overrides.yaml Anda:
    envs:
    - name: ENV_NAME
      components.
        runtime:
          cwcAppend:
            bin_setenv_max_mem: 4096Mi   # Increase max heap size to 4 gigs
          resources:
            requests:
              memory: 4Gi
            limits:
              memory: 6Gi
    

    Lihat:

  2. Upgrade diagram apigee-env untuk setiap lingkungan yang Anda perbarui:

    Uji coba:

    helm upgrade ENV_RELEASE_NAME apigee-env/ \
      --install \
      --namespace APIGEE_NAMESPACE \
      --set env=ENV_NAME \
      -f OVERRIDES_FILE \
      --dry-run=server
    
    • ENV_RELEASE_NAME adalah nama yang digunakan untuk melacak penginstalan dan upgrade diagram apigee-env. Nama ini harus unik dari nama rilis Helm lainnya di penginstalan Anda. Biasanya ini sama dengan ENV_NAME. Namun, jika lingkungan Anda memiliki nama yang sama dengan grup lingkungan, Anda harus menggunakan nama rilis yang berbeda untuk lingkungan dan grup lingkungan, misalnya dev-env-release dan dev-envgroup-release. Untuk mengetahui informasi selengkapnya tentang rilis di Helm, lihat Tiga konsep penting di dokumentasi Helm.
    • ENV_NAME adalah nama lingkungan yang Anda upgrade.
    • OVERRIDES_FILE adalah file overrides.yaml yang telah Anda edit.
  3. Mengupgrade diagram:

    Uji coba:

    helm upgrade ENV_RELEASE_NAME apigee-env/ \
      --install \
      --namespace APIGEE_NAMESPACE \
      --set env=ENV_NAME \
      -f OVERRIDES_FILE
    

Mengonfigurasi semua lingkungan untuk mendukung payload pesan berukuran besar

Perubahan pada stanza runtime akan menetapkan batas heap dan memori untuk semua lingkungan dalam penginstalan Anda. Anda dapat mengganti setelan ini untuk setiap lingkungan dengan properti envs.components.runtime.

  1. Tambahkan stanza berikut ke file overrides.yaml Anda:
    runtime:
      cwcAppend:
        bin_setenv_max_mem: 4096Mi   # Increase max heap size to 4 gigs
      resources:
        requests:
          memory: 4Gi
        limits:
          memory: 6Gi
    

    Lihat:

  2. Upgrade diagram apigee-env untuk setiap lingkungan dalam penginstalan Anda:

    Uji coba:

    helm upgrade ENV_RELEASE_NAME apigee-env/ \
      --install \
      --namespace APIGEE_NAMESPACE \
      --set env=ENV_NAME \
      -f OVERRIDES_FILE \
      --dry-run=server
    

    Mengupgrade diagram:

    helm upgrade ENV_RELEASE_NAME apigee-env/ \
      --install \
      --namespace APIGEE_NAMESPACE \
      --set env=ENV_NAME \
      -f OVERRIDES_FILE
    

Panduan untuk payload pesan berukuran antara 30 MB dan 75 MB

Menentukan ukuran heap yang optimal untuk Pemroses Pesan untuk skenario payload besar bergantung pada kasus penggunaan spesifik Anda; namun, Apigee menawarkan panduan umum untuk membantu proses ini.

Untuk menghitung ukuran heap per Pemroses Pesan (MP), gunakan nilai berikut:

  • Q - QPS maks per pod MP
  • L - Latensi Round Trip per permintaan (persentil ke-95 dari latensi yang diharapkan)
  • C - Total konkurensi per MP, jumlah maksimum permintaan yang dapat secara bersamaan tetap ada di MP pada waktu tertentu. Hal ini dihitung sebagai C = Q * L.
  • P_req - Ukuran payload (dalam MB) permintaan yang dikirim oleh Klien ke Apigee
  • P_resp - Ukuran payload (dalam MB) respons yang diterima dari Target
  • S - Faktor Keamanan (Apigee merekomendasikan rentang 1,5 - 2)
  • BASE_HEAP - Ukuran heap dasar untuk memperhitungkan resource yang tidak terkait dengan permintaan seperti konfigurasi proxy. (Apigee merekomendasikan 3072Mi)

Dengan memperhitungkan faktor keamanan S, beserta ukuran heap dasar, total heap per MP dihitung sebagai berikut:

Ukuran heap per MP = BASE_HEAP + C * (P_req + P_resp) * S

Konfigurasi penggantian dasar untuk skenario Payload Besar adalah:

envs:
  components:
    runtime:
      resources:
        requests:
          cpu: 2000m
          memory: 2Gi
        limits:
          cpu: 4000m
          memory: 4Gi
      cwcAppend:
        bin_setenv_max_mem: 3072Mi # base heap size

Contoh penghitungan

Berikut adalah contoh penghitungan dengan nilai berikut:

  • QPS Maks, Q: 2
  • Latensi, L: 7 dtk
  • Ukuran payload permintaan, P_req: 40 MB
  • Ukuran payload respons, P_resp: 40 MB
  • Faktor keamanan, S: 1,5
  • Ukuran heap dasar, BASE_HEAP: 3072 Mi

Ukuran heap = 3072 + (2 * 7) * (40+40) * 1.5 = 4752Mi

limits.memory diperkirakan berukuran 1 GiB lebih besar dari heap yang direkomendasikan.

Dalam contoh ini, Anda akan menambahkan hal berikut ke overrides.yaml:

envs:
  components:
    runtime:
      resources:
        requests:
          memory: 4Gi
        limits:
          memory: 5.75Gi # approximately 1Gi over 4.75Gi
      cwcAppend:
        bin_setenv_max_mem: 4752Mi

Pertimbangan

Lonjakan Traffic

HPA memastikan bahwa MP diskalakan saat QPS meningkat. Namun, Anda dapat memperkirakan HPA memerlukan waktu sekitar 60 detik untuk memicu penskalaan. Lonjakan traffic yang terlalu tinggi dapat menyebabkan error Kehabisan Memori (OOM) di MP Anda.

Jika Anda mengantisipasi lonjakan traffic seperti itu, tingkatkan penggunaan heap dengan menggunakan faktor keamanan yang tampaknya sesuai. Misalnya, S = 2.

Heap = BASE_HEAP + (Q * L) * (P_req + P_resp) * 2

Penggunaan Kebijakan

Penghitungan di atas tidak mencakup penggunaan Kebijakan. Apigee memungkinkan pelanggan membuat salinan payload permintaan / respons mereka dan hal ini dapat mengubah penggunaan heap secara signifikan.

Misalnya, jika Anda memiliki kebijakan JavaScript yang membuat 3 salinan seluruh respons target Anda, persamaan yang digunakan adalah:

Heap per MP = Base Heap + (Q * L) * (P_req + P_resp * 4) * S

Contoh kebijakan yang berpotensi meningkatkan penggunaan memori adalah:

  • AssignMessage
  • Pesan Singkat JavaScript
  • JavaCallout

Pemantauan

Panduan yang diberikan di sini dimaksudkan untuk berfungsi sebagai titik awal. Pemantauan dan pemberitahuan penggunaan memori sangat disarankan. Gunakan Faktor Keamanan yang lebih tinggi jika penggunaan Heap selalu tinggi.

Lihat juga: