2013-06-07 33 views
41

Trong câu trả lời cho "How is Amazon DynamoDB throughput calculated and limited?" nó đã được đề xuất, rằng DynamoDB throttles yêu cầu bất cứ khi nào bạn vượt quá cung cấp thông qua trên mỗi giây cơ sở. Tuy nhiên, điều này mâu thuẫn với kinh nghiệm của tôi.Khi nào yêu cầu ga DynamoDB?

Tôi đã đặt bảng nơi tôi đăng nhiều hàng, thường là số hàng vượt quá khả năng ghi được cấp phép. Điều này xảy ra trong các vụ nổ ngắn. Tại một thời điểm tôi thậm chí còn có 5 phút trung bình trên khả năng cung cấp. OTOH, 15 phút trung bình là dưới công suất. Tôi đã không có bất kỳ yêu cầu throttled trong thời gian đó.

5 phút trung bình đỉnh tại 8,053 với công suất được cung cấp 6: trung bình 5 minutes average

15 phút đỉnh cũng dưới mức công suất được cung cấp:

enter image description here

Vì vậy, khi thực hiện yêu cầu DynamoDB ga? Loại tài khoản nào có tính đến mức trung bình? Làm thế nào cao trên khả năng cung cấp có thể bùng nổ được trước khi nó được throttled?

Trả lời

54

DynamoDB được thiết kế để đảm bảo rằng khả năng cung cấp của bạn có sẵn trên cơ sở mỗi giây. Nếu bạn cung cấp một bảng cho mười 1kB lần đọc mỗi giây thì DynamoDB sẽ cung cấp cho bạn đủ dung lượng để xử lý tốc độ truyền đó. Ngoài ra, DynamoDB đôi khi sẽ cho phép bạn đạt được sự bùng nổ hạn chế trên mức thông lượng được cung cấp của bạn trong một khoảng thời gian ngắn. Điều này nhằm mục đích hấp thụ các biến thể tự nhiên trong khối lượng công việc của khách hàng. Sự bùng nổ này không được đảm bảo và nó không phải lúc nào cũng có sẵn (và bản chất của sự bùng nổ có sẵn có thể thay đổi theo thời gian). Như hiện được mô tả trong tài liệu thực hành tốt nhất, để có được hiệu suất tốt nhất, bạn nên có khối lượng công việc được phân phối đồng đều không vượt quá dung lượng được cung cấp và phân phối tải đồng đều trên không gian chính. Tuy nhiên, nếu thực tế của hành vi sản xuất cho ứng dụng của bạn lệch khỏi khối lượng công việc được phân phối đồng đều thì DynamoDB có thể hấp thụ một số vụ nổ.

Đối với số tiền cung cấp bảng của bạn, điều đó phụ thuộc rất nhiều vào khối lượng công việc của bạn. Bạn có thể bắt đầu cung cấp khoảng 80% số đỉnh và sau đó điều chỉnh dung lượng bảng của bạn tùy thuộc vào số lượng bạn nhận được (bạn có thể thấy trong đồ thị CloudWatch) và khả năng chịu thời gian chờ của ứng dụng do thử lại. Hãy nhớ rằng DynamoDB không cho phép các vụ nổ không giới hạn vượt quá khả năng được cung cấp của bạn. Bạn có thể hấp thụ các vụ nổ ngắn nhưng bạn không thể duy trì một tỷ lệ thông lượng vượt quá mức dung lượng được cấp phép của bạn trong một khoảng thời gian dài. Hướng dẫn chung chúng tôi có thể cung cấp là cung cấp cho một cái gì đó gần với đỉnh của bạn và sau đó quay số xuống trong khi xem cho throttles.

This answer was posted in AWS forums

Tuyên bố từ chối trách nhiệm: Tôi làm việc cho Amazon, nhóm DynamoDB.

+2

Bởi 80% đỉnh bạn đang đề cập đến các đỉnh trên biểu đồ * trung bình * 5? Tôi nói cách khác, hãy nói rằng tôi có tình huống mà tôi có một loạt 60 mặt hàng cứ 10 giây một lần. Trên cơ sở mỗi giây nó sẽ là 60, trên mỗi phút hoặc lâu hơn nó 6. Vậy cao bao nhiêu là đỉnh? – vartec

+0

"Vậy cao điểm là bao nhiêu?" Tôi không nghĩ tôi có thể nói với bạn điều đó, xin lỗi. Tất cả các tính toán/kế toán của chúng tôi được thực hiện mỗi giây. Đối với lưu lượng truy cập bùng nổ, chúng tôi xem xét khoảng thời gian dài hơn để phân tích mẫu lưu lượng truy cập. Cuối cùng, như bài viết cho thấy, các khóa học tốt nhất của hành động là một chút thử và sai, kể từ khi bạn biết mẫu sử dụng của bạn và những gì khoan dung bạn có cho retries/throttling. –

+1

Trong thử nghiệm phát triển của riêng tôi, tôi đã cung cấp một bảng với 1 đơn vị viết và có thể đẩy 10 lần mỗi giây mà không bị điều chỉnh, vì vậy những gì @vartec nói là phù hợp với kinh nghiệm của riêng tôi, tuy nhiên kỳ quái có thể có hoặc không. –

11

Có một hint in the DynamoDB documentation giải thích cách bùng nổ các công trình:

Khi bạn không sử dụng đầy đủ thông của một phân vùng, DynamoDB giữ lại một phần công suất sử dụng của bạn cho vụ nổ sau của việc sử dụng thông. DynamoDB hiện giữ lại 5 phút (300 giây) khả năng đọc và ghi không sử dụng.

Nhưng nó cũng nói rằng bạn không thể dựa vào hành vi này:

Tuy nhiên, không thiết kế ứng dụng của bạn để nó phụ thuộc vào khả năng bùng nổ là có sẵn tại mọi thời điểm: DynamoDB có thể và không sử dụng bùng nổ khả năng bảo trì nền và các nhiệm vụ khác mà không cần thông báo trước.

Ít nhất điều đó sẽ giải thích lý do tại sao có thể có mức trung bình 5 phút vượt quá khả năng được cung cấp. Với lời giải thích ở trên, thậm chí có thể có trung bình 15 phút (hoặc khoảng thời gian dài hơn) cao hơn khả năng được cung cấp, nếu bạn tăng đột biến vào đầu khoảng thời gian và sử dụng ít hơn trong 300 giây trước khi bắt đầu khoảng thời gian.

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