Lewati ke konten utama

Auto-Configurations for PHP Application Servers

Optimisasi sumber daya dinamis platform melengkapi implementasi dasar yang disediakan oleh server PHP untuk mencapai efisiensi maksimal. Pada dasarnya, setelah mengubah jumlah sumber daya RAM dan CPU yang dialokasikan (jumlah cloudlets), platform secara otomatis menyesuaikan direktif PHP yang sesuai untuk menyesuaikan kondisi baru. Namun, jika diperlukan, Anda dapat menonaktifkan konfigurasi otomatis dan menyediakan parameter secara manual dalam file konfigurasi server Anda.

Auto-Configuration Example

Mari kita lihat bagaimana parameter diubah berdasarkan sumber daya yang dialokasikan.

1. Misalnya, kami memiliki environment dengan server aplikasi Apache PHP di dalamnya (16 cloudlets).

Nilai konfigurasi modul prefork dalam file /etc/httpd/conf/httpd.conf adalah sebagai berikut:

Apache PHP auto-configuration 16 cloudlets

2. Sekarang, jika kami menetapkan batas sumber daya baru untuk server Apache PHP (32 cloudlets) dan menyegarkan file /etc/httpd/conf/httpd.conf:

Apache PHP auto-configuration 32 cloudlets

Seperti yang Anda lihat, nilai direktif disesuaikan secara otomatis karena perubahan jumlah sumber daya yang tersedia.

Prinsip yang sama diterapkan ke semua server aplikasi PHP lainnya.

Disable Automatic Optimization

Untuk menetapkan nilai kustom Anda alih-alih direktif yang dikonfigurasi secara otomatis, Anda perlu menonaktifkan optimisasi otomatis. Jika tidak, perubahan kustom Anda akan dibatalkan selama restart/update container.

tip

Anda dapat menggunakan variabel PHP_MEMORY_LIMIT dan PHP_MAX_EXECUTION_TIME untuk mengatur batas memori PHP dan waktu eksekusi maksimum tanpa menonaktifkan optimisasi otomatis.

Saat ini, Anda perlu melakukan tindakan berikut berdasarkan jenis server aplikasi PHP Anda:

peringatan

Nilai direktif yang tidak sesuai dapat menyebabkan ketidakstabilan server Anda, jadi tidak disarankan untuk menerapkan perubahan manual kecuali Anda benar-benar memahami apa yang Anda lakukan.

Smart Auto-Configuration

Jika Anda ingin mengubah pengaturan auto-configured secara manual, Anda perlu mengatur variabel JELASTIC_AUTOCONFIG environment variable ke false (disabled).

PHP auto-config variable

Legacy Implementation

Hapus baris dengan tanda optimisasi di awal file konfigurasi yang sesuai:

  • Apache PHP - " # Jelastic autoconfiguration mark " di dalam file /etc/httpd/conf/httpd.conf
Apache PHP autoconfiguration mark
  • NGINX PHP - " ; Jelastic autoconfiguration mark " di dalam file /etc/php-fpm.conf
NGINX PHP autoconfiguration mark

Setelah baris yang sesuai dihapus, nilai parameter tidak akan lagi dikonfigurasi otomatis oleh mekanisme optimisasi platform sehingga Anda dapat menetapkan parameter kustom Anda. Jangan lupa untuk Save file untuk menerapkan konfigurasi baru.

Auto Adjustable Settings

Jenis sistem penanganan dan pengiriman permintaan dasar bervariasi untuk server aplikasi PHP yang berbeda, jadi direktif yang digunakan juga berbeda. Namun, fungsi dari parameter semacam itu bisa serupa. Untuk mempelajari lebih lanjut tentang direktif ini untuk server aplikasi tertentu, navigasikan ke bagian yang sesuai di bawah ini:

Apache PHP

Penanganan permintaan dinamis di Apache PHP diimplementasikan dengan bantuan Modul Multi-Processing (MPM) prefork, yang membantu mengungkap potensi penuh server. Direktif MPM tercantum dalam file konfigurasi utama Apache /etc/httpd/conf/httpd.conf.

Apache PHP httpd.conf file

Berikut adalah daftar lengkap parameter yang dikonfigurasi oleh platform untuk modul prefork:

  • StartServers - menetapkan jumlah proses server anak yang dibuat saat startup.
  • MinSpareServers (MaxSpareServers) - menentukan jumlah minimum (maksimum) proses server yang disimpan cadangan.
  • ServerLimit - menetapkan nilai tertinggi yang diizinkan untuk direktif MaxRequestWorkers.
  • MaxRequestWorkers - mengonfigurasi batas permintaan simultan yang akan diproses.
  • MaxConnectionsPerChild - menentukan jumlah permintaan yang dapat dilayani oleh satu proses anak.

Apache PHP prefork module configs

Berdasarkan sumber daya yang dialokasikan (yaitu jumlah cloudlets dinamis yang dipesan untuk server Apache PHP) dan kapasitas CPU yang disediakan oleh penyedia hosting Anda, platform secara otomatis menyesuaikan parameter ServerLimit dan MaxRequestWorkers:

MaxRequestWorkers = ServerLimit = min( {containerRam} / 30MiB, {coresCount} * 5 )

Dengan pernyataan ini, kedua direktif dinyatakan sama dengan nilai terendah antara:

  • jumlah RAM yang dialokasikan untuk node, dibagi dengan 30
  • jumlah core dari server fisik yang ditempati oleh container, dikalikan 5

Dengan cara ini, parameter secara dinamis berubah berdasarkan jumlah cloudlets yang dialokasikan tetapi tidak akan melebihi batas perangkat keras.

peringatan

Jika Anda ingin menetapkan nilai kustom untuk direktif ini, harap diperhatikan bahwa nilai yang tidak benar dapat menyebabkan ketidakstabilan server Apache PHP Anda:

  • Jika ServerLimit terlalu tinggi, memori bersama yang tidak terpakai akan dialokasikan; sementara menetapkan parameter terlalu rendah tidak akan mengungkapkan potensi kinerja server secara penuh.
  • MaxRequestWorkers harus cukup besar untuk menangani sebanyak mungkin permintaan simultan yang diharapkan dan cukup kecil untuk memastikan bahwa RAM cukup tersedia.

NGINX PHP

Penanganan permintaan di server aplikasi NGINX PHP dikelola oleh FastCGI Process Manager (FPM), yang dapat dikonfigurasi melalui file /etc/php-fpm.conf. File ini secara otomatis ditambahkan ke daftar favorites di container file manager untuk akses cepat:

NGINX PHP php-fpm.conf file

FPM beroperasi dalam mode ondemand (direktif pm) secara default. Ini memunculkan proses baru saat dibutuhkan (yaitu sesuai permintaan) dan menghapus proses yang tidak aktif. Parameter tambahan untuk mode ini adalah:

  • pm.max_children - mendefinisikan jumlah maksimum proses anak (sama dengan jumlah core CPU yang tersedia untuk container, tetapi tidak kurang dari 2)
tip

Nilai tepatnya bergantung pada kapasitas CPU yang disediakan oleh penyedia hosting Anda dan jumlah cloudlets yang dialokasikan untuk container Anda. Dengan cara ini, peningkatan jumlah cloudlets menghasilkan peningkatan otomatis parameter pm.max_children. Direktif ini dapat didefinisikan secara eksplisit tanpa menonaktifkan optimisasi otomatis melalui variabel PHPFPM_MAX_CHILDREN yang sesuai.

  • pm.process_idle_timeout - menetapkan waktu tunda sebelum proses yang tidak aktif dihentikan (60 detik)

NGINX PHP FastCGI process manager configs

Selain itu, untuk mendapatkan kinerja yang lebih baik, listener PHP FPM menggunakan UNIX domain socket alih-alih TCP socket biasa. Solusi ini lebih cocok untuk komunikasi dalam host yang sama, memungkinkan untuk melewati pemeriksaan dan operasi (seperti routing).

LiteSpeed (LLSMP)

Platform secara otomatis mengoptimalkan jumlah proses pekerja LiteSpeed berdasarkan RAM yang dialokasikan dan jumlah core CPU. Variabel JELASTIC_AUTOCONFIG environment variable menentukan apakah fitur auto-configuration harus diaktifkan (true, secara default) atau dinonaktifkan (false).

Lihat panduan LiteSpeed Web Server untuk detail lebih lanjut.

Baca Juga