લેખ ડિરેક્ટરી
- 1 PHP-FPM ઓવરલોડ થવાનું મુખ્ય કારણ
- 2 PHP-FPM પ્રોસેસ પૂલ ઑપ્ટિમાઇઝેશન (કોર પેરામીટર એડજસ્ટમેન્ટ)
- 3 કોઈપણ સમયે પ્રગતિનો ટ્રેક રાખવા માટે PHP-FPM સ્થિતિ મોનિટરિંગ સક્ષમ કરો.
- 4 સમસ્યાઓનું ઝડપથી નિવારણ કરવા માટે PHP-FPM લોગને ઑપ્ટિમાઇઝ કરો
- 5 મેમરી લીક અટકાવવા માટે નિયમિતપણે PHP-FPM પુનઃપ્રારંભ કરો
- 6 જો સમસ્યા ચાલુ રહે તો શું? વધુ ઑપ્ટિમાઇઝેશન!
- 7 સારાંશ: PHP-FPM ઑપ્ટિમાઇઝ કરો અને વેબસાઇટ હવે ક્રેશ નહીં થાય!
શું તમે ક્યારેય આ પરિસ્થિતિનો સામનો કર્યો છે?વેબસાઇટ ઍક્સેસ અચાનક ધીમી પડી ગઈ, અથવા તો 500 ભૂલમાં પરિણમી. PHP-FPM પુનઃપ્રારંભ કર્યા પછી, તે સામાન્ય થઈ ગયું., પણ થોડા સમય પછી સમસ્યા ફરી દેખાય છે? આ ખૂબ જ નિરાશાજનક છે!
આવું કેમ થઈ રહ્યું છે?હકીકતમાં, આ સામાન્ય રીતેPHP-FPM પ્રોસેસ પૂલ યોગ્ય રીતે ગોઠવેલ નથી, અથવા સર્વર સંસાધનો અપૂરતા છે.કારણે. આજે, આપણે સંપૂર્ણપણે ઑપ્ટિમાઇઝ કરીશું હેસ્ટિયાસીપી PHP-FPM ની ગુપ્તતા વેબસાઇટને ખડક જેટલી સ્થિર બનાવે છે!
PHP-FPM ઓવરલોડ થવાનું મુખ્ય કારણ
PHP-FPM એ એક છેપ્રક્રિયા વ્યવસ્થાપક, જે ગતિશીલ વિનંતીઓને હેન્ડલ કરવા માટે જવાબદાર છે. જો રૂપરેખાંકન વાજબી ન હોય, તો તે આ તરફ દોરી શકે છે:
- સર્વર સંસાધનો ખતમ થઈ ગયા છે., જેના કારણે PHP-FPM નવી વિનંતીઓનો સમયસર જવાબ આપી શકતું નથી;
- ખૂબ ઓછી પ્રક્રિયાઓ, જ્યારે ટ્રાફિક અચાનક વધી જાય છે, ત્યારે તેની સમયસર પ્રક્રિયા થઈ શકતી નથી;
- પ્રક્રિયાનો ઉપયોગ ખૂબ વધારે છે, જેના કારણે CPU લોડ ફૂટે છે.

PHP-FPM ઓવરલોડેડ છે કે નહીં તે કેવી રીતે જાણી શકાય?
વાપરી શકો top અથવા htop CPU અને મેમરી વપરાશ જોવા માટેનો આદેશ:
top -c
જો તમને નીચે મુજબની પ્રક્રિયા માહિતી દેખાય, તો તેનો અર્થ એ કે PHP-FPM ઉચ્ચ ભાર હેઠળ ચાલી રહ્યું છે:
1669293 abc 20 0 790284 227880 185568 R 73.1 0.9 1:30.09 php-fpm: pool chenweiliang.com
1669522 abc 20 0 801924 224224 170236 R 69.9 0.9 0:59.01 php-fpm: pool chenweiliang.com
જુઓ કે આ પ્રક્રિયાઓ CPU ના 70% થી વધુ ભાગ કેવી રીતે રોકી રહી છે? જો આવું વારંવાર થાય, તો તમારું PHP-FPM કોઈ સમસ્યા હશે.!
તો, આપણે PHP-FPM રૂપરેખાંકનને કેવી રીતે ઑપ્ટિમાઇઝ કરી શકીએ જેથી સર્વર હવે ઓવરલોડ ન થાય?
PHP-FPM પ્રોસેસ પૂલ ઑપ્ટિમાઇઝેશન (કોર પેરામીટર એડજસ્ટમેન્ટ)
પહેલા, ખોલો php-fpm રૂપરેખાંકન ફાઇલો:
sudo nano /etc/php/*/fpm/pool.d/www.conf- *તમારા PHP વર્ઝન, જેમ કે PHP8.3, માં બદલો અને તેને આમાં બદલો:
/etc/php/8.3/fpm/pool.d/www.conf
HestiaCP દ્વારા સેટ કરેલા PHP વર્ઝનની ક્વેરી કરો
v-list-web-domain user domain.com
દા.ત.
v-list-web-domain abc chenweiliang.com
આઉટપુટમાં, તમને કંઈક આવું દેખાશે:
PHP SUPPORT yes
PHP MODE php-fpm
PHP VERSION 8.3
આનો અર્થ એ છે કે વેબસાઇટ ઉપયોગ કરે છે PHP, 8.3.
ચાલો તમારા PHP-FPM રૂપરેખાંકન પર એક નજર કરીએ:
[chenweiliang.com]
listen = /run/php/php8.3-fpm-chenweiliang.com.sock
listen.owner = abc
listen.group = www-data
listen.mode = 0660
user = abc
group = abc
pm = ondemand
pm.max_children = 8
pm.max_requests = 4000
pm.process_idle_timeout = 10s
તમે જોઈ શકો છો કે તમારા pm વપરાયેલ એક છે ondemand,જોકે તે નિષ્ક્રિય સમય દરમિયાન સંસાધનોનો ઉપયોગ ઘટાડી શકે છે, જ્યારે ટ્રાફિક અચાનક વધે છે, ત્યારે પ્રક્રિયા સમયસર પ્રતિસાદ આપી શકશે નહીં., જેના પરિણામે 500 ભૂલ થાય છે.
1. PHP-FPM પ્રક્રિયા પૂલ પરિમાણોને સમાયોજિત કરો
જો રૂપરેખાંકન ઉપયોગ કરે છે dynamicઆ કેટલીક કાર્ય પ્રક્રિયાઓને પહેલાથી શરૂ કરવાની અને વિનંતીના જથ્થા અનુસાર ગતિશીલ રીતે ગોઠવવાની એક પદ્ધતિ છે, જે વિનંતીનું પ્રમાણ અચાનક વધે ત્યારે ઝડપી પ્રતિસાદ આપી શકે છે.
ચોક્કસ પ્રમાણમાં ટ્રાફિક ધરાવતી વેબસાઇટ્સ માટે, તેનો ઉપયોગ કરવાની ભલામણ કરવામાં આવે છે pm = dynamicકારણ કે તે ચોક્કસ માત્રામાં નિષ્ક્રિય પ્રક્રિયાઓ જાળવી શકે છે અને ઉચ્ચ સહવર્તીતા દરમિયાન 500 ભૂલો ટાળી શકે છે.
જ્યારે એક્સેસ વોલ્યુમ ખૂબ ઓછું હોય અને મેમરી સંસાધનો ઓછા હોય ત્યારે જ તેનો ઉપયોગ કરવાની ભલામણ કરવામાં આવે છે. pm = ondemand સંસાધનો બચાવવા માટે.
સૂચવ્યું ondemand, અને ઑપ્ટિમાઇઝ કરો pm.max_children અને અન્ય પરિમાણો:
pm = dynamic
pm.max_children = 16 ; 根据服务器资源调整,建议值:CPU 核心数 × 2
pm.start_servers = 4 ; 初始进程数,建议设为 max_children × 25%
pm.min_spare_servers = 2 ; 最小空闲进程数
pm.max_spare_servers = 7 ; 最大空闲进程数
pm.max_requests = 3000 ; 每个子进程处理完 3000 个请求后自动重启
pm.process_idle_timeout = 10s ; 空闲进程 10s 后自动退出
તમે તેને આ રીતે કેમ બદલવા માંગો છો?
pm = dynamic: માંગણીને કારણે થતી વિનંતી રાહ જોવાની શક્યતા ટાળવા માટે પ્રક્રિયાઓને વધુ લવચીક રીતે ફાળવો;pm.max_children = 16: ખૂબ ઓછી પ્રક્રિયાઓને કારણે થતી 500 ભૂલોને અટકાવો;pm.start_servers = 5: ધીમી પ્રક્રિયા શરૂ થવાથી બચો;pm.max_requests = 3000:મેમરી લીક અટકાવવી, પ્રક્રિયાને નિયમિતપણે રિસાયકલ કરો.
2. લાંબા ગાળાના કબજાને રોકવા માટે PHP સ્ક્રિપ્ટોના અમલીકરણ સમયને મર્યાદિત કરો
request_terminate_timeout = 30s ; 超过 30s 的 PHP 脚本自动终止
php_admin_value[memory_limit] = 128M ; 限制 PHP 进程最大内存占用
આ કેટલાકને અટકાવી શકે છેPHP સ્ક્રિપ્ટો જે ખૂબ વધારે CPU વાપરે છે તે તમારા સર્વરને નીચે લાવી શકે છે.
સેવ કર્યા પછી, PHP પ્રક્રિયા ફરી શરૂ કરો:
sudo systemctl restart php8.3-fpmકોઈપણ સમયે પ્રગતિનો ટ્રેક રાખવા માટે PHP-FPM સ્થિતિ મોનિટરિંગ સક્ષમ કરો.
PHP-FPM પ્રક્રિયા મોનિટરિંગ સક્ષમ કરો અને તેને કોઈપણ સમયે જુઓસક્રિય પ્રક્રિયાઓની વર્તમાન સંખ્યા અને વિનંતી પ્રતીક્ષા સ્થિતિ, સર્વર ઓવરલોડિંગ ટાળવા માટે.
在 php-fpm.conf આમાં ઉમેરાયેલ:
pm.status_path = /status
પછી, Nginx રૂપરેખાંકન:
location /status {
fastcgi_pass unix:/run/php/php8.3-fpm.sock;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
allow 127.0.0.1;
deny all;
}
આ રીતે, તમે કરી શકો છો http://yourdomain.com/status PHP-FPM ને ક્રિયામાં જુઓ!
સમસ્યાઓનું ઝડપથી નિવારણ કરવા માટે PHP-FPM લોગને ઑપ્ટિમાઇઝ કરો
在 php-fpm.conf ઉમેરો:
php_admin_value[error_log] = /var/log/php-fpm/error.log
php_admin_value[log_errors] = On
php_admin_value[error_reporting] = E_ALL
slowlog = /var/log/php-fpm/slow.log
request_slowlog_timeout = 5s ; 执行超过 5s 的脚本记录到日志
આ રીતે, જ્યારે પણ 500 ભૂલ થાય છે, ત્યારે તમે સીધા લોગ જોઈ શકો છો:
tail -f /var/log/php-fpm/error.log
જુઓ કે શું PHP કોઈ ભૂલની જાણ કરે છે, જેમ કે out of memory,script execution timeout 等
મેમરી લીક અટકાવવા માટે નિયમિતપણે PHP-FPM પુનઃપ્રારંભ કરો
પસાર કરવામાં સક્ષમ cron લાંબા સમયથી ચાલતી પ્રક્રિયાઓને રોકવા માટે નિયમિતપણે PHP-FPM પુનઃપ્રારંભ કરોમેમરી લીક્સ.
crontab -e
દરરોજ સવારે 3 વાગ્યે PHP-FPM ને આપમેળે પુનઃપ્રારંભ કરવા માટે નીચે આપેલ શેડ્યૂલ કરેલ કાર્ય ઉમેરો:
0 3 * * * /usr/sbin/service php8.3-fpm restart
જો સમસ્યા ચાલુ રહે તો શું? વધુ ઑપ્ટિમાઇઝેશન!
જો તમે હજુ પણ ઉપરોક્ત ઑપ્ટિમાઇઝેશનને અનુસરો છોક્યારેક ક્યારેક 500 ભૂલો થાય છે, તમે નીચેના ઑપ્ટિમાઇઝેશન સાથે ચાલુ રાખી શકો છો:
1. PHP એક્ઝેક્યુશન કાર્યક્ષમતા સુધારવા માટે OPcache ને સક્ષમ કરો
જો OPcache હજુ સુધી સક્ષમ ન હોય, તો તમે તેને આ રીતે ઇન્સ્ટોલ કરી શકો છો (ઉદાહરણ તરીકે ઉબુન્ટુનો ઉપયોગ કરીને):
sudo apt install php8.3-opcache -y
પછી સંપાદિત કરો php.ini:
opcache.enable=1
opcache.memory_consumption=128
opcache.max_accelerated_files=4000
opcache.validate_timestamps=1
અસર? PHP પેજ એક્ઝિક્યુશન સ્પીડમાં ઘણો સુધારો થયો છે!
2. Nginx રૂપરેખાંકન ઑપ્ટિમાઇઝેશન
ખાતરી કરો કે Nginx સંબંધિત પરિમાણો વાજબી છે, જેમ કે fastcgi_read_timeout લાંબા એક્ઝેક્યુશન સમયને કારણે Nginx દ્વારા PHP સ્ક્રિપ્ટો સમાપ્ત ન થાય તે માટે તેને યોગ્ય રીતે ગોઠવો:
fastcgi_read_timeout 60s;
client_max_body_size 100M;
સારાંશ: PHP-FPM ઑપ્ટિમાઇઝ કરો અને વેબસાઇટ હવે ક્રેશ નહીં થાય!
આ ઑપ્ટિમાઇઝેશન પછી આપણે કયા ગોઠવણો કર્યા છે?
✅ PHP-FPM પ્રક્રિયા પૂલને ઑપ્ટિમાઇઝ કરવું,વાપરવુ ondemandઅને ઑપ્ટિમાઇઝ કરો pm.max_children પરિમાણ;
✅ PHP સ્ક્રિપ્ટોના અમલીકરણ સમયને મર્યાદિત કરવો, લાંબા ગાળાના CPU વ્યવસાયને રોકવા માટે;
✅ PHP-FPM મોનિટરિંગ સક્ષમ કરો, રીઅલ ટાઇમમાં પ્રક્રિયા લોડ જુઓ;
✅ PHP-FPM લોગને ઑપ્ટિમાઇઝ કરી રહ્યા છીએ, 500 ભૂલોનું ઝડપથી નિવારણ કરો;
✅ PHP-FPM નિયમિતપણે ફરી શરૂ કરો, મેમરી લીક અટકાવો;
✅ OPcache સક્ષમ કરો, PHP અમલીકરણ કાર્યક્ષમતામાં સુધારો;
✅ Nginx રૂપરેખાંકનને ઑપ્ટિમાઇઝ કરી રહ્યું છે, સમયસમાપ્તિની સમસ્યાઓ ટાળવા માટે.
આ ઑપ્ટિમાઇઝેશન પછી, PHP-FPM લોડ ઘણો ઓછો થઈ જશે અને વેબસાઇટનું સંચાલન વધુ સ્થિર થશે! 🔥
હમણાં જ અજમાવી જુઓ! 💪🚀
હોપ ચેન વેઇલિયાંગ બ્લોગ ( https://www.chenweiliang.com/ ) શેર કરેલ "HestiaCP PHP-FPM લોડ ખૂબ વધારે છે? ડાયનેમિક વેબ પેજ 500 ભૂલ? આ ઑપ્ટિમાઇઝેશન તરત જ અમલમાં આવશે! ”, તે તમને મદદરૂપ થઈ શકે છે.
આ લેખની લિંક શેર કરવા માટે આપનું સ્વાગત છે:https://www.chenweiliang.com/cwl-32512.html
વધુ છુપાયેલા યુક્તિઓ🔑 અનલૉક કરવા માટે, અમારી ટેલિગ્રામ ચેનલમાં જોડાવા માટે આપનું સ્વાગત છે!
ગમે તો શેર કરો અને લાઈક કરો! તમારા શેર અને લાઈક્સ એ અમારી સતત પ્રેરણા છે!