ຂ້ອຍຄວນເຮັດແນວໃດຖ້າເຄື່ອງແມ່ຂ່າຍ Nginx ມີການໂຫຼດ CPU ສູງແລະການນໍາໃຊ້ຫນ່ວຍຄວາມຈໍາຂະບວນການ?

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

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

ການວິເຄາະສາເຫດຂອງການໂຫຼດ Nginx ຫຼາຍເກີນໄປ

ຂ້ອຍຄວນເຮັດແນວໃດຖ້າເຄື່ອງແມ່ຂ່າຍ Nginx ມີການໂຫຼດ CPU ສູງແລະການນໍາໃຊ້ຫນ່ວຍຄວາມຈໍາຂະບວນການ?

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

ວິທີການຕັ້ງຄ່າ

  1. ເປີດໄຟລ໌ການຕັ້ງຄ່າ Nginx: ປົກກະຕິແລ້ວ, ໄຟລ໌ການຕັ້ງຄ່າຕົ້ນຕໍຂອງ Nginx ແມ່ນຢູ່ທີ່ /etc/nginx/nginx.conf.

  2. ຕັ້ງ​ຄ່າ 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_processesworker_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 ຖ້າທ່ານມັກມັນ! ການແບ່ງປັນ ແລະຖືກໃຈຂອງເຈົ້າເປັນແຮງຈູງໃຈຢ່າງຕໍ່ເນື່ອງຂອງພວກເຮົາ!

 

评论评论

ທີ່ຢູ່ອີເມວຂອງເຈົ້າຈະບໍ່ຖືກເຜີຍແຜ່. ທົ່ງນາທີ່ກໍານົດໄວ້ແມ່ນຖືກນໍາໃຊ້ * ປ້າຍ ກຳ ກັບ

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