Назад | Перейти на главную страницу

Gunicorn не отвечает более чем на 6 запросов за раз

Чтобы дать вам некоторый контекст:

У меня две серверные среды с одним и тем же приложением. Первый, от которого я намерен отказаться, - это стандартная среда Google App Engine, имеющая множество ограничений. Второй - это кластер Google Kubernetes, в котором запущено мое приложение Python с Gunicorn.

Параллелизм

На первом сервере я могу отправить несколько запросов в приложение, и оно ответит на многие одновременно. Я выполняю два пакета одновременных запросов к приложению в обеих средах. В Google App Engine первый и второй ответ были получены одновременно, и первый не блокировал второй.

В Kubernetes сервер отвечает только 6 одновременно, а первый пакет блокирует второй. Я читал несколько сообщений о том, как добиться параллелизма Gunicorn с помощью gevent или многопоточности, и все они говорят, что мне нужны ядра ЦП, но проблема в том, что независимо от того, сколько ЦП я вложил в него, ограничение сохраняется. Я пробовал узлы Google от 1VCPU до 8VCPU, и это не сильно изменилось.

Не могли бы вы подсказать мне, что мне, возможно, не хватает? Может быть ограничение узлов Google Cluster?

Водопад ответа Kubernetes

Как вы можете заметить, на второй пакет начали отвечать только после того, как закончился первый.

Каскад ответов App Engine

Конфигурация Gunicorn

Я пробовал использовать оба стандартных класса с рекомендуемой настройкой: 2 * ядра + 1 для и 12 потоков.

Я также пробовал gevent с --worker-connections 2000.

Ни один из них не имел значения. Время отклика было очень похожим.

Мой раздел контейнера файлов kubernetes:

    spec:
      nodeSelector:
        cloud.google.com/gke-nodepool: default-pool
      containers:
      - name:  python-gunicorn
        image:  gcr.io/project-name/webapp:1.0
        command:
          - /env/bin/gunicorn
          - --bind
          - 0.0.0.0:8000
          - main:app
          - --chdir
          - /deploy/app
          #- --error-logfile
          #- "-"
          - --timeout
          - "7200"
          - -w
          - "3"
          - --threads
          - "8"
          #- -k
          #- gevent
          #- --worker-connections
          #- "2000"