2016-04-06 27 views
5

Tôi tò mò về cách mở rộng quy mô làm việc trên các hàm Azure có liên quan để xuất ra Document DB.Chức năng & tài liệu Azure DB

Về cơ bản điều gì sẽ xảy ra khi Document DB trả lại 429 vì tôi vượt quá thông lượng được phân bổ? Tôi hỏi vì khi tôi có hàm Azure thấp nhất kết hợp với mức thấp nhất của Document DB và tiến hành gọi hàm 1000 lần trong 20 giây, tôi chỉ thấy 700-800 tài liệu thực được chèn vào bộ sưu tập tài liệu db của tôi. Khi tôi thu nhỏ tài liệu DB lên đến mức tối đa với cùng một mức chức năng thấp nhất một lần nữa, tôi chỉ nhận được 700-800 tài liệu trong bộ sưu tập doc db của tôi. Tuy nhiên khi tôi mở rộng chức năng lên đến mức tối đa với db tài liệu ở mức tối đa tôi nhận được tất cả 1000. Khi tôi thả doc db xuống min tôi chỉ có 300. .... mặc dù nó có vẻ như tôi đã khóa tài liệu db tài khoản lên và rằng nó vẫn thử lại chèn cho đến khi nó có thể thành công.

Vì vậy, tôi chỉ bối rối vì điều này là mở rộng quy mô và nếu tôi có thể hiểu rõ hơn để tôi có thể điều chỉnh các khía cạnh khác nhau của hàm hoặc ứng dụng.

Trả lời

6

Có, hiện tại nó đang thử lại trên 429, đợi khoảng thời gian được đề xuất theo phản hồi của DocDB. Hiện tại không có thời gian chờ tuyệt đối nên các lần thử lại sẽ tiếp tục cho đến khi chúng được thông qua (tôi kiểm tra lại ngay bây giờ nếu đây là hành vi mong đợi).

Trong trường hợp đầu tiên của bạn, nếu bạn chờ đủ lâu để điều tiết được loại bỏ, tất cả 1000 cuối cùng có hiển thị không?

Tôi muốn thử tái tạo điều này - bạn có đang gắn 1000 mục trong hàng đợi trước khi bật chức năng của mình không? Hay gọi nó theo cách khác?

Mã retry cụ đang chạy là ở đây nếu bạn tò mò: https://github.com/Azure/azure-webjobs-sdk-extensions/blob/master/src/WebJobs.Extensions.DocumentDB/DocumentDBUtility.cs#L36

+0

Tôi đang kích hoạt các chức năng thông qua http vì tôi không tin dịch vụ xe buýt gây ra trong C# đang chức năng (mặc dù có thể đã thay đổi vì điều này đang thay đổi nhanh chóng vào lúc này). Vì vậy, tôi kích hoạt tất cả 1000 thông qua http, tôi đang sử dụng loader.io để làm điều này gọi một điểm cuối api web trong mã của tôi mà lần lượt kích hoạt bài http để kích hoạt chức năng. Kiểm tra loader.io được đặt để chạy 50 yêu cầu/giây trong 20 giây. – steveko23

+0

Tôi không chắc chắn 100% nếu chức năng cuối cùng kết thúc. Trong thử nghiệm cuối cùng của tôi không có nhiều hồ sơ dường như được viết, nhưng tôi vẫn nhận được 429 khi tôi cố gắng tương tác với bộ sưu tập doc db. Vì vậy, tôi đã xóa toàn bộ bộ sưu tập và tạo lại nó và sau đó thấy các bản ghi bổ sung được ghi vào bộ sưu tập. Vì vậy, có vẻ như nó vẫn đang cố gắng, nhưng cũng có vẻ như nó đang ở trong trạng thái kỳ quặc. – steveko23

+0

Vâng, sau một loạt các thử nghiệm ngày hôm nay tôi đã nhận ra rằng tôi đã loại bỏ giấc ngủ thực tế từ bit mã này trong thay đổi cuối cùng của tôi: https://github.com/Azure/azure-webjobs-sdk-extensions/commit/d39943965d45038ebddc7d4a2d729beab8a678aC# diff-6f209fbf17e36efd4d9ebc6a285cc00cL69. Tôi sẽ sửa lỗi này và thêm một số kiểm tra để xác minh nó không xảy ra lần nữa. Tôi sẽ viết lại ở đây khi sửa chữa này có sẵn và tôi sẽ thử một số thử nghiệm nhiều hơn để đảm bảo nó hoạt động như nó được sử dụng để. Cảm ơn đã đưa ra vấn đề này! – brettsam

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