ລາຍການຫົວເລື່ອງ
ເຈົ້າໄດ້ຄົ້ນພົບຢ່າງກະທັນຫັນຢູ່ບ່ອນເຮັດວຽກວ່າການໃຊ້ CPU ຂອງ Nginx ເພີ່ມຂຶ້ນບໍ່? ເພື່ອເຮັດໃຫ້ບັນຫາຮ້າຍແຮງກວ່າເກົ່າ, ຂະບວນການພະນັກງານຫຼາຍໆຄົນຂອງ Nginx ກໍາລັງບໍລິໂພກຊັບພະຍາກອນເຊັ່ນ: Crazy ທຸກໆຄັ້ງທີ່ຂ້ອຍເບິ່ງຂະບວນການ.
ເມື່ອເຫັນເຫດການນີ້, ຫົວຂອງເຈົ້າຮ້ອນ, ແລະເຈົ້າບໍ່ສາມາດຊ່ວຍຮ້ອງວ່າ: "ໂອ້ພະເຈົ້າ, ເຄື່ອງແມ່ຂ່າຍຈະລະເບີດບໍ?" ແຕ່ Nginx ພວກເຮົາຕ້ອງການໃຫ້ທ່ານເຮັດການເພີ່ມປະສິດທິພາບທີ່ສົມບູນແບບ!
ການວິເຄາະສາເຫດຂອງການໂຫຼດ Nginx ຫຼາຍເກີນໄປ

ກ່ອນອື່ນ ໝົດ, ພວກເຮົາຕ້ອງຄິດອອກ,ເປັນຫຍັງ Nginx ຈຶ່ງກາຍເປັນ "ໝົດແຮງ"?ມີຫຼາຍເຫດຜົນຂອງບັນຫາ, ບໍ່ຕ້ອງຢ້ານ, ໃຫ້ຊອກຫາຮ່ວມກັນຂ້າງລຸ່ມນີ້.
1. ການຕັ້ງຄ່າທີ່ບໍ່ສົມເຫດສົມຜົນ
ໃນໄຟລ໌ການຕັ້ງຄ່າ Nginx, ຈຸດສໍາຄັນທີ່ສຸດແມ່ນ worker_processes. ພາລາມິເຕີນີ້ກໍານົດຈໍານວນຂອງຂະບວນການເລີ່ມຕົ້ນໂດຍ Nginx.
- ຖ້າທ່ານ configure ຂະບວນການພະນັກງານຫນ້ອຍເກີນໄປ, ການໂຫຼດ CPU ຈະເພີ່ມຂຶ້ນ;
- ທ່ານຕ້ອງຊອກຫາຈຸດດຸ່ນດ່ຽງ, ຕົວຢ່າງ,ຕັ້ງ worker_processes ເປັນ 1 ຫາ 2 ເທົ່າຂອງຈຳນວນ CPU cores.
- ຖ້າທ່ານມີ 4 cores ຫຼັງຈາກນັ້ນພະຍາຍາມ
worker_processes 4ຫຼືຕັ້ງມັນໂດຍກົງກັບauto.
2. ການເພີ່ມຂຶ້ນຂອງການຢ້ຽມຢາມ
ບາງຄັ້ງ, ການໂຫຼດຂອງ Nginx ເພີ່ມຂຶ້ນຢ່າງກະທັນຫັນບໍ່ແມ່ນຍ້ອນວ່າທ່ານເຮັດຜິດພາດ, ແຕ່ເນື່ອງຈາກວ່າຈໍານວນການເຂົ້າຊົມສູງເກີນໄປ.ການຮ້ອງຂໍການເຂົ້າເຖິງທີ່ສອດຄ່ອງກັນສູງຈະເຮັດໃຫ້ຂະບວນການພະນັກງານ Nginx ຖືກຄອບງໍາ., ທຸກຂະບວນການແມ່ນ overloaded, ແລະ CPU ແລະຫນ່ວຍຄວາມຈໍາຍັງເຕັມ. ໃນເວລານີ້, ທ່ານອາດຈະຕ້ອງປັບປຸງຊັບພະຍາກອນຂອງເຄື່ອງແມ່ຂ່າຍ, ເຊັ່ນການເພີ່ມຈໍານວນຂອງ CPU cores ຫຼືເພີ່ມຫນ່ວຍຄວາມຈໍາ. ແນ່ນອນ, ນີ້ຍັງເປັນການເຕືອນ: ຢ່າລືມພິຈາລະນາ CDN offloading ຫຼືການດຸ່ນດ່ຽງການໂຫຼດ.
3. ພົບກັບການໂຈມຕີທີ່ເປັນອັນຕະລາຍ
ການເປັນ "ທີ່ນິຍົມຫຼາຍ" ໃນອິນເຕີເນັດບໍ່ແມ່ນເລື່ອງທີ່ດີສະເໝີໄປ ການໂຈມຕີທີ່ເປັນອັນຕະລາຍອາດແນເປົ້າໝາຍໃສ່ເຈົ້າໄດ້ທຸກເວລາ. ຖ້າທ່ານພົບວ່າການໃຊ້ CPU ສູງຜິດປົກກະຕິແລະແຫຼ່ງຂອງ IP ທີ່ຮ້ອງຂໍແມ່ນຫນ້າສົງໄສ, ມັນອາດຈະເປັນໄປໄດ້ຫຼາຍທີ່ເວັບໄຊທ໌ຂອງທ່ານຖືກໂຈມຕີຈາກ DDoS. ໃນເວລານີ້,ທ່ານຈໍາເປັນຕ້ອງໄດ້ຕິດຕັ້ງ firewall ຫຼືຈໍາກັດຄວາມຖີ່ການເຂົ້າເຖິງທັນທີເຊັ່ນ: ການໃຊ້ໂມດູນຈໍາກັດໃນປະຈຸບັນທີ່ມາພ້ອມກັບ Nginx, ຫຼືການຕັ້ງຄ່າບັນຊີດໍາ IP.
ວິທີການແກ້ໄຂບັນຫາການນໍາໃຊ້ຫນ່ວຍຄວາມຈໍາສູງຂອງຂະບວນການ Nginx?
ດັ່ງນັ້ນຄໍາຖາມແມ່ນ, ເປັນຫຍັງຂະບວນການພະນັກງານ Nginx ຈຶ່ງໃຊ້ຊັບພະຍາກອນຫຼາຍ? ພວກເຮົາຕ້ອງເລີ່ມຕົ້ນດ້ວຍການຕັ້ງຄ່າແລະເພີ່ມປະສິດທິພາບມັນເທື່ອລະກ້າວ.
ວິທີການຕັ້ງຄ່າ
ເປີດໄຟລ໌ການຕັ້ງຄ່າ Nginx: ປົກກະຕິແລ້ວ, ໄຟລ໌ການຕັ້ງຄ່າຕົ້ນຕໍຂອງ Nginx ແມ່ນຢູ່ທີ່
/etc/nginx/nginx.conf.ຕັ້ງຄ່າ
worker_processes: ພົບໃນໄຟລ໌ການຕັ້ງຄ່າeventsຕັນ, ການຕັ້ງຄ່າworker_processesຄ່າ. ຖ້າບໍ່ແມ່ນeventsຕັນ, ທ່ານຈໍາເປັນຕ້ອງສ້າງຫນຶ່ງ.nginx events { worker_connections 1024; use epoll; # 或者适用于操作系统的其他事件模型 }
1. ຕັ້ງຄ່າ worker_connections ຢ່າງຖືກຕ້ອງ
nginx worker_connections ພາລາມິເຕີກໍານົດຈໍານວນການເຊື່ອມຕໍ່ສູງສຸດທີ່ແຕ່ລະຂະບວນການຂອງພະນັກງານສາມາດຈັດການໄດ້. ຖ້າມັນນ້ອຍເກີນໄປ, ມັນຈະສົ່ງຜົນກະທົບຕໍ່ການປະຕິບັດການສົມທົບ;
ວິທີການຄິດໄລ່ມູນຄ່າທີ່ເຫມາະສົມ?
ສົມມຸດວ່າທ່ານມີ CPU 4-core ແລະ RAM 16GB, ຈຸດເລີ່ມຕົ້ນທີ່ປອດໄພແມ່ນ worker_connections 4096.
ແຕ່ຖ້າເວັບໄຊທ໌ຂອງທ່ານມີການຈະລາຈອນຫຼາຍ, ພິຈາລະນາເພີ່ມມູນຄ່ານີ້ເຖິງ 8192 ເພື່ອຮັບປະກັນວ່າແຕ່ລະຂະບວນການສາມາດຈັດການກັບການຮ້ອງຂໍທີ່ພຽງພໍ.
events {
worker_connections 8192;
}
ດ້ວຍວິທີນີ້, ພະລັງງານການປຸງແຕ່ງຂອງ Nginx ຈະຖືກປັບປຸງຢ່າງຫຼວງຫຼາຍ.
2. ປັບການເກັບຮັກສາ_timeout
ຕົວກໍານົດການທີ່ສໍາຄັນອີກອັນຫນຶ່ງສໍາລັບ Nginx ເພື່ອຈັດການກັບຄໍາຮ້ອງຂໍແມ່ນ keepalive_timeout.
ການຕັ້ງຄ່ານີ້ກໍານົດວ່າການເຊື່ອມຕໍ່ຂອງລູກຄ້າກັບເຄື່ອງແມ່ຂ່າຍສາມາດຮັກສາໄດ້ດົນປານໃດ.
ຖ້າຕັ້ງດົນເກີນໄປ, ມັນຈະຄອບຄອງຊັບພະຍາກອນການເຊື່ອມຕໍ່ຫຼາຍເກີນໄປ..
ທ່ານສາມາດພະຍາຍາມ keepalive_timeout ກໍານົດເປັນ 15 ວິນາທີເພື່ອຮັກສາການເຊື່ອມຕໍ່ແລະປ່ອຍຊັບພະຍາກອນ.
keepalive_timeout 15;
3. ເພີ່ມປະສິດທິພາບຂອບເຂດຈໍາກັດຂອງຕົວອະທິບາຍໄຟລ໌
ໂດຍຄ່າເລີ່ມຕົ້ນ,Linux ລະບົບມີຂໍ້ຈໍາກັດກ່ຽວກັບຈໍານວນຕົວອະທິບາຍໄຟລ໌ທີ່ສາມາດເປີດໄດ້ໂດຍແຕ່ລະຂະບວນການ.
ຖ້າ Nginx ຕ້ອງການປະມວນຜົນໄຟລ໌ຈໍານວນຫລາຍ (ເຊັ່ນ: ຊັບພະຍາກອນຄົງທີ່), ທ່ານອາດຈະເຫັນຂໍ້ຜິດພາດຈາກ Nginx, ກະຕຸ້ນ "too many open files".
ທ່ານສາມາດຜ່ານ worker_rlimit_nofile ເພີ່ມຂີດຈຳກັດຕົວອະທິບາຍໄຟລ໌ສໍາລັບຕົວຢ່າງ, ກໍານົດເປັນ 65535.
worker_rlimit_nofile 65535;
4. ເປີດໃຊ້ caching ແລະ gzip
Caching ແລະການບີບອັດແມ່ນສອງກຸນແຈໃນການເພີ່ມປະສິດທິພາບເວັບໄຊທ໌.
ໂດຍການເປີດໃຊ້ຟັງຊັນແຄຊ໌ຂອງ Nginx, ຊັບພະຍາກອນຄົງທີ່ (ເຊັ່ນ: ຮູບພາບ ແລະໄຟລ໌ JS) ສາມາດຖືກເກັບໄວ້ໃນຫນ່ວຍຄວາມຈໍາ., ດັ່ງນັ້ນການຫຼຸດຜ່ອນການໂຫຼດຢູ່ໃນເຄື່ອງແມ່ຂ່າຍຢ່າງຫຼວງຫຼາຍ.
ນອກຈາກນັ້ນ, ການເປີດຟັງຊັນການບີບອັດ gzip ສາມາດຫຼຸດຜ່ອນການຖ່າຍທອດຂໍ້ມູນແລະປັບປຸງຄວາມໄວຂອງເວັບໄຊທ໌.
gzip on;
gzip_types text/plain application/javascript;
5. ວິເຄາະການໃຊ້ຊັບພະຍາກອນ Nginx
ສຸດທ້າຍ, ຖ້າທ່ານໄດ້ສໍາເລັດການເພີ່ມປະສິດທິພາບຂ້າງເທິງທັງຫມົດແຕ່ Nginx ຍັງໃຊ້ CPU ຫຼາຍ, ທ່ານອາດຈະຕ້ອງໃຊ້ເຄື່ອງມືບາງຢ່າງສໍາລັບການວິເຄາະໃນຄວາມເລິກ.
ການນໍາໃຊ້ top ຫລື htop ເບິ່ງການບໍລິໂພກຊັບພະຍາກອນໃນເວລາຈິງຂອງຂະບວນການ,ຜ່ານ strace ການຕິດຕາມລະບົບການໂທ, ຫຼືການນໍາໃຊ້ nmon ສ້າງບົດລາຍງານການປະຕິບັດ. ພຽງແຕ່ໂດຍການວິເຄາະທີ່ສົມບູນແບບຂອງການດໍາເນີນງານຕົວຈິງຂອງ Nginx ພວກເຮົາສາມາດປະຕິບັດການປັບແຕ່ງທີ່ຊັດເຈນກວ່າ.
ເພື່ອສະຫຼຸບ
ຢ່າຕົກໃຈເມື່ອການໃຊ້ CPU ຂອງ Nginx ເພີ່ມຂຶ້ນ. ມັນພຽງແຕ່ອາດຈະເກີດມາຈາກການຕັ້ງຄ່າທີ່ບໍ່ຖືກຕ້ອງຫຼືການຈະລາຈອນຫຼາຍເກີນໄປ.
ໂດຍຜ່ານການປັບຕົວທີ່ສົມເຫດສົມຜົນ worker_processes 和 worker_connectionsໂດຍການເປີດໃຊ້ caching, ການເພີ່ມປະສິດທິພາບການຫມົດເວລາແລະຕົວອະທິບາຍໄຟລ໌, ທ່ານສາມາດຫຼຸດຜ່ອນຄວາມກົດດັນການໂຫຼດໃນ Nginx ໄດ້ຢ່າງຫຼວງຫຼາຍ.
Nginx ເປັນເຄື່ອງແມ່ຂ່າຍເວັບໄຊຕ໌ທີ່ມີປະສິດທິພາບທີ່, ເມື່ອຖືກປັບແຕ່ງຢ່າງຖືກຕ້ອງ, ສາມາດສະຫນອງການປະຕິບັດທີ່ດີເລີດສໍາລັບເວັບໄຊທ໌ຂອງທ່ານ.
ຈືຂໍ້ມູນການ, ຄໍາຖາມໃດໆສາມາດໄດ້ຮັບການຕອບໂດຍວິທະຍາສາດວິທີການແກ້ໄຂມັນ, ການເພີ່ມປະສິດທິພາບຂອງເຄື່ອງແມ່ຂ່າຍແມ່ນບໍ່ມີຂໍ້ຍົກເວັ້ນ.
ຕິດຕາມ ແລະ ປັບຕົວໃຫ້ທັນເວລາ, ເປັນກຸນແຈໃນການຮັກສາ Nginx ເຮັດວຽກຢ່າງມີປະສິດທິພາບ. ຖ້າທ່ານສາມາດຊໍານິຊໍານານເຕັກນິກເຫຼົ່ານີ້, ເວັບໄຊທ໌ຂອງທ່ານຈະປອດໄພເຖິງແມ່ນວ່າຈະປະເຊີນກັບການຈະລາຈອນສູງຫຼືການໂຈມຕີທີ່ເປັນອັນຕະລາຍ.
ຂ້າພະເຈົ້າຫວັງວ່າບົດຄວາມນີ້ໄດ້ດົນໃຈທ່ານ, ຮີບຮ້ອນແລະເພີ່ມປະສິດທິພາບ Nginx ຂອງທ່ານ!
ຫວັງ Chen Weiliang Blog ( https://www.chenweiliang.com/ ) ແບ່ງປັນ "ຂ້ອຍຄວນເຮັດແນວໃດຖ້າ CPU ຂອງເຄື່ອງແມ່ຂ່າຍ Nginx ໂຫຼດແລະການນໍາໃຊ້ຫນ່ວຍຄວາມຈໍາຂະບວນການສູງ?" 》, ຊ່ວຍທ່ານໄດ້.
ຍິນດີຕ້ອນຮັບແບ່ງປັນການເຊື່ອມຕໍ່ຂອງບົດຄວາມນີ້:https://www.chenweiliang.com/cwl-32093.html
ເພື່ອປົດລັອກເຄັດລັບທີ່ເຊື່ອງໄວ້ເພີ່ມເຕີມ🔑, ຍິນດີຕ້ອນຮັບເຂົ້າສູ່ຊ່ອງ Telegram ຂອງພວກເຮົາ!
Share and like ຖ້າທ່ານມັກມັນ! ການແບ່ງປັນ ແລະຖືກໃຈຂອງເຈົ້າເປັນແຮງຈູງໃຈຢ່າງຕໍ່ເນື່ອງຂອງພວກເຮົາ!