ລາຍການຫົວເລື່ອງ
ຈຳນວນຜູ້ໃຊ້ພ້ອມກັນທີ່ເຊີບເວີສາມາດຈັດການໄດ້ບໍ່ໄດ້ຂຶ້ນກັບຈຳນວນແກນຫຼັກຂອງມັນ, ແຕ່ຂຶ້ນກັບວ່າແຕ່ລະຂະບວນການໃຊ້ໜ່ວຍຄວາມຈຳເທົ່າໃດ.
ຖະແຫຼງການນີ້ອາດຟັງຄືວ່າເປັນການກະຕຸ້ນ, ແຕ່ມັນເປັນປະສົບການທີ່ແທ້ຈິງ ແລະ ເຈັບປວດທີ່ສຸດໃນອຸດສາຫະກຳການດຳເນີນງານ ແລະ ການບຳລຸງຮັກສາ.
ເປັນຫຍັງຄວາມຊົງຈຳຈຶ່ງເປັນຈຸດອ່ອນຫຼັກ?
ຫຼາຍຄົນເຫັນ 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, ແມ່ນຂີດຈຳກັດທີ່ກຳນົດຄວາມພ້ອມສູງສຸດ.

ໄຟລ໌ການຕັ້ງຄ່າທີ່ແນະນຳ (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
ເຫດຜົນການຄິດໄລ່ພາລາມິເຕີ ແລະ ພື້ນຖານການຕັ້ງຄ່າ
| ຕົວກໍານົດການກໍານົດ | ກຳນົດຄ່າ | ການຄິດໄລ່ຫຼັກ ແລະ ພື້ນຖານການຕັ້ງຄ່າ |
|---|---|---|
| pm | dynamic | ໂໝດໄດນາມິກຊ່ວຍໃຫ້ການເພີ່ມ ຫຼື ລຶບຂະບວນການແບບຍືດຫຍຸ່ນໄດ້ໂດຍອີງໃສ່ຄວາມຕ້ອງການການເຮັດວຽກພ້ອມກັນ, ການດຸ່ນດ່ຽງຄວາມໄວໃນການຕອບສະໜອງ ແລະ ການນຳໃຊ້ໜ່ວຍຄວາມຈຳ. |
| pm.max_ເດັກນ້ອຍ | 80 | ໜ່ວຍຄວາມຈຳທັງໝົດ 24GB ຫັກເອົາ kernel ລະບົບ ແລະ MySQL/Redisຫຼັງຈາກ Nginx, ປະມານ 16GB ຍັງເຫຼືອສຳລັບ PHP.16,384 MB / 200 MB ≈ 81.9ການຕັ້ງຄ່າມັນເປັນ 80 ສາມາດລົບລ້າງ OOM (Out of Memory) ໄດ້ຢ່າງສົມບູນໃນລະຫວ່າງການເຮັດວຽກພ້ອມກັນສູງ. |
| pm.start_servers | 16 | ການອຸ່ນເຄື່ອງລ່ວງໜ້າໃນເວລາເລີ່ມຕົ້ນຖືກຕັ້ງໃຫ້ເປັນສອງເທົ່າຂອງຈຳນວນແກນ CPU (8 ແກນ × 2 = 16) ເພື່ອຮັບປະກັນວ່າການບໍລິການສາມາດຈັດການການເຮັດວຽກພ້ອມກັນພື້ນຖານໄດ້ທັນທີຫຼັງຈາກເລີ່ມຕົ້ນໃໝ່. |
| ເຊີບເວີ pm.min_spare_servers | 8 | ຕັ້ງຄ່າຈຳນວນແກນ CPU ເປັນ 8 ແກນ ເພື່ອຮັບປະກັນວ່າຄຳຮ້ອງຂໍໃໝ່ສາມາດຕອບສະໜອງໄດ້ທຸກເວລາໃນຊ່ວງເວລາທີ່ການຈະລາຈອນຕໍ່າ. |
| ເຊີບເວີ pm.max_spare_servers | 24 | ຕັ້ງຄ່າມັນເປັນ 3 ເທົ່າຂອງຈຳນວນແກນ CPU (8 ແກນ × 3 = 24) ເພື່ອຮັກສາຈຳນວນຂະບວນການທີ່ປານກາງຫຼັງຈາກການຈາລະຈອນຫຼຸດລົງ, ເພື່ອຈັດການກັບຄວາມຜັນຜວນທີ່ເບົາບາງ. |
| pm.max_requests | 500 | ຖ້າຂະບວນການດຽວບັນລຸພື້ນຖານຂະໜາດໃຫຍ່ 200MB, ການຫຼຸດຜ່ອນຈຳນວນການຮ້ອງຂໍໃຫ້ເຫຼືອ 500 ກ່ອນທີ່ຈະທຳລາຍ ແລະ ສ້າງຄືນໃໝ່ສາມາດເຮັດຄວາມສະອາດການຮົ່ວໄຫຼຂອງໜ່ວຍຄວາມຈຳໂດຍປະນິນໄດ້ໄວຂຶ້ນ. |
| pm.process_idle_timeout | 10s | ເກີນກວ່າ 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
