I-VPS engu-8-core engu-24GB iphelelwa yinkumbulo? Ukulungiswa kwe-pool yenqubo ye-PHP-FPM e-HestiaCP

Inani labasebenzisi abasebenzisa iseva ngesikhathi esisodwa alixhomekile ekutheni inama-core amangaki, kodwa ekutheni inqubo ngayinye isebenzisa inkumbulo engakanani.

Lesi sitatimende singase sizwakale njengesisusa, kodwa siyinto yangempela nebuhlungu kakhulu embonini yokusebenza nokulungisa.

Kungani inkumbulo iyisithiyo esiyinhloko?

Abantu abaningi babona i-VPS ene-CPU engu-8-core kanye ne-24GB yememori futhi ngokungazi bacabanga ukuthi ingasebenzisa kalula amakhulu ezinqubo ze-PHP-FPM.

Kodwa-ke, empeleni, ukusetshenziswa kwememori ye-RSS yenqubo eyodwa ye-PHP kuvame ukuphakama kufike ku-200MB.

Lona umphumela otholwe ngokuhlolwa kwangempela ngomugqa womyalo:

ps --no-headers -o rss -p $(pgrep php-fpm) | awk '{sum+=$1} END {print sum/NR/1024 " MB"}'

Kuhlelo oluyinkimbinkimbi lwe -HestiaCP kanye nendawo enama-plugin amaningi, ikakhulukazi ngaphandle kokulungiswa kwe-OPcache, i-200MB iyinto evamile.

Lokhu kusho ukuthi inkumbulo, hhayi i-CPU, iwumkhawulo onzima onquma ukuvumelana okuphezulu.

I-VPS engu-8-core engu-24GB iphelelwa yinkumbulo? Ukulungiswa kwe-pool yenqubo ye-PHP-FPM e-HestiaCP

Ifayela lokucushwa elinconyiwe (php-fpm.conf)

pm = dynamic
pm.max_children = 80
pm.start_servers = 16
pm.min_spare_servers = 8
pm.max_spare_servers = 24
pm.max_requests = 500
pm.process_idle_timeout = 10s
request_terminate_timeout = 60s

Isisekelo sokubala ipharamitha kanye nesisekelo sokusetha

Imingcele yokumisaInani lokusethaUkubalwa okuyinhloko kanye nesisekelo sokusetha
pmdynamicImodi ye-Dynamic ivumela ukungezwa noma ukususwa kwezinqubo ngokususelwa ezidingweni ze-concurrency, ukulinganisela isivinini sempendulo kanye nokusetshenziswa kwememori.
pm.max_children80Imemori iyonke engu-24GB ngaphandle kwe-kernel yesistimu kanye MySQL/RedisNgemuva kwe-Nginx, cishe i-16GB isele ku-PHP.16,384 MB / 200 MB ≈ 81.9Ukuyibeka ku-80 kungasusa ngokuphelele i-OOM (Out of Memory) ngesikhathi sokuvumelana okuphezulu.
amaseva e-pm.start_16Ukufudumeza ekuqaleni kusethelwe kabili inani lama-core e-CPU (ama-core angu-8 × 2 = 16) ukuqinisekisa ukuthi isevisi ingaphatha ngokushesha ukuvumelana okuyisisekelo ngemva kokuqala kabusha.
amaseva e-pm.min_spare8Setha inani eliyinhloko le-CPU libe ama-cores angu-8 ukuqinisekisa ukuthi izicelo ezintsha zingaphendulwa nganoma yisiphi isikhathi ngezikhathi zethrafikhi ephansi.
amaseva_a-pm.max_spare_24Setha inani lama-core e-CPU libe kathathu kunenani lama-core e-CPU (ama-core ayi-8 × 3 = 24) ukuze ugcine inani elilinganiselwe lezinqubo ngemva kokwehla kwethrafikhi, ukuze kusingathwe ukuguquguquka okuthambile.
pm.max_requests500Uma inqubo eyodwa ifinyelela isisekelo esikhulu esingu-200MB, ukunciphisa inani lezicelo libe ngu-500 ngaphambi kokubhubhisa nokwakha kabusha kungahlanza ukuvuza kwememori okungabonakali ngokushesha.
pm.process_idle_timeout10sUkudlula min_spare_servers Izinqubo ezingasebenzi zikhishwa ngokuzenzakalelayo futhi zibuyiselwe kwimemori yesistimu ngemva kwemizuzwana eyi-10 yokungaceli.

Izilungiselelo Ezibalulekile Zokusekela kanye Neziphakamiso Zokuthuthukisa

1. Indlela yokulwa ne-hangover yokuphelelwa yisikhathi

request_terminate_timeout = 60s Yilokho okubalulekile.

Ingaqeda ngenkani izinqubo ezibambekile ngenxa yokungavulwa kwesizindalwazi noma ukuvinjelwa kwe-API yomuntu wesithathu.

Okwamanje, i-Nginx's fastcgi_read_timeout Kumelwe igcinwe okungenani imizuzwana engama-60, ngaphandle kwalokho iklayenti lizoyithola ngaphambi kwesikhathi. 504 Gateway Timeout,

2. Amasu okunqoba izinkinga zokukhumbula

Ubuningi bezinqubo ezihambisanayo ezingu-80 kusho ukuthi ngaphansi kwezimo eziqinile ze-concurrency, uhlelo lungaphatha ubuningi bezicelo ze-HTTP ezishintshashintshayo ezingu-80 ngesikhathi esisodwa.

Uma ufuna ukuthuthukisa umthamo, kufanele kugxilwe ekunciphiseni ukusetshenziswa kwememori ngenqubo ngayinye.

  • Nika amandla i-OPcache: ku php.ini Ukucushwa okuphakathi opcache.enable=1 futhi opcache.memory_consumption=256Ukugcinwa kwe-Bytecode kunganciphisa ukusetshenziswa kwememori kwenqubo eyodwa kusuka ku-200MB kuya ku-60 ~ 100MB.
  • Ukulawula okunengqondo kwe-memory_limit:Intando php.ini maphakathi memory_limit Kunqunyelwe ku- 128M Noma 256MUkuvimbela izikripthi ezingavamile zomuntu ngamunyeokungenamkhawuloKudla inkumbulo eningi.

Uma ukusetshenziswa kwememori kwenqubo eyodwa kwehla ku-100MB...pm.max_children Ingathuthukiswa ngokuphephile ibe yi- 150 Ngaphezu kwalokho, ikhono lokushintshanisa imali licishe liphindwe kabili.

Imibono enegunya ekhonjiwe

Ngokusho kwezincomo ezikumadokhumenti asemthethweni e-Nginx :

"Izinhlelo zokusebenza ze-FastCGI kufanele zihlale ziqashwe ngemiyalelo yokuphelelwa yisikhathi ukuze kuvinjelwe ukukhathala kwezinsiza."
(Umthombo: Amadokhumenti e-Nginx)

Incwadi esemthethweni ye-PHP isho ngokusobala ukuthi:

"pm.max_children ichaza inani eliphezulu lezinqubo zezingane okufanele zenziwe. Lesi yisiqondiso esibaluleke kakhulu."
(Umthombo: Imibhalo ye-PHP-FPM)

Le mibono enegunya ihambisana ngokuphelele nemikhuba yethu, okufakazela ukuthi ukucabanga kokuthuthukisa akusekelwe kokuhlangenwe nakho kuphela, kodwa futhi nasemikhubeni emihle ejwayelekile.

Isiphetho: Imibono Yami Nezingcaphuno Eziyinhloko

Ezimweni ezihambisana kakhulu nemali, i-CPU iyinjini, inkumbulo iyithangi likaphethiloli, kanti i-PHP-FPM iyisithumeli semikhumbi.

Kungakhathaliseki ukuthi injini inamandla kangakanani, uma ithangi likaphethiloli lingakhulu ngokwanele, umkhumbi ngeke uye kude kakhulu.

Ochwepheshe beqiniso abasebenzisi amapharamitha ngokungacabangi, kodwa kunalokho babala ngokunembile ukusetshenziswa kwememori kwenqubo ngayinye ukuze bagweme kokubili ukungcola nokuchichima.

Umongo wokwenza ngcono ukuthola ibhalansi efanele ngezinsiza ezilinganiselwe.

Lokhu akusibo ubuchwepheshe nje kuphela, kodwa futhi kuyifilosofi.

Ngakho-ke, yeka ukukholelwa ukuthi "inani lama-cores linquma konke." Okunquma ngempela umkhawulo we-concurrency ukulawula kwakho inkumbulo.

Thatha isinyathelo futhi uthuthukise i-VPS yakho ngokugcwele, usebenzise wonke amaconsi enkumbulo.

发表 评论

您的邮箱地址不会被公开。必填项已用*标注

Skrolela Top