GOMAXPROCS для услуги Go в Куберне - PullRequest
1 голос
/ 09 апреля 2020

Я пытаюсь провести стресс-тест нашего Go сервиса в Куберне. Сервис - это просто http-сервер, который принимает запросы, отправляет запросы другому сервису, выполняет некоторые операции со строками и возвращает ответ на исходный запрос.

Мы начали с

cpu.requests = 1
cpu.limit = 2
Note: host VM has 6 CPUs

С следующий тестовый сценарий:

Repeat for 20 times:
1. Send 40 parallel requests
2. Sleep for 200ms

Мы обнаружили, что Gomaxprocs по умолчанию установлен в 6 (в соответствии со спецификациями хоста), и мы получаем тайм-аут сетевого ввода-вывода после некоторых итераций теста. Кроме того, потребление ресурсов процессора через некоторое время падает до 0 (есть идеи, что здесь может произойти? Go Планировщик времени выполнения зависает?)

Проблема решается путем явного задания Gomaxprocs значения 1.

Некоторые основы c Google привели меня к статье типа https://github.com/uber-go/automaxprocs/issues/12 Но не так много других статей / документов, которые предупреждают нас об этом поведении GOMAXPROCS на kubernetes.

Помощь оценена:

  1. Любые другие статьи, в которых рассказывается о том, как неправильно сконфигурированные GOMAXPROCS влияют на Go службу в kubernetes?
  2. Что делать, если для cpu.requests установлено значение 500mCPU? GOMAXPROCS = 1 все еще адекватен? или это просто означает, что cpu.requests должен быть не менее 1?
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...