2013-11-03 14 views
5

Tôi muốn xem thiết lập nginx + node.js của mình có thể đi xa đến mức nào và những thay đổi nào tôi có thể thực hiện để tăng cường hiệu suất bổ sung mà tôi đã gặp phải trên a great article chi tiết một số điều chỉnh có thể được thực hiện cho hệ điều hành để chịu được nhiều yêu cầu hơn (Tôi không chắc mình hoàn toàn hiểu)Làm thế nào để mô phỏng một số lượng lớn các yêu cầu đồng thời tới một máy chủ web?

Giả sử tôi muốn xem cách xử lý 60.000 yêu cầu mỗi giây trong một khoảng thời gian.

Tôi đã thử apachebench và beeswithmachineguns. apachebench dường như bị hạn chế tại địa phương với khoảng 3500 yêu cầu hoặc một cái gì đó. Tăng đồng thời chỉ phục vụ để giảm trung bình req/s bằng cách nào đó. Tôi đã có thể nhìn thấy (tuyên bố) ~ 5000 yêu cầu mỗi giây đến một trang thử nghiệm với các loại súng ong nhưng nó vẫn không ở đâu gần với những gì tôi muốn. Nó có vẻ là một chút về phía buggy, tuy nhiên.

Có cách nào đáng tin cậy để mô phỏng một số lượng lớn các yêu cầu như thế này không?

Trả lời

5

Bạn cũng có thể dùng thử số siege.

Bài viết bạn đã liên kết có vẻ phù hợp với tôi.

Tạo 60.000 rq/s và trả lời chúng cùng một lúc sẽ là một vấn đề vì bạn chắc chắn hết nguồn tài nguyên. Nó sẽ là tốt nhất để có một số máy tính khác (có thể trên cùng một mạng) để tạo ra các yêu cầu và để cho máy chủ của bạn chỉ xử lý trả lời những người.

Dưới đây là một ví dụ về cấu hình bao vây cho 60.000 rq/s mong muốn của bạn sẽ nhấn máy chủ của bạn trong một phút.

# ~/.siegerc 

logfile   = $(HOME)/siege.log 
verbose   = true 
csv    = true 
logging   = true 
protocol  = HTTP/1.1 
chunked   = true 
cache   = false 
accept-encoding = gzip 
benchmark  = true 
concurrent  = 60000 
connection  = close 
delay   = 1 
internet  = false 
show-logfile = true 
time   = 1M 
zero-data-ok = false 

Nếu bạn không có cơ sở hạ tầng để tạo tải, hãy thuê nó. Một dịch vụ rất tuyệt vời là Blitz.IO (Tôi không liên kết với họ). Họ có một giao diện dễ dàng và trực quan và (quan trọng nhất) họ có thể tạo ra gần như bất kỳ lưu lượng truy cập cho bạn.

+0

Có vẻ tuyệt vời, tôi sẽ chụp. Phần nào của máy chủ sẽ phát ra dưới tải như vậy trước? Nó sẽ chạy ra khỏi ổ cắm tcp hoặc là nó chỉ đơn giản là một vấn đề của CPU/RAM tải vv? Tôi đang tìm cách xây dựng một hệ thống có thể xử lý loại tải đó vô thời hạn. Tôi đã nghĩ đến việc sử dụng một máy với nginx chỉ với mục đích cân bằng tải. Điều này có thể không? –

+0

Điều đầu tiên bạn chạy là các cổng TCP. nginx (được cấu hình đúng) có dấu chân CPU và RAM rất thấp. Node.js sẽ tăng lên để ăn CPU của bạn (và sau này là RAM) với cơ sở mã tăng lên. Các ngôn ngữ khác có thể cung cấp cho bạn hiệu suất cao hơn ở đây (ví dụ: PHP được biên dịch, PHP \ w OP cache, C/C++). Vô thời hạn sẽ không thể, nếu không bạn sẽ có một hệ thống mà bạn có thể dễ dàng bán cho Amazon, Facebook và Google. Nginx như cân bằng tải là không có vấn đề gì cả. – Fleshgrinder

+0

Nếu nginx phải sàng lọc thông qua các yêu cầu gửi đến, ví dụ 10 máy chủ khác, nó không chạy vào vấn đề với các cổng TCP nếu nó được sử dụng như một bộ cân bằng tải, hay tôi đang thiếu thứ gì đó? Cảm ơn bạn đã trả lời –

Các vấn đề liên quan