Как Go обрабатывает одновременный запрос в Google App Engine

Я немного запутался в том, как Go обрабатывает параллельные запросы в Google App Engine. Поэтому я надеюсь, что кто-то может дать некоторую ясность.

Вот факты, которые я собрал:

Go is single threaded on App Engine. - this is because it is possible to do arbitrary pointer arithmetic by creating race conditions with multiple threads

Goroutines are multiplexed onto multiple OS threads so if one should block, such as while waiting for I/O, others continue to run.

[App Engine has a] 10 concurrent limit [which] is enforced through a limit on concurrent threads on every runtime. Most of such cases, our scheduler will try to spin up a new instance.

Если Go является однопоточным в App Engine, то пункт 3 является спорным. Это оставляет 1 и 2. Если Go на App Engine является однопоточным и потоки должны продолжать выполнение при блокировке ввода-вывода, то создается впечатление, что экземпляр App Engine Go заблокирует все процедуры при ожидании ввода-вывода.

Это правильно? Если нет, то как параллелизм Go действительно работает на App Engine?

Чтобы помочь количественно оценить вещи. Если бы я держал соединение открытым в течение 30 секунд. Как могут одновременные соединения поддерживать один экземпляр AE Go?

Спасибо.

EDIT: here's the feature request which will allow Go Instance to handle more then 10 concurrent request Allow configurable limit of concurrent requests per instance. Please star it.

Ответы на вопрос(2)

Ваш ответ на вопрос