Tại sao Nginx lại nhanh đến vậy?


31

Làm thế nào để một trang web như rambler phục vụ nội dung động nhanh như vậy? Thậm chí còn nhanh hơn cả Yahoo (nơi có máy chủ ở nước tôi - Đông Nam Á; rambler thì không).

Đây có phải là khả năng của Nginx không? Tôi nên tìm hiểu về những khả năng như vậy ở đâu?

Khá nhiều người mới ở đây, tôi tin rằng serverfault.com nếu được phục vụ từ Nginx sẽ nhanh hơn IIS 7 (giả sử thời gian truy cập db giống nhau trong cả hai trường hợp). Đây có phải là một giả định công bằng?

Chỉnh sửa:

Đăng bài từ Karl bằng Nginx trước IIS7


Lưu ý rằng serverfault.com đã sử dụng Nginx (theo Wappalyzer ). : P
WillS

Câu trả lời:


26

Bạn có thể xem bản trình bày này để biết tổng quan về nginx bên trong. Sự khác biệt chính là xử lý các yêu cầu không đồng bộ thay vì sử dụng các luồng như Apache. Bạn có thể có một cái nhìn vào tài liệu này là tốt.


2
Câu trả lời tốt cho kiến ​​trúc của nginx và vấn đề C10K. Tuy nhiên, tôi hiểu câu hỏi của OP là về tốc độ tải trang nhận thức, điều này ít liên quan đến nginx.
Jesper M

"Không đồng bộ" thực sự có nghĩa là gì? Tôi đã luôn nghĩ rằng nó có nghĩa là được thực hiện trong một luồng riêng biệt.
Ivan

Nginx có nghĩa là không đồng bộ luôn hoạt động như một proxy, ngay cả với Php: Nginx nhận được yêu cầu HTTP, gửi đến máy chủ Php NHƯNG không khóa / chờ để gửi phản hồi HTTP. Đó là lý do tại sao bạn thấy sự khác biệt (tốc độ, CPU / RAM) cho trang web lưu lượng truy cập cao. Nhưng không có hiệu suất tăng cho một vài yêu cầu (liên quan đến 95% internet ....), nhưng Nginx rất tuyệt ;-)
Thomas Decaux

21

Làm thế nào để một trang web như rambler phục vụ nội dung động nhanh như vậy? ... Đây có phải là khả năng của Nginx không? Tôi nên tìm hiểu về những khả năng như vậy ở đâu?

Điều này chẳng liên quan gì đến máy chủ web được sử dụng - cả nginx, IIS và Apache đều 'đủ nhanh' để thực hiện công việc của họ trong vòng một phần nghìn giây. nginx nhanh hơn nhiều so với Apache, nhưng điều này chỉ có nghĩa là chủ sở hữu trang web sẽ cần ít máy chủ hơn cho phần phục vụ web - nginx không truyền dữ liệu nhanh hơn cho bạn.

Phần ít quan trọng hơn là tốc độ phía máy chủ , tức là thời gian cần thiết để tạo HTML. Phần quan trọng hơn là hiệu suất của 'frontend' , theo ý tôi là HTML, CSS, Javascript và Hình ảnh, số lượng này, kích thước của chúng và phân phối thích hợp (nén HTTP, bộ nhớ đệm) của các mục này.

Tất nhiên tốc độ phía máy chủ vẫn rất quan trọng, tôi không nói rằng nên bỏ qua hoặc điều đó không quan trọng. Nhưng thông thường, đây là phần nhỏ nhất nhận thấy về tốc độ của người dùng cuối - công việc của máy chủ thường được thực hiện trong vòng chưa đến 500 mili giây, nhưng trang không sẵn sàng trước khi 3.000 - 5.000 mili giây trôi qua. Phần lớn thời gian này là để tải xuống các tài nguyên lối vào (CSS, Javascript, Hình ảnh).

Steve Souder đã làm công việc ban đầu khi còn ở Yahoo, hiện anh đang làm việc tại Google. Cuốn sách đầu tiên của ông "Các trang web hiệu suất cao" là điểm khởi đầu tốt nhất để tìm hiểu thêm về cách tạo các trang web nhanh. Các tài liệu tương tự trong cuốn sách của ông có thể được tìm thấy trong cuộc nói chuyện video nàycác quy tắc thiết kế này . Tuy nhiên, tôi thấy rằng cuốn sách này rất nhanh để đọc và dễ hiểu hơn nhiều.

Bạn có thể chạy các trang web thông qua trình kiểm tra của WebPageTest.org - điều đó sẽ mang lại cho bạn cảm giác tốt cho phần lối vào của các trang web này và tại sao chúng nhanh hơn hoặc chậm hơn.

Tôi tin rằng serverfault.com nếu được phục vụ từ Nginx sẽ nhanh hơn IIS 7 (giả sử thời gian truy cập db là giống nhau trong cả hai trường hợp). Đây có phải là một giả định công bằng?

Không, đó là một sự hiểu lầm. :-)


18

Nginx thường được sử dụng để cân bằng tải cho các ứng dụng / máy chủ khác và phục vụ nội dung tĩnh hơn là nó được sử dụng làm máy chủ hoàn chỉnh.

Chẳng hạn, bạn có thể viết một ứng dụng bằng một trong nhiều khung python và có nginx là giao diện người dùng cho nhiều trường hợp đó (có thể trải rộng trên một số máy). Trong trường hợp này, máy chủ nginx có hai mục đích: nó xử lý các yêu cầu cho nội dung tĩnh như hình ảnh và biểu định kiểu trực tiếp (và do thiết kế của nó, nó thực hiện điều này rất nhanh) và nó chuyển các yêu cầu động đến ứng dụng truyền tải tải giữa tất cả các trường hợp mà nó biết . Đây là một cấu hình rất phổ biến trong cộng đồng Ruby on Rails.

Có hai lý do rõ ràng khác khiến Rambler có thể xuất hiện nhanh hơn với bạn so với dịch vụ Yahoo địa phương. Đầu tiên, Yahoo PoP cục bộ có thể không có đủ tài nguyên có sẵn để phục vụ số lượng yêu cầu nhanh hơn nên có thể chỉ cần thêm phần cứng (giả sử phần mềm có quy mô tốt theo cách này) sẽ tăng tốc (nhưng có lẽ, sự khác biệt không phải là xứng đáng với chi phí duy trì bộ phụ kiện hoặc Yahoo sẽ làm điều này). Sự khác biệt lớn khác có thể nằm ở back-end thay vì máy chủ web - hai dịch vụ chắc chắn sẽ có sự sắp xếp cơ sở dữ liệu rất khác nhau và ngay cả khi chúng không có khả năng chạy chính xác cùng một loại truy vấn (và số lượng phần cứng dành riêng cho kiến ​​trúc cơ sở dữ liệu cũng sẽ có ảnh hưởng đáng kể).

Phân tích lý do tại sao một dịch vụ nhanh hơn dịch vụ khác (thường hoặc trong các trường hợp cụ thể) thường sẽ không dẫn đến một câu trả lời đơn giản - có nhiều cách để thiết kế một ứng dụng nhằm mở rộng ra cho hàng ngàn người dùng, mỗi người dùng lợi ích, vấn đề & thỏa hiệp riêng và ngay cả khi bạn tính đến tất cả những khác biệt đó, mỗi trang web sẽ có động lực cơ sở người dùng khác nhau, ngoài ra còn có các vấn đề về mạng ngoài tầm kiểm soát của các nhà thiết kế.


3

nginx có thể nhưng kiến ​​trúc có thể mở rộng hơn với cân bằng tải hợp lý trước các máy chủ nội dung tĩnh / trình tạo nội dung động. nếu bạn thực sự muốn có được trải nghiệm người dùng cuối tuyệt vời, có lẽ bạn nên chuyển nội dung đến gần hơn 'nhãn cầu' - sử dụng một số CDN.

nếu bạn quan tâm đến chủ đề này - hãy xem cái nàycái kia và .. tốt - google; -]


2

Các trang web tốt nhất sử dụng các trình tăng tốc ứng dụng như ZXTM của Zeus - chúng có thể lưu trữ các phản hồi động trong nhiều trường hợp rõ ràng là rất có lợi.



0

Tôi gặp khó khăn khi thấy serverfault nhanh hơn nhiều (SO có thể có vấn đề về tải do lưu lượng có lẽ?) Vì đây đã là một trang tải tức thời ở EU trên tuyến của tôi. Đó là cách nhanh hơn và phản ứng nhanh hơn so với hầu hết các trang web tin tức địa phương và như vậy.

Hầu hết các vấn đề rõ ràng về thời gian tải và độ trễ xuất phát từ giữa máy chủ và người dùng cuối imo chứ không phải hiệu suất máy chủ thực tế (trừ khi ai đó có kích thước hoặc thiết kế có gì đó không đúng). Các trang web khác nhau có thể được định tuyến theo nhiều cách khác nhau và có khả năng lớn là một trang web quốc gia đối với tôi có độ trễ lớn hơn một thứ gì đó trên khắp hành tinh - tất cả phụ thuộc vào rất nhiều biến số mà bạn không thể nói rằng nó có thể giải quyết được chỉ bằng một dịch vụ nâng cấp / chuyển đổi trừ khi bạn biết đó là vấn đề của việc sử dụng cụ thể (r) là ...

Rõ ràng bộ nhớ đệm của các loại khác nhau trên máy chủ tạo ra một sự khác biệt lớn nhưng tất cả các trang web này đã làm điều đó theo như tôi biết.

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.