VestaCP veb xidməti üçün "phpfcgid" şablonunu seçdikdən sonra çox sayda PHP-CGI prosesi yaddaşı tez bir zamanda tükəndirdi.
- Serveri yenidən başlatdıqdan sonra bir neçə saat yaddaşım tükənirdi.
- Əvvəllər boş olan PHP-CGI prosesi məhv edilmir və bir proses ən azı 1M yaddaş sərf edən 20-yə yaxın alt proses işlədir.
SSH-də istifadə olunur htop əmri (quraşdırma tələb olunur), bu statusa baxa bilərsiniz ▼

Əgər htop əmrindən istifadə edərkən "-bash: htop: komanda tapılmadı" səhv mesajı alsanız, həll üçün bu təlimata baxın ▼
PHP-CGI proseslərinin çoxluğu yaddaşın tez tükənməsinə səbəb oldu. Problem VestaCP-nin CentOS phpfcgid şablonunda optimallaşdırılmamış konfiqurasiyadan istifadə etməsindədir .
- phpfcgid şablonunda VestaCP, 1 uşaq prosesini işə salmaq üçün 20 PHP-CGI prosesi təyin edin.
görmək /usr/local/vesta/data/templates/web/httpd/phpfcgid.sh Faylın 13-cü sətri:
export PHP_FCGI_CHILDREN=20
Bununla belə, belə bir quraşdırma PHP alt proseslərinin idarə edilməsi sənədlərindəki Apache xəbərdarlığını pozur:
PHP uşaq proseslərinin idarə edilməsi ( PHP_FCGI_CHILDREN ) həmişə mod_fcgid ilə deaktiv edilməlidir, bu da bir anda yalnız bir sorğunu yaratdığı tətbiq proseslərinə yönləndirəcək; beləliklə, PHP tərəfindən yaradılan hər hansı bir uşaq prosesindən effektiv şəkildə istifadə olunmayacaq. (Bundan əlavə, PHP uşaq prosesləri düzgün şəkildə dayandırılmaya bilər.) Varsayılan olaraq və PHP_FCGI_CHILDREN=0 mühit dəyişəni ayarı ilə PHP uşaq proseslərinin idarə edilməsi deaktiv edilir.
Çünki Apache-nin mod_fcgid modulunda PHP-CGI prosesi yalnız bir sorğuya cavab verə və eyni anda işləyə bilər, PHP-CGI uşaq prosesi çox səmərəsizdir.
Buna görə də, PHP alt proseslərinin idarə edilməsi üçün parametrlər birbaşa deaktiv edilməlidir ▼
PHP_FCGI_CHILDREN=0
Eyni zamanda, artıq yaradılmış virtual hostunuz varsa, bütün vebsaytların konfiqurasiya fayllarını dəyişdirməlisiniz ▼
/home/用户名/web/域名/cgi-bin/fcgi-starter
fcgi-starter konfiqurasiya faylını açdıqdan sonra aşağıdakı ▼ daxil edin
export PHP_FCGI_CHILDREN=20
▼ olaraq dəyişdirildi
export PHP_FCGI_CHILDREN=0
- Dəyişiklikdən sonra PHP alt prosesinin idarə edilməsi mod_fcgid rejimində söndürüləcək.
- PHP-CGI prosesi daha çox yaddaşa qənaət edə biləcək uşaq prosesləri yaratmayacaq.
Həmçinin, VestaCP boş proseslər üçün sonlandırma mexanizmi təyin etmir:
- Bütün yeni icra edilən PHP-CGI prosesləri sistem yenidən işə salınana qədər yaddaşdan istifadə etməyə davam edəcək.
Bunu düzəltmək üçün mod_fcgid konfiqurasiya faylını əlavə edin /etc/httpd/conf.d/fcgid.conf ▼-ə aşağıdakı parametrləri əlavə edin
FcgidIdleTimeout 120
- Apache-ni 2 dəqiqə (120 saniyə) boş qalan PHP-CGI proseslərini avtomatik öldürmək üçün təyin edin.
Quraşdırma tamamlandıqdan sonra Apache xidmətini ▼ yenidən başladın
service httpd restart
Xidmət yenidən işə salındıqdan sonra, əvvəllər HTOP-da göstərilən yüzlərlə PHP-CGI prosesi artıq göstərilməyəcək.
Tipik olaraq, tək bir Vesta CP istifadəçisi üçün tək bir PHP-CGI prosesi 30-40 MB yaddaş istehlak edir ki, bu da Linux hosti üçün kifayətdir.
Buna görə də, Vesta məzmununun və şablonlarının konfiqurasiyasını optimallaşdırmaq SEO -da üstün olmaq istəyən onlayn marketinq mütəxəssisləri üçün çox vacibdir.
Siz VestaCP panelində aşağıdakı dərsliklərə baxa bilərsiniz ▼
Ümid edirəm ki, Chen Weiliang-ın bloqunda ( https://www.chenweiliang.com/ ) paylaşılan "'Birdən çox Proses, Yaddaş Tükənməsi 500 Xətası' üçün VestaCP phpfcgid şablon konfiqurasiyasının optimallaşdırılması" məqaləsi sizə faydalı olacaq.
Bu məqalənin linkini paylaşmaqdan çəkinməyin: https://www.chenweiliang.com/cwl-735.html



