Jestem trochę zdezorientowany, w jaki sposób Go obsługuje równoczesne żądania w Google App Engine. Mam więc nadzieję, że ktoś może zapewnić jakąś jasność.W jaki sposób Go obsługuje równoczesne żądanie w Google App Engine
Oto fakty, które mam zgromadzone:
Go jest pojedynczy gwintowany na App Engine. - this is because it is possible to do arbitrary pointer arithmetic by creating race conditions with multiple threads
Jeśli Go jest pojedynczy gwintowany na App Engine następnie wskaż 3 jest dyskusyjna. Pozostawia to 1 i 2. Jeśli funkcja Go on App Engine ma jeden wątek, a wątki są wymagane do kontynuowania wykonywania podczas blokowania dla operacji we/wy, wydaje się, że instancja App Engine Go zablokuje wszystkie goryle podczas oczekiwania na I/O.
Czy to prawda? Jeśli nie, w jaki sposób współbieżność Go działa na App Engine?
Aby pomóc w kwantyfikacji rzeczy. Gdybym miał utrzymywać połączenie otwarte przez 30 sekund. W jaki sposób współbieżne połączenia mogą utrzymywać pojedynczą instancję AE Go?
Dziękuję.
EDIT: oto wniosek funkcja, która pozwoli Go Instancji obsługiwać więcej niż 10 jednoczesnego żądania Allow configurable limit of concurrent requests per instance. Proszę gwiazdować.
Ustawienie GOMAXPROCS = 1 (czyli to, co robi GAE) oznacza, że zawsze będzie dokładnie jeden aktywny wątek, który wykonuje goroutines. Możesz nadal mieć kilka zablokowanych wątków (nie liczą). Zauważ też, że biblioteka Go używa epola w tle, więc jest mało prawdopodobne, że I/O zablokuje cały wątek (ale istnieje kilka innych sposobów blokowania wątku w Go). Nie wiem nic o ogólnym 10-nitkowym ograniczeniu GAE. – tux21b
Limit współbieżnych żądań jest teraz konfigurowalny (maksymalnie do 80), zobacz http://stackoverflow.com/a/37364981/943833 – Roganartu