CodeBlanks Logo Icon CodeBlanks

PHP-FPM yapılandırması

PHP kursu · Uzman · Ders 44/54

PHP-FPM havuz ayarlarını ve process manager'ı öğrenirsin.

PHP-FPM havuzu

PHP-FPM istekleri worker process'lerle işler. pm = dynamic işlem yöneticisi (process manager) havuzu boşta küçük, yük altında büyütür.

pm.max_children eşzamanlı worker sayısının üst sınırını belirler. memory_limit her worker'ın kullanabileceği en fazla bellektir.

Yanlış ayar 502 Bad Gateway veya bellek taşmasına yol açar; bu yüzden havuz yapılandırması üretimde kritiktir.

Worker sayıları ve bellek

Worker başına memory_limit = 128M sıradan API'ler için yeterli, ağır iş kuyrukları için 256M veya üzeri gerekir.

pm.start_servers açılışta başlatılacak worker sayısıdır. pm.min_spare_servers ve pm.max_spare_servers boşta bekleyen worker aralığını tutar.

Kaba ölçüt: pm.max_children × memory_limit sunucu RAM'ini aşmamalı. Aşarsa işletim sistemi process öldürmeye başlar.

Uygulama PHP-FPM havuz yapılandırması üret

PHP ile bir PHP-FPM havuz yapılandırma metni üret: pm = dynamic, pm.max_children = 20, pm.start_servers = 4 ve memory_limit = 128M satırlarından oluşsun. file_put_contents ile php-fpm-pool.conf adına yaz ve metni ekrana bas.

Örnek çözümü göster
$cfg değişkenini tek tırnaklı parçalar ve "\n" ile birleştir. Sonra file_put_contents("php-fpm-pool.conf", $cfg); ve echo $cfg; çağrılarını ekle.
Örnek çözüm:
<?php
// PHP-FPM havuz yapılandırmasını üret
$cfg = 'pm = dynamic' . "\n" .
    'pm.max_children = 20' . "\n" .
    'pm.start_servers = 4' . "\n" .
    'memory_limit = 128M' . "\n";
file_put_contents("php-fpm-pool.conf", $cfg);
echo $cfg;

Kendini test et

  1. memory_limit değerini yaz

    <?php
    // Her worker için 128 MB
    $cfg = ["memory_limit" => "____"];
    print_r($cfg);
    
    Cevabı göster
    <?php
    // Her worker için 128 MB
    $cfg = ["memory_limit" => "128M"];
    print_r($cfg);
    
  2. PHP-FPM için hangi ayar worker başına bellek sınırını belirler?

    • memory_limit
    • pm.max_children
    • max_execution_time
    • upload_max_filesize
    Cevabı göster

    memory_limit — Doğru. memory_limit her worker'ın kullanabileceği en fazla bellektir.

  3. PHP-FPM yönergelerini eşleştir

    pm.max_children
    Maksimum worker sayısı
    memory_limit
    Worker başına bellek
    pm.start_servers
    Başlangıçta worker sayısı
    pm = dynamic
    Dinamik işlem yöneticisi

Uzman bölümündeki tüm dersler