Ingin mengoptimalkan PHP-FPM untuk lalu lintas tinggi? Berikut panduan singkat untuk menangani lebih banyak pengguna tanpa memperlambat.
PHP-FPM penting untuk situs web dengan lalu lintas tinggi, tetapi mengelolanya dengan benar bisa jadi rumit. Berikut hal-hal yang perlu Anda ketahui untuk meningkatkan kinerja:
– Atur Mode Pengelola Proses yang Tepat: Gunakan mode dynamic untuk skalabilitas yang lebih baik.
– Hitung Proses Pekerja: Sesuaikan pm.max_children berdasarkan RAM server Anda (misalnya, 128MB per proses).
– Sempurnakan Pengaturan Memori: Gunakan memory_limit dan pm.max_requests untuk mengelola memori secara efisien.
– Optimalkan Koneksi: Atur batas waktu (request_terminate_timeout, max_execution_time) dan gunakan koneksi persisten.
– Aktifkan Pemantauan: Lacak metrik utama seperti panjang antrean, penggunaan memori, dan waktu permintaan.
Konfigurasi Cepat
pm = dynamic pm.max_children = 72 pm.start_servers = 8 pm.min_spare_servers = 8 pm.max_spare_servers = 20 pm.max_requests = 500
Pengaturan ini memastikan stabilitas sekaligus menangani konkurensi tinggi. Baca artikel selengkapnya untuk konfigurasi detail, termasuk tweak Nginx, pengaturan slowlog, dan alat pemantauan.
PHP-FPM Core Configuration

Mengonfigurasi PHP-FPM memainkan peran penting dalam memastikan server Anda berkinerja baik dan tetap stabil saat menghadapi lalu lintas yang padat.
Pengaturan Manajer Proses
Memilih mode manajer proses (PM) yang tepat sangatlah penting. Untuk pengaturan produksi dengan lalu lintas tinggi, mode dinamis menghasilkan keseimbangan yang baik antara penggunaan sumber daya dan kinerja.
Misalnya, pada server dengan RAM 16 GB, Anda dapat mengalokasikan 4 GB untuk OS, dan menyisakan 12 GB untuk PHP-FPM. Jika setiap proses menggunakan 128 MB, Anda dapat mendukung hingga 96 proses. Untuk menghindari penggunaan sumber daya secara maksimal, atur pm.max_children ke sekitar 75–80% dari kapasitas tersebut – katakanlah 72. Berikut contoh konfigurasinya:
pm = dynamic pm.max_children = 72 pm.start_servers = 8 pm.min_spare_servers = 8 pm.max_spare_servers = 20 pm.max_requests = 500
Pengaturan Memori
Konfigurasi memori yang tepat memastikan server Anda dapat menangani beban berat secara efisien. Pengaturan penting mungkin meliputi:
memory_limit = 256M php_value[session.gc_maxlifetime] = 1440 php_admin_value[memory_limit] = 256M
Sesuaikan memory_limit berdasarkan kebutuhan aplikasi Anda. Gunakan pm.max_requests untuk mendaur ulang proses secara berkala dan membersihkan kebocoran memori. Alokasikan juga memori yang cukup untuk OpCache guna meningkatkan kinerja.
Pengaturan Koneksi
Menyempurnakan parameter koneksi juga sama pentingnya. Berikut contoh pengaturannya:
request_terminate_timeout = 120s max_execution_time = 120 max_input_time = 60
Untuk antrean mendengarkan, pertimbangkan pengoptimalan berikut:
listen.backlog = 65535 listen.owner = www-data listen.group = www-data listen.mode = 0660
Untuk memantau kesehatan koneksi, aktifkan halaman status dengan pengaturan berikut:
pm.status_path = /status ping.path = /ping ping.response = pong
Konfigurasi ini berfungsi dengan baik di lingkungan dengan konkurensi tinggi. Untuk pemantauan dan diagnostik berkelanjutan, alat seperti Inspector dapat memberikan wawasan mendetail tentang aplikasi PHP Anda.
Konfigurasi Pool PHP-FPM
Pengaturan pool PHP-FPM yang efisien sangat penting untuk menangani lalu lintas tinggi. Di bawah ini, Anda akan menemukan konfigurasi yang direkomendasikan untuk pool proses dan pengaturan slowlog.
Pengaturan Kumpulan Proses
Untuk server dengan RAM 32GB (dengan asumsi setiap proses menggunakan 128MB):
Nilai-nilai ini harus disesuaikan berdasarkan kebutuhan memori aplikasi Anda. Selalu sisakan 20–30% RAM untuk sistem operasi dan layanan lainnya.
Setelah pool dikonfigurasi, pengaturan slowlog dapat membantu mengidentifikasi dan memperbaiki masalah kinerja.
Pengaturan Slowlog
Tambahkan baris berikut ke berkas konfigurasi PHP-FPM Anda:
slowlog = /var/log/php-fpm/slowlog.log request_slowlog_timeout = 5s
Awalnya ditetapkan request_slowlog_timeoutpada 5 detik tetapi dapat disesuaikan berdasarkan kebutuhan aplikasi Anda.
Untuk memanfaatkan slowlog secara maksimal:
– Aktifkan jejak tumpukan : Digunakan request_slowlog_trace_depth = 20 untuk menangkap data eksekusi terperinci.
– Tetapkan izin yang tepat : Pastikan proses PHP-FPM memiliki akses ke berkas log.
– Kelola ukuran log : Gunakan alat seperti logrotate untuk mengendalikan log.
Nginx dan PHP-FPM Setup

Pengaturan FastCGI
Untuk menangani skenario beban tinggi secara efektif, sesuaikan pengaturan FastCGI Anda di Nginx. Berikut konfigurasi yang direkomendasikan:
fastcgi_buffers 16 16k; fastcgi_buffer_size 32k; fastcgi_connect_timeout 60s; fastcgi_read_timeout 60s; fastcgi_send_timeout 60s; fastcgi_busy_buffers_size 32k; fastcgi_temp_file_write_size 32k; fastcgi_max_temp_file_size 0;
Jika respons Anda melebihi 16KB, pertimbangkan untuk menambahnya fastcgi_buffers dan fastcgi_buffer_size menghindari masalah kinerja.
Selain itu, aktifkan koneksi persisten untuk meningkatkan komunikasi antara Nginx dan PHP-FPM.
Manajemen Koneksi
Siapkan Nginx dan PHP-FPM untuk menangani koneksi secara efisien. Untuk koneksi persisten, gunakan konfigurasi ini:
upstream php-fpm {
server unix:/var/run/php-fpm.sock;
keepalive 32;
}Jika Anda menggunakan soket TCP, terapkan pengumpulan koneksi untuk distribusi beban yang lebih baik:
upstream php-fpm {
server 127.0.0.1:9000;
server 127.0.0.1:9001;
server 127.0.0.1:9002;
least_conn;
}Untuk menghindari kemacetan, sesuaikan pengaturan kumpulan PHP-FPM Anda agar sesuai dengan kapasitas server Anda:
pm.max_requests = 500 request_terminate_timeout = 60s rlimit_files = 65535 rlimit_core = unlimited
Pemantauan Kinerja
Pantau kinerja PHP‐FPM, terutama selama lalu lintas tinggi, untuk menemukan dan memperbaiki hambatan sebelum memengaruhi pengguna.
Alat Pemantauan
Alat waktu nyata seperti Inspector menyediakan wawasan terperinci pada tingkat kode tanpa memerlukan instalasi server.
Berikut adalah metrik utama yang perlu dipantau:
– Waktu Pemrosesan Permintaan: Ukur waktu rata-rata dan waktu puncak.
– Penggunaan Memori: Melacak konsumsi memori per proses dan keseluruhan.
– Status Proses: Awasi proses yang aktif, tidak aktif, dan total.
Untuk wawasan yang lebih mendalam, atur tumpukan pemantauan Anda untuk mencakup metrik PHP‐FPM yang penting ini:
Metrik ini bekerja berdampingan dengan konfigurasi PHP‐FPM yang disebutkan sebelumnya.
Area Konfigurasi Utama

Konfigurasi ini penting untuk memastikan PHP-FPM berkinerja baik di bawah beban berat. Untuk menjaga stabilitas, penting juga untuk menerapkan alat pemantauan. Misalnya, Inspektur memberikan wawasan waktu nyata tanpa memerlukan infrastruktur tambahan.

