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.
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.
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.
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.
İş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
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.