ผลประโยชน์ที่สมบูรณ์แบบของการใช้ NGINX


16

พิจารณาใช้ NGINX เพื่อให้บริการคุณภาพเยี่ยม - ฉันไม่ได้กังวลเกี่ยวกับรายละเอียดการใช้งาน แต่ต้องการทราบว่าใครมีสิ่งที่ดี (หรือไม่ดี) ที่จะพูดเกี่ยวกับมัน อีกสิ่งที่น่าสนใจอย่างยิ่งคือการใช้ NGINX เพื่อโหลดวีดิโอสมดุล


เรามี 2 ร้านค้าที่ทำงานบนเซิร์ฟเวอร์เฉพาะที่มี NginX สำหรับร้านค้าที่มีปริมาณการใช้งานสูงจะมีประโยชน์อย่างแน่นอนเพราะ NginX จัดการกับคำร้องขอได้ดีขึ้นและทำให้มีทรัพยากรมากขึ้นสำหรับ Magento สำหรับร้านค้าที่มีปริมาณการใช้งานต่ำฉันไม่แน่ใจว่ามีประโยชน์ใด ๆ
Sander Mangel

คำตอบ:


15

Nginx เป็นตัวเลือกที่ดีสำหรับการโฮสต์ Magento และมาพร้อมกับสิทธิประโยชน์ (แต่เล็ก) จำนวนมากที่สามารถช่วยปรับปรุงประสิทธิภาพของไซต์ได้

ข้อแตกต่างที่สำคัญระหว่าง Nginx และ Apache คือ Nginx ใช้การไม่บล็อก Evented IO และ Apache เพียงใช้มัลติเธรด / การประมวลผล ความแตกต่างคืออะไรและเพราะเหตุใด ในกรณีของ Apache บอกว่ามันมี 5 เธรดมันสามารถจัดการคำร้องขอ 5 รายการสำหรับบางสิ่งในเวลาใดก็ตาม หากหนึ่งในเธรดเหล่านั้นใช้เวลานานในการเสร็จสิ้นเหลือเพียง 4 เธรดเพื่อจัดการกับคำร้องขอขาเข้าใด ๆ เพิ่มเติม หากเธรดทั้ง 5 เธรดถูกล็อกไว้จะไม่สามารถจัดการคำร้องขอขาเข้าได้จนกว่าจะเสร็จสิ้น

ด้วย Evented IO เมื่อเธรดได้รับการร้องขอสำหรับบางสิ่งมันจะทำการปิดเหตุการณ์และย้ายไปยังคำขอถัดไปทันที เมื่อเหตุการณ์โทรกลับจากนั้นจะส่งผ่านการตอบสนองไปยังลูกค้าที่เกี่ยวข้อง

นี่เป็นลักษณะคร่าวๆว่า javascript แบบอะซิงโครนัสทำงานอย่างไร คุณดำเนินการตามคำขอ AJAX และดำเนินการต่อจนกว่าคุณจะได้รับการติดต่อกลับ

วิธีการที่ทันสมัยนี้เหมาะสมอย่างยิ่งกับการให้บริการไฟล์สแตติกขนาดเล็กจำนวนมากโดยไม่มีค่าใช้จ่ายในการวางเธรดหรือกระบวนการระบบของผู้ปฏิบัติงานจำนวนมาก

ประโยชน์อื่น ๆ ของ Nginx ก็คือมีหน่วยความจำเหลือน้อย Apache สนับสนุนหลายสิ่งหลายอย่างและในการทำเช่นนั้นมีหน่วยความจำสูงและรอยเท้าการคำนวณ คุณสามารถตัดมันกลับได้ แต่ Nginx ได้รับการออกแบบตั้งแต่เริ่มต้นจนสามารถพึ่งพาได้ในแง่ของหน่วยความจำ

ความแตกต่างนั้นไม่ใหญ่มาก แต่เมื่อคุณเพิ่มจำนวนคำขอเป็นพัน ๆ คำขอความแตกต่างเล็ก ๆ เหล่านั้นโดยรวมก็สร้างความแตกต่างได้มาก

ตอนนี้มันเป็นสิ่งสำคัญที่ต้องจำไว้ว่าคอขวดที่ใหญ่ที่สุดในแอพพลิเคชั่น Magento คือการประมวลผลโค้ด PHP ที่นี่มีความแตกต่างเล็กน้อยในการทำงานระหว่าง Apache และ Nginx สิ่งสำคัญคือการใช้ PHP-FPM และ MPM ของผู้ปฏิบัติงานกับ Apache (และหลีกเลี่ยงการ prefork / mod-php) เหตุผลหลักคือคุณเรียกใช้ล่าม PHP เฉพาะเมื่อคุณจำเป็นต้องรันโค้ด PHP และคุณสามารถใช้ซอฟต์แวร์แคช op-code เช่น APC ได้อย่างมีประสิทธิภาพ (และนี่คือการเพิ่มประสิทธิภาพที่ยิ่งใหญ่ที่สุดเพียงครั้งเดียว

จุดสุดท้ายที่จะทำ: โมดูล / แอปพลิเคชั่นบางอย่างคาดว่าจะใช้ Apache และเอกสารประกอบอาจมุ่งไปที่การใช้ ModRewrite หรือการใช้ไฟล์. htaccess แม้ว่าจะมีการสนับสนุนรูปแบบ ModRewrite ใน Nginx แต่ก็ไม่ได้รับการสนับสนุนสำหรับแต่ละวิธีการแก้ปัญหา. htaccess

โดยส่วนตัวแล้วฉันชอบ Nginx เพราะมันให้บริการเนื้อหาแบบสแตติกได้อย่างมีประสิทธิภาพมันง่ายในการติดตั้ง PHP-FPM และฉันชอบไวยากรณ์การกำหนดค่าของมัน มันไม่ใช่วิธีแก้ปัญหาเวทย์มนตร์สำหรับปัญหาด้านประสิทธิภาพ แต่เป็นทางเลือกที่ยืดหยุ่นในการพิจารณา


1
คำตอบที่ยอดเยี่ยมซึ่งได้รับการสนับสนุนโดย Magento, Inc. ค้นพบได้ที่: magentocommerce.com/whitepaper
benmarks

ใช่เห็นด้วยกับ Aaron 100% เราก็ใช้ Nginx สำหรับการปรับใช้ Magento ส่วนใหญ่ของเราเพราะความสามารถในการเซิร์ฟเวอร์เนื้อหาคงที่เร็วขึ้นและจัดการคำขอพร้อมกันจำนวนที่สูงขึ้นเมื่อเทียบกับ Apache ข้อเสียเพียงอย่างเดียวที่เราเจอกับ Nginx คือหนึ่งในโครงการของเรามันสุ่มโยนข้อผิดพลาดการหมดเวลาเกตเวย์ 504 (แม้ว่าเซิร์ฟเวอร์จะโหลดค่อนข้างต่ำ) เรายังไม่ได้ตอกย้ำเรื่องนี้ .. โซลูชั่นส่วนใหญ่ที่อธิบายไว้ในฟอรัมต่าง ๆ ไม่ได้ช่วยอะไรมากมาย
Vinci Rufus

1

ฉันจะบอกว่าประสิทธิภาพการใช้งานของ Nginx เมื่อใช้ Magento นั้นถูกละเลย ประโยชน์จากเหตุการณ์ IO ตามที่กล่าวถึงโดย Aaron ใช้กับ Apache (เมื่อใช้เหตุการณ์ MPM)

การพูดเกี่ยวกับ Magento โดยทั่วไปการประมวลผลส่วนใหญ่ (99%) เกิดขึ้นใน PHP และฐานข้อมูลดังนั้นการเพิ่มประสิทธิภาพ 1% แรกจะให้ประโยชน์ค่อนข้างน้อย

อย่างไรก็ตามมีเหตุผลอื่นในการเลือก Nginx สำหรับ Magento เช่นหน่วยความจำขนาดเล็กลง, การ จำกัด อัตราที่ดีขึ้นและการสนับสนุน SPDY เพื่อตั้งชื่อไม่กี่

มีข้อเสียอย่างใหญ่หลวงกับ Nginx เมื่อทำการแปลงไซต์ Magento ที่มีอยู่ที่ทำงานบน Apache เนื่องจากคำสั่ง. htaccess จำนวนมากไม่ได้จับคู่กับคำสั่ง Nginx โดยตรง ตัวอย่างเช่น Nginx ไม่สนับสนุนชื่อโฮสต์ใน ACL

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