Lợi ích của việc sử dụng NGINX


16

Cân nhắc sử dụng NGINX để phục vụ magento- Tôi không quan tâm đến chi tiết triển khai, nhưng muốn biết liệu có ai có những điều tốt (hoặc xấu) để nói về nó không. Cũng có mối quan tâm đặc biệt là sử dụng NGINX để tải magento cân bằng.


chúng tôi có 2 cửa hàng đang chạy trên một máy chủ chuyên dụng với NginX. Đối với các cửa hàng lưu lượng truy cập cao chắc chắn có lợi ích vì NginX chỉ xử lý các yêu cầu tốt hơn và để lại nhiều tài nguyên hơn cho Magento. Đối với các cửa hàng lưu lượng truy cập thấp, tôi không chắc chắn có bất kỳ lợi ích nào
Sander Mangel

Câu trả lời:


15

Nginx chắc chắn là một lựa chọn tốt để lưu trữ Magento và nó đi kèm với một số lợi ích tốt đẹp (nhưng nhỏ) có thể giúp cải thiện hiệu suất trang web.

Sự khác biệt chính giữa Nginx và Apache là Nginx sử dụng IO không bị chặn và Apache chỉ sử dụng đa luồng / xử lý. Sự khác biệt là gì và tại sao nó quan trọng? Trong trường hợp của Apache, giả sử nó có 5 luồng, nó có thể xử lý 5 yêu cầu cho một cái gì đó tại bất kỳ thời điểm nào. Nếu một trong những luồng đó mất nhiều thời gian để hoàn thành, chỉ còn 4 luồng để xử lý bất kỳ yêu cầu đến nào khác. Nếu tất cả 5 luồng bị khóa, thì không có yêu cầu đến nào có thể được xử lý cho đến khi một kết thúc.

Với IO được tổ chức khi một luồng nhận được yêu cầu cho một thứ gì đó, nó sẽ tắt một sự kiện và chuyển thẳng sang yêu cầu tiếp theo. Khi sự kiện gọi lại, nó sẽ chuyển phản hồi đến máy khách liên quan.

Điều này gần giống với cách hoạt động của javascript không đồng bộ. Bạn thực hiện yêu cầu AJAX và tiếp tục cho đến khi bạn nhận được một cuộc gọi lại.

Cách tiếp cận hiện đại này rất phù hợp để phục vụ nhiều tệp tĩnh nhỏ mà không cần quá trình sinh ra nhiều luồng hoặc quy trình hệ thống worker.

Lợi ích khác của Nginx là dung lượng bộ nhớ thấp. Apache hỗ trợ RẤT NHIỀU công cụ và khi làm như vậy có bộ nhớ cao và dấu chân tính toán. Bạn có thể cắt bỏ nó trở lại nhưng Nginx được kiến ​​trúc từ đầu để có thể dựa vào bộ nhớ.

Sự khác biệt không lớn, nhưng khi bạn mở rộng lên đến hàng ngàn yêu cầu, những khác biệt nhỏ đó, tổng hợp lại, tạo ra sự khác biệt lớn.

Bây giờ điều quan trọng cần nhớ là nút cổ chai hiệu năng lớn nhất trong ứng dụng Magento là việc thực thi mã PHP. Ở đây có một sự khác biệt cơ bản không đáng kể về hiệu năng giữa Apache và Nginx. Điều quan trọng là sử dụng PHP-FPM và MPM worker với Apache (và chắc chắn tránh prefork / mod-php). Lý do chính là bạn chỉ gọi trình thông dịch PHP khi bạn cần thực thi mã PHP và bạn có thể sử dụng phần mềm lưu trữ mã op-op như APC một cách hiệu quả (và đây là mức tăng hiệu suất lớn nhất bạn sẽ nhận được).

Điểm cuối cùng cần thực hiện: một số mô-đun / ứng dụng mong muốn Apache được sử dụng và tài liệu có thể được hướng đến việc sử dụng ModRewrite hoặc sử dụng các tệp .htaccess. Mặc dù có hỗ trợ kiểu ModRewrite trong Nginx, nhưng không có hỗ trợ cho mỗi giải pháp kiểu .htaccess.

Cá nhân, tôi thích Nginx vì nó phục vụ nội dung tĩnh một cách hiệu quả, rất dễ thiết lập PHP-FPM và tôi khá thích cú pháp cấu hình của nó. Đây không phải là một giải pháp viên đạn thần kỳ cho các vấn đề về hiệu suất, nhưng đó là lựa chọn linh hoạt mạnh mẽ để xem xét.


1
Một câu trả lời tuyệt vời được hỗ trợ bởi những phát hiện của Magento, Inc .: magentoc Commerce.com/whitepaper
benmark

Yup đồng ý với Aaron 100%, Chúng tôi cũng sử dụng Nginx cho hầu hết các triển khai Magento của mình vì khả năng lưu trữ nội dung tĩnh nhanh hơn và xử lý số lượng yêu cầu đồng thời cao hơn so với Apache. Nhược điểm duy nhất mà chúng tôi gặp phải với Nginx là ở một trong các dự án của chúng tôi, nó ngẫu nhiên gây ra lỗi hết thời gian chờ cổng 504 (ngay cả khi tải máy chủ khá thấp). Chúng tôi chưa đóng đinh cái này .. hầu hết các giải pháp được mô tả trong các diễn đàn khác nhau đều không giúp được gì nhiều.
Vinci Rufus

1

Tôi muốn nói rằng lợi ích hiệu suất của Nginx khi sử dụng Magento là không đáng kể. Lợi thế IO dựa trên sự kiện như Aaron đã đề cập cũng áp dụng cho Apache (khi sử dụng MPM sự kiện).

Nói về Magento nói chung, hầu hết quá trình xử lý (99%) diễn ra trong PHP và cơ sở dữ liệu, vì vậy tối ưu hóa 1% đầu tiên sẽ mang lại cho bạn tương đối ít lợi ích.

Tuy nhiên, có những lý do khác để chọn Nginx cho Magento, chẳng hạn như dung lượng bộ nhớ nhỏ hơn, giới hạn tốc độ tốt hơn và hỗ trợ SPDY, để đặt tên cho một số.

Có một bất lợi lớn đối với Nginx khi chuyển đổi các trang Magento hiện có đang chạy trên Apache, vì nhiều câu lệnh .htaccess không ánh xạ trực tiếp lên các câu lệnh Nginx. Ví dụ: Nginx không hỗ trợ tên máy chủ trong ACL.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.