VPS 8-core 24GB ໝົດໜ່ວຍຄວາມຈຳແລ້ວບໍ? ຄູ່ມືປະຕິບັດສຳລັບການປັບແຕ່ງກຸ່ມຂະບວນການ PHP-FPM ຢ່າງຮຸນແຮງດ້ວຍ HestiaCP

ຈຳນວນຜູ້ໃຊ້ພ້ອມກັນທີ່ເຊີບເວີສາມາດຈັດການໄດ້ບໍ່ໄດ້ຂຶ້ນກັບຈຳນວນແກນຫຼັກຂອງມັນ, ແຕ່ຂຶ້ນກັບວ່າແຕ່ລະຂະບວນການໃຊ້ໜ່ວຍຄວາມຈຳເທົ່າໃດ.

ຖະແຫຼງການນີ້ອາດຟັງຄືວ່າເປັນການກະຕຸ້ນ, ແຕ່ມັນເປັນປະສົບການທີ່ແທ້ຈິງ ແລະ ເຈັບປວດທີ່ສຸດໃນອຸດສາຫະກຳການດຳເນີນງານ ແລະ ການບຳລຸງຮັກສາ.

ເປັນຫຍັງຄວາມຊົງຈຳຈຶ່ງເປັນຈຸດອ່ອນຫຼັກ?

ຫຼາຍຄົນເຫັນ VPS ທີ່ມີ CPU 8-core ແລະໜ່ວຍຄວາມຈຳ 24GB ແລະຄິດໂດຍບໍ່ຮູ້ຕົວວ່າພວກເຂົາສາມາດແລ່ນຂະບວນການ PHP-FPM ຫຼາຍຮ້ອຍຂະບວນການໄດ້ຢ່າງງ່າຍດາຍ.

ເຖິງຢ່າງໃດກໍ່ຕາມ, ໃນຄວາມເປັນຈິງແລ້ວ, ການໃຊ້ໜ່ວຍຄວາມຈຳ RSS ຂອງຂະບວນການ PHP ດຽວມັກຈະສູງເຖິງ 200MB.

ນີ້ແມ່ນຜົນໄດ້ຮັບທີ່ໄດ້ຮັບຈາກການທົດສອບຕົວຈິງຜ່ານ command line:

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

ໃນ ສະພາບແວດລ້ອມຂອງ framework ແລະ multi-plugin ທີ່ສັບສົນຂອງ HestiaCP , ໂດຍສະເພາະໂດຍບໍ່ມີການເພີ່ມປະສິດທິພາບ OPcache, 200MB ແມ່ນມາດຕະຖານ.

ນີ້ໝາຍຄວາມວ່າໜ່ວຍຄວາມຈຳ, ບໍ່ແມ່ນ CPU, ແມ່ນຂີດຈຳກັດທີ່ກຳນົດຄວາມພ້ອມສູງສຸດ.

VPS 8-core 24GB ໝົດໜ່ວຍຄວາມຈຳແລ້ວບໍ? ຄູ່ມືປະຕິບັດສຳລັບການປັບແຕ່ງກຸ່ມຂະບວນການ PHP-FPM ຢ່າງຮຸນແຮງດ້ວຍ HestiaCP

ໄຟລ໌ການຕັ້ງຄ່າທີ່ແນະນຳ (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

ເຫດຜົນການຄິດໄລ່ພາລາມິເຕີ ແລະ ພື້ນຖານການຕັ້ງຄ່າ

ຕົວກໍານົດການກໍານົດກຳນົດຄ່າການຄິດໄລ່ຫຼັກ ແລະ ພື້ນຖານການຕັ້ງຄ່າ
pmdynamicໂໝດໄດນາມິກຊ່ວຍໃຫ້ການເພີ່ມ ຫຼື ລຶບຂະບວນການແບບຍືດຫຍຸ່ນໄດ້ໂດຍອີງໃສ່ຄວາມຕ້ອງການການເຮັດວຽກພ້ອມກັນ, ການດຸ່ນດ່ຽງຄວາມໄວໃນການຕອບສະໜອງ ແລະ ການນຳໃຊ້ໜ່ວຍຄວາມຈຳ.
pm.max_ເດັກນ້ອຍ80ໜ່ວຍຄວາມຈຳທັງໝົດ 24GB ຫັກເອົາ kernel ລະບົບ ແລະ MySQL/Redisຫຼັງຈາກ Nginx, ປະມານ 16GB ຍັງເຫຼືອສຳລັບ PHP.16,384 MB / 200 MB ≈ 81.9ການຕັ້ງຄ່າມັນເປັນ 80 ສາມາດລົບລ້າງ OOM (Out of Memory) ໄດ້ຢ່າງສົມບູນໃນລະຫວ່າງການເຮັດວຽກພ້ອມກັນສູງ.
pm.start_servers16ການອຸ່ນເຄື່ອງລ່ວງໜ້າໃນເວລາເລີ່ມຕົ້ນຖືກຕັ້ງໃຫ້ເປັນສອງເທົ່າຂອງຈຳນວນແກນ CPU (8 ແກນ × 2 = 16) ເພື່ອຮັບປະກັນວ່າການບໍລິການສາມາດຈັດການການເຮັດວຽກພ້ອມກັນພື້ນຖານໄດ້ທັນທີຫຼັງຈາກເລີ່ມຕົ້ນໃໝ່.
ເຊີບເວີ pm.min_spare_servers8ຕັ້ງຄ່າຈຳນວນແກນ CPU ເປັນ 8 ແກນ ເພື່ອຮັບປະກັນວ່າຄຳຮ້ອງຂໍໃໝ່ສາມາດຕອບສະໜອງໄດ້ທຸກເວລາໃນຊ່ວງເວລາທີ່ການຈະລາຈອນຕໍ່າ.
ເຊີບເວີ pm.max_spare_servers24ຕັ້ງຄ່າມັນເປັນ 3 ເທົ່າຂອງຈຳນວນແກນ CPU (8 ແກນ × 3 = 24) ເພື່ອຮັກສາຈຳນວນຂະບວນການທີ່ປານກາງຫຼັງຈາກການຈາລະຈອນຫຼຸດລົງ, ເພື່ອຈັດການກັບຄວາມຜັນຜວນທີ່ເບົາບາງ.
pm.max_requests500ຖ້າຂະບວນການດຽວບັນລຸພື້ນຖານຂະໜາດໃຫຍ່ 200MB, ການຫຼຸດຜ່ອນຈຳນວນການຮ້ອງຂໍໃຫ້ເຫຼືອ 500 ກ່ອນທີ່ຈະທຳລາຍ ແລະ ສ້າງຄືນໃໝ່ສາມາດເຮັດຄວາມສະອາດການຮົ່ວໄຫຼຂອງໜ່ວຍຄວາມຈຳໂດຍປະນິນໄດ້ໄວຂຶ້ນ.
pm.process_idle_timeout10sເກີນກວ່າ min_spare_servers ຂະບວນການທີ່ບໍ່ໄດ້ໃຊ້ງານຈະຖືກປ່ອຍອອກໂດຍອັດຕະໂນມັດ ແລະ ກັບຄືນສູ່ໜ່ວຍຄວາມຈຳຂອງລະບົບຫຼັງຈາກ 10 ວິນາທີທີ່ບໍ່ມີການຮ້ອງຂໍ.

ການຕັ້ງຄ່າສະໜັບສະໜູນທີ່ສຳຄັນ ແລະ ຄຳແນະນຳກ່ຽວກັບການເພີ່ມປະສິດທິພາບ

1. ກົນໄກການຢຸດເວລາຕ້ານອາການເມົາຄ້າງ

request_terminate_timeout = 60s ແມ່ນກຸນແຈ.

ມັນສາມາດບັງຄັບຢຸດຕິຂະບວນການທີ່ຕິດຢູ່ຍ້ອນການຢຸດຊະງັກຂອງຖານຂໍ້ມູນ ຫຼື ການບລັອກ API ຂອງພາກສ່ວນທີສາມ.

ໃນຂະນະດຽວກັນ, Nginx's fastcgi_read_timeout ມັນຕ້ອງຖືກຮັກສາໄວ້ຢ່າງໜ້ອຍ 60 ວິນາທີ, ຖ້າບໍ່ດັ່ງນັ້ນລູກຄ້າຈະໄດ້ຮັບມັນກ່ອນໄວອັນຄວນ. 504 Gateway Timeout.

2. ຍຸດທະສາດເພື່ອເອົາຊະນະຂໍ້ຈຳກັດດ້ານຄວາມຈຳ

ຂະບວນການພ້ອມກັນສູງສຸດ 80 ຂະບວນການໝາຍຄວາມວ່າພາຍໃຕ້ເງື່ອນໄຂການເຮັດວຽກພ້ອມກັນທີ່ຮຸນແຮງ, ລະບົບສາມາດຈັດການການຮ້ອງຂໍ HTTP ແບບໄດນາມິກໄດ້ສູງສຸດ 80 ຂະບວນການພ້ອມໆກັນ.

ຖ້າທ່ານຕ້ອງການປັບປຸງຄວາມອາດສາມາດຕື່ມອີກ, ຈຸດສຸມຄວນຈະຢູ່ທີ່ການຫຼຸດຜ່ອນການໃຊ້ໜ່ວຍຄວາມຈຳຕໍ່ຂະບວນການ.

  • ເປີດໃຊ້ OPcache: ໃນ php.ini ການຕັ້ງຄ່າຂະໜາດກາງ opcache.enable=1 ແລະ opcache.memory_consumption=256ການ caching Bytecode ສາມາດຫຼຸດຜ່ອນການໃຊ້ໜ່ວຍຄວາມຈຳຂອງຂະບວນການດຽວຈາກ 200MB ເປັນ 60~100MB.
  • ການຄວບຄຸມທີ່ສົມເຫດສົມຜົນຂອງ memory_limit: 将 php.ini ກາງ memory_limit ຈຳກັດສະເພາະ 128M ຫລື 256Mເພື່ອປ້ອງກັນສະຄຣິບຜິດປົກກະຕິສ່ວນບຸກຄົນບໍ່ຈຳກັດມັນໃຊ້ໜ່ວຍຄວາມຈຳຫຼາຍ.

ເມື່ອການໃຊ້ໜ່ວຍຄວາມຈຳຂອງຂະບວນການດຽວຫຼຸດລົງເຖິງ 100MB...pm.max_children ມັນສາມາດຍົກລະດັບໄດ້ຢ່າງປອດໄພ 150 ນອກຈາກນັ້ນ, ຄວາມສາມາດໃນການເຮັດວຽກຮ່ວມກັນໄດ້ເພີ່ມຂຶ້ນເກືອບສອງເທົ່າ.

ທັດສະນະທີ່ມີສິດອຳນາດທີ່ອ້າງອີງ

ອີງຕາມ ຄໍາແນະນໍາໃນ ເອກະສານ Nginx ຢ່າງເປັນທາງການ :

"ແອັບພລິເຄຊັນ FastCGI ຄວນຖືກຕິດຕາມກວດກາດ້ວຍຄຳສັ່ງ timeout ສະເໝີເພື່ອປ້ອງກັນການໝົດຊັບພະຍາກອນ."
(ແຫຼ່ງຂໍ້ມູນ: ເອກະສານ Nginx)

ຄູ່ ມື PHP ຢ່າງເປັນທາງການ ລະບຸຢ່າງຊັດເຈນວ່າ:

"pm.max_children ກຳນົດຈຳນວນສູງສຸດຂອງຂະບວນການລູກທີ່ຈະຖືກສ້າງຂຶ້ນ. ນີ້ແມ່ນຄຳສັ່ງທີ່ສຳຄັນທີ່ສຸດ."
(ແຫຼ່ງຂໍ້ມູນ: ເອກະສານ PHP-FPM)

ທັດສະນະທີ່ມີສິດອຳນາດເຫຼົ່ານີ້ແມ່ນສອດຄ່ອງກັບການປະຕິບັດຂອງພວກເຮົາຢ່າງສົມບູນ, ເຊິ່ງພິສູດວ່າເຫດຜົນຂອງການເພີ່ມປະສິດທິພາບບໍ່ພຽງແຕ່ອີງໃສ່ປະສົບການເທົ່ານັ້ນ, ແຕ່ຍັງອີງໃສ່ການປະຕິບັດທີ່ດີທີ່ສຸດທີ່ໄດ້ມາດຕະຖານອີກດ້ວຍ.

ສະຫຼຸບ: ທັດສະນະຂອງຂ້ອຍ ແລະ ຄຳເວົ້າທີ່ສຳຄັນ

ໃນສະຖານະການທີ່ມີການໃຊ້ງານຮ່ວມກັນສູງ, CPU ແມ່ນເຄື່ອງຈັກ, ໜ່ວຍຄວາມຈຳແມ່ນຖັງນໍ້າມັນເຊື້ອໄຟ, ແລະ PHP-FPM ແມ່ນຕົວແຈກຈ່າຍກອງລົດ.

ບໍ່ວ່າເຄື່ອງຈັກຈະມີພະລັງປານໃດກໍຕາມ, ຖ້າຖັງນໍ້າມັນບໍ່ໃຫຍ່ພໍ, ຂະບວນລົດກໍ່ຈະບໍ່ໄປໄດ້ໄກ.

ຜູ້ຊ່ຽວຊານທີ່ແທ້ຈິງບໍ່ໄດ້ຄິດໄລ່ຄ່າພາລາມິເຕີສູງສຸດໂດຍບໍ່ຄິດ, ແຕ່ຈະຄິດໄລ່ການໃຊ້ໜ່ວຍຄວາມຈຳຂອງແຕ່ລະຂະບວນການຢ່າງຊັດເຈນເພື່ອຫຼີກລ່ຽງທັງການສູນເສຍ ແລະ ການລົ້ນ.

ສາລະສຳຄັນຂອງການເພີ່ມປະສິດທິພາບແມ່ນເພື່ອຊອກຫາຄວາມສົມດຸນທີ່ດີທີ່ສຸດກັບຊັບພະຍາກອນທີ່ຈຳກັດ.

ນີ້ບໍ່ພຽງແຕ່ເປັນເທັກໂນໂລຢີເທົ່ານັ້ນ, ແຕ່ຍັງເປັນ ປັດຊະຍາ ອີກດ້ວຍ.

ດັ່ງນັ້ນ, ຈົ່ງຢຸດເຊື່ອວ່າ "ຈຳນວນແກນກຳນົດທຸກຢ່າງ." ສິ່ງທີ່ກຳນົດຂອບເຂດຄວາມພ້ອມຂອງການເຮັດວຽກພ້ອມກັນຢ່າງແທ້ຈິງແມ່ນການຄວບຄຸມໜ່ວຍຄວາມຈຳຂອງທ່ານ.

ປະຕິບັດ ແລະ ເພີ່ມປະສິດທິພາບ VPS ຂອງທ່ານໃຫ້ເຕັມທີ່, ໂດຍໃຊ້ປະໂຫຍດສູງສຸດຈາກທຸກໆຢອດຂອງຄວາມຊົງຈຳ.

ຫວັງວ່າ ບົດຄວາມ "8-core 24GB VPS ກຳລັງໝົດໜ່ວຍຄວາມຈຳບໍ? ການປັບແຕ່ງຢ່າງສຸດຂີດຂອງຊຸດຂະບວນການ PHP-FPM ພາຍໃຕ້ HestiaCP" ທີ່ແບ່ງປັນໃນ ບລັອກຂອງ Chen Weiliang ( https://www.chenweiliang.com/ ) ຈະເປັນປະໂຫຍດຕໍ່ທ່ານ.

ຮູ້ສຶກວ່າບໍ່ເສຍຄ່າທີ່ຈະແບ່ງປັນລິ້ງຂອງບົດຄວາມນີ້: https://www.chenweiliang.com/cwl-34509.html

ເພື່ອປົດລັອກເຄັດລັບທີ່ເຊື່ອງໄວ້ເພີ່ມເຕີມ🔑, ຍິນດີຕ້ອນຮັບເຂົ້າສູ່ຊ່ອງ Telegram ຂອງພວກເຮົາ!

Share and like ຖ້າທ່ານມັກມັນ! ການແບ່ງປັນ ແລະຖືກໃຈຂອງເຈົ້າເປັນແຮງຈູງໃຈຢ່າງຕໍ່ເນື່ອງຂອງພວກເຮົາ!

 

评论评论

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

ເລື່ອນໄປທາງເທີງ