จำนวนกระบวนการของผู้ปฏิบัติงาน nginx


23

ฉันกำลังตั้งค่า nginx เพื่อให้บริการติดตั้ง Drupal และดูเหมือนว่าฉันพบข้อมูลที่ขัดแย้งกันในการตั้งค่ากระบวนการของผู้ปฏิบัติงาน nginx ไซต์หนึ่งบอกว่าคุณต้องการสองไซต์หนึ่งไซต์บอกว่าคุณต้องการห้าไซต์หนึ่งไซต์หนึ่งบอกว่าต่อโปรเซสเซอร์ ...

ฉันควรเลือกจำนวนกระบวนการของผู้ปฏิบัติงาน nginx อย่างไร ถ้ามันสร้างความแตกต่างมันเป็นเกสต์วีไอพีบนคลัสเตอร์ VMWare และฉันได้ให้มันเป็นหนึ่งหน่วยประมวลผลเสมือน

คำตอบ:


16

Nginx ต่างจาก Apache และกระบวนการอื่น ๆ ต่อเว็บเซิร์ฟเวอร์การเชื่อมต่อ มันใช้กระบวนการหลักหนึ่งกระบวนการเพื่อเริ่มต้นและตรวจสอบกระบวนการของผู้ปฏิบัติงานจำนวนน้อยที่จัดการการเชื่อมต่อจริง ๆ คำแนะนำของฉันคือการเริ่มต้นด้วยจำนวนคนงานเริ่มต้นซึ่งก็คือ 1

worker_processes  1;

คุณจะต้องเพิ่มสิ่งนี้ก็ต่อเมื่อคุณพบว่าผู้ปฏิบัติงาน nginx ใช้เวลาในการบล็อก IO มากเกินไป สิ่งนี้จะไม่ดำเนินการจนกว่าจะให้บริการหลายร้อยคำขอต่อวินาที

คุณอาจพบว่าการตั้งค่าเหล่านี้มีประโยชน์

worker_rlimit_nofile 8192;

events {
    worker_connections  2048;
    use epoll;
}

1
คุณช่วยอธิบายได้ไหมว่า "worker_rlimit_nofile 8192" ใช้เพื่ออะไร
นักพัฒนา Pixel

wiki.nginx.org/NginxHttpMainModule#worker_rlimit_nofile สิ่งนี้สั่งให้ผู้ปฏิบัติงานเพื่อเพิ่ม ulimit
Dave Cheney

15

สำหรับระบบ SMP กระบวนการอย่างน้อยที่สุดคนงาน nCPU ควรเริ่มต้น: บน quad-core - สี่ ฯลฯ นั่นคือการพร็อกซี่

หากคุณจะให้บริการเว็บไซต์บางแห่งที่มีเนื้อหาสแตติกจำนวนมากมันจะเป็นการดีกว่าถ้าคุณจะเพิ่มพนักงานเพิ่ม - หนึ่งคนต่อดิสก์

หากระบบย่อยดิสก์ของคุณไม่ดีหรือโหลดสูงเกินไปกระบวนการของผู้ปฏิบัติงาน nginx อาจถูกล็อคในการดำเนินการ I / O และไม่สามารถตอบสนองคำขออื่น ๆ ได้ ในกรณีนี้คุณควรเพิ่มจำนวนกระบวนการของผู้ปฏิบัติงานเป็นค่าที่เหมาะสม (อาจจะเป็นสิบ) หรือเพิ่มหน่วยความจำสำหรับดิสก์แคช

ดูที่งานพิมพ์ "ps ax": คนงานที่อยู่ในสถานะ "D" ถูกล็อค เพิ่มขึ้นจนกว่าจะได้รับอย่างน้อยกระบวนการผู้ปฏิบัติงาน nCPU ไม่ถูกบล็อก

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.