Nginx PHP-FPM Optimizasyonu

Nginx PHP-FPM Optimizasyonu

Nginx PHP-FPM optimizasyonu, sunucu hizmetinizdeki web sitelerinin performansını artırmak ve kaynak kullanımını optimize etmek için yapılır. Bu işlemi yaparken Nginx ve PHP-FPM yapılandırma dosyalarında doğru ayarları yapmak gerekir.

1. PHP-FPM Konfigürasyonu

PHP-FPM’in optimizasyonu için /etc/php/7.4/fpm/pool.d/www.conf dosyasını düzenlemeniz gerekir. İşlemler için aşağıdaki ayarlara dikkat edin:

pm.max_children: Bu ayar, PHP-FPM’nin aynı anda kaç çocuk işlemi (worker process) başlatabileceğini belirler. Sunucu belleğinize göre ayarlanmalıdır.

pm.max_children = 50

pm.start_servers: Bu ayar, başlangıçta kaç işlem başlatılacağını belirler. Çok düşük ayarlarsanız ilk talep yavaş olabilir, çok yüksek ayarlarsanız belleği fazla kullanabilir.

pm.start_servers = 5

pm.min_spare_servers ve pm.max_spare_servers: Minimum ve maksimum boşta bekleyen işlem sayısını belirler. Bunlar, trafiğe göre ayarlanmalıdır.

pm.min_spare_servers = 5
pm.max_spare_servers = 10

Bu ayarlarla PHP-FPM’nin talep kapasitesine göre yeterli kaynak ayırabilirsiniz.

2. Nginx Konfigürasyonu

Nginx’in PHP-FPM ile nasıl iletişim kuracağını ayarlamak için Nginx’in konfigürasyon dosyasını (/etc/nginx/sites-available/default) düzenlemeniz gerekir. PHP işlemleri için aşağıdaki gibi bir yapılandırma yapılmalıdır:

server {
listen 80;
server_name yourdomain.com;

root /var/www/html;
index index.php index.html index.htm;

location / {
try_files $uri $uri/ =404;
}

location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/var/run/php/php7.4-fpm.sock;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}

location ~ /\.ht {
deny all;
}
}

Burada fastcgi_pass ayarının doğru olduğuna dikkat etmelisiniz. Nginx, PHP işlemlerini PHP-FPM’ye iletir ve soket üzerinden iletişim kurar.

3. Buffer ve Zaman Aşımı Ayarları

PHP-FPM taleplerinin performansını optimize etmek için Nginx’in buffer ve zaman aşımı ayarlarını düzenlemelisiniz. Bu ayarlar, Nginx’in veriyi nasıl tamponladığını ve uzun süren işlemler için zaman aşımını nasıl ayarlayacağını belirler.

client_body_buffer_size: POST talepleri için kullanılan tampon belleğin boyutunu belirler.

client_body_buffer_size 128k;

client_max_body_size: Yüklenebilecek maksimum dosya boyutunu belirler. Bu, büyük dosya yüklemeleri olan siteler için önemlidir.

client_max_body_size 16M;

fastcgi_buffers: PHP talepleri için kullanılacak tamponların sayısını ve boyutunu belirler. Aşağıdaki ayar, taleplerin hızlı bir şekilde işlenmesini sağlar.

fastcgi_buffers 8 16k;
fastcgi_buffer_size 32k;

fastcgi_connect_timeout, fastcgi_send_timeout, ve fastcgi_read_timeout: Bu ayarlar, PHP işlemlerinin ne kadar süre sonra zaman aşımına uğrayacağını belirler. Trafiği yoğun olan siteler için bu ayarların optimize edilmesi gerekir.

fastcgi_connect_timeout 60;
fastcgi_send_timeout 180;
fastcgi_read_timeout 180;

4. PHP-FPM Loglama ve Performans İzleme

PHP-FPM’nin çalışma performansını izlemek için loglama ayarlarını açmanız önerilir. Bu sayede hangi işlemlerin uzun sürdüğünü ve performans sorunlarının nereden kaynaklandığını görebilirsiniz.

slowlog: Yavaş talepler için loglama yapılmasını sağlar. Bu ayarı aktif etmek için www.conf dosyasındaki şu satırları düzenleyin:

slowlog = /var/log/php7.4-fpm.log.slow
request_slowlog_timeout = 5s

Bu ayar, 5 saniyeden uzun süren PHP taleplerini loglar.

5. Nginx Cache Optimizasyonu

Nginx, dinamik içerikleri önbelleğe alarak PHP-FPM üzerindeki yükü azaltabilir. Aşağıdaki ayarları ekleyerek Nginx cache mekanizmasını kullanabilirsiniz:

proxy_cache_path /var/cache/nginx levels=1:2 keys_zone=php_cache:10m max_size=1g inactive=60m use_temp_path=off;

Bu satır, Nginx’in dinamik içerikleri önbelleğe alacağı bir alan oluşturur. Ve sunucu üzerindeki önbelleğin boyutunu ve süresini ayarlamış olursunuz.

6. Cache Kontrolü ve Expiry Ayarları

PHP-FPM ile çalışan dinamik içeriklerin daha iyi performans göstermesi için içerik önbellekleme sürelerini ayarlayabilirsiniz. Örneğin, CSS ve JavaScript dosyalarının önbellekte uzun süre kalmasını sağlayarak sayfa yüklenme sürelerini azaltabilirsiniz.

location ~* \.(jpg|jpeg|png|gif|ico|css|js)$ {
expires 30d;
access_log off;
}

Bu ayar, statik dosyaların tarayıcıda 30 gün boyunca önbellekte tutulmasını sağlar. Nginx PHP-FPM optimizasyonu, doğru ayarlarla web sunucunuzun performansını artırır ve daha verimli kaynak kullanımı sağlar. Nginx ve PHP-FPM yapılandırmaları, yüksek trafik altındaki sitelerde bile hızlı tepki süreleri sunar. Yukarıda belirtilen ayarları yaparak sitenizin hızını ve verimliliğini en üst düzeye çıkarabilirsiniz.

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir