Ödeme Yöntemleri Abuse

Bellek azaldığında 404 Not Found Nginx nasıl düzeltilir

15.11.2023, 13:31

404 Not Found, sunucuda bulunmayan bir web sayfasına veya kaynağa erişmeye çalıştığınızda ortaya çıkan bir hatadır. Nginx, web sitelerine hizmet vermek için kullanılabilen bir web sunucusu ve proxy sunucusudur. 404 Not Found Nginx, istenen sayfanın veya kaynağın Nginx kullanan sunucuda bulunamadığı anlamına gelir.

Yeterli RAM yoksa hata nasıl çözülür?

Bir php betiği çalıştırmak için yeterli RAM'e sahip olmadığında ve işlemi sistem tarafından durdurulduğunda, Nginx de 404 hatası döndürebilir.

Bu, betik uzun süre çalıştıktan sonra"404 Not Found" veya motorunuzun hata sayfasını döndürdüğünde göreceğiniz durumdur. Genellikle bu hata hata ayıklama günlüğünde de görülebilir.

Bellek azaldığında 404 Not Found Nginx nasıl düzeltilir

Sorun, sunucuda bellek boşaltarak çözülür, genellikle php-fpm işlemleri sunucudaki neredeyse tüm belleği kullandığında php'deki bellek sızıntıları nedeniyle bu olabilir. Php-fpm 'i yeniden başlatarak bu sorun kısmen çözüldü:

$ systemctl restart php-fpm

Bu durum gelecekte önlenebilir mi? Cevap evet, önleyebilirsiniz. Bunu yapmak için, işlemlerin otomatik olarak yeniden başlatılmasını yapılandırmanız gerekir.

İşlemlerin otomatik olarak yeniden başlatılmasını yapılandırma

Linux'ta süreçleri belirli sayıda istekten sonra otomatik olarak yeniden başlatılacak şekilde yapılandırmak için systemd veya supervisord gibi süreç yönetim araçlarını kullanabilirsiniz.

systemd

İşlem yapılandırmanızla birlikte /etc/systemd/system/ dizininde .service uzantılı bir dosya oluşturun. Örneğin, php-fpm.service dosyası

[Unit]
Description=PHP FastCGI Process Manager
After=network.target
[Service]
Type=simple
ExecStart=/usr/sbin/php-fpm
Restart=always
RestartSec=3
StartLimitInterval=0
StartLimitBurst=10
[Install]
WantedBy=multi-user.target

Bu örnekte, StartLimitBurst parametresi, işlem geçici olarak kapanmadan önce yeniden başlatma sayısını ayarlar.

Servis dosyasını oluşturduktan sonra, systemd 'yi yeniden başlatmak ve yeni servisi etkinleştirmek için komutu çalıştırın:

sudo systemctl daemon-reload
sudo systemctl enable php-fpm.service
sudo systemctl start php-fpm.service

supervisord

Linux dağıtımınızın paket yöneticisini kullanarak yükleyin. Ardından /etc/supervisor/conf.d/ dizininde işleminiz için bir yapılandırma dosyası oluşturun. Örneğin, php-fpm.conf dosyası:

[program:php-fpm]
command=/usr/sbin/php-fpm
autorestart=true
startretries=10

Bu örnekte, startretries parametresi süreci yeniden başlatmak için deneme sayısını ayarlar.

Yapılandırma dosyasını oluşturduktan sonra supervisord'u yeniden başlatın:

sudo supervisorctl reread
sudo supervisorctl update

Bu adımlar, Linux'ta belirli sayıda isteği işledikten sonra işlemleri otomatik olarak yeniden başlatacak şekilde yapılandırmanıza yardımcı olacaktır.