Tôi hơi bối rối về cách Go xử lý các yêu cầu đồng thời trên Google App Engine. Vì vậy, tôi hy vọng một người nào đó có thể cung cấp một số rõ ràng.Cách Go xử lý yêu cầu đồng thời trên Google App Engine
Dưới đây là những sự kiện mà tôi đã thu thập được:
Go là single ren trên App Engine. - this is because it is possible to do arbitrary pointer arithmetic by creating race conditions with multiple threads
Nếu Go là single ren trên App Engine sau đó trỏ 3 là tranh luận. Điều này lá 1 và 2. Nếu Go trên App Engine là đơn luồng và chủ đề được yêu cầu để tiếp tục thực hiện trong khi chặn cho I/O, thì có vẻ như một phiên bản App Engine Go sẽ chặn tất cả các goroutines trong khi chờ I/O.
Điều này có đúng không? Nếu không đồng bộ của Go thực sự hoạt động như thế nào trên App Engine?
Để giúp định lượng mọi thứ. Nếu tôi giữ kết nối trong 30 giây. Làm thế nào có thể kết nối đồng thời có thể một AE Go duy nhất dụ duy trì?
Cảm ơn bạn.
EDIT: đây là yêu cầu tính năng sẽ cho phép Phiên bản đi xử lý nhiều hơn 10 yêu cầu đồng thời Allow configurable limit of concurrent requests per instance. Hãy gắn dấu sao cho nó.
Đặt GOMAXPROCS = 1 (đó là những gì GAE làm) chỉ có nghĩa là sẽ luôn có chính xác một chuỗi hoạt động thực thi goroutines. Bạn vẫn có thể có một vài chủ đề bị chặn (chúng không được tính). Cũng lưu ý rằng thư viện Go sử dụng epoll ở chế độ nền, do đó I/O không thể chặn toàn bộ luồng (nhưng có một số cách khác để chặn luồng trong Go). Tôi không biết bất cứ điều gì về giới hạn chung 10 thread trên GAE mặc dù. – tux21b
Giới hạn yêu cầu đồng thời hiện có thể định cấu hình (tối đa 80), xem http://stackoverflow.com/a/37364981/943833 – Roganartu