Подписки не стабильны. Prisma завершается с ошибкой GqlConnectionTerminate - PullRequest
3 голосов
/ 26 марта 2019

Я только что реализовал подписки в своем API, которые используют graphql-yoga. У меня есть один сервер призмы, который имеет следующую конфигурацию:

databases:
  default:
    connector: postgres
    host: 
    database: prisma
    port: 5432
    user: admin
    password: ${DB_PASSWORD}
    migrations: true
    rawAccess: true
    ssl: true
    connectionLimit: 5

Обратите внимание, что я ограничил количество подключений, потому что я подключаюсь к экземпляру Google Cloud SQL, который имеет ограниченное количество разрешенных подключений. Теперь у меня есть 4 приложения для йоги, подключающихся к этому одному серверу призмы. Проблема в том, что иногда работают подписки, а иногда выдает следующую ошибку (на игровой площадке):

{
  "error": "Could not connect to websocket endpoint wss://yourapi.com/subscriptions. Please check if the endpoint url is correct."
}

Когда я проверял журналы призменного контейнера, я нашел это:

Deployment worker initialization complete.
Version is up to date.
[SubscriptionSessionActor] Received unknown message: com.prisma.subscriptions.protocol.SubscriptionProtocolV07$Requests$GqlConnectionTerminate$@494aa66a
Killed
Obtaining exclusive agent lock...
Initializing workers...
Obtaining exclusive agent lock... Successful.
Successfully started 1 workers.
Server running on :4466

Мои API находятся за прокси Nginx:

server {
  server_name example.com;
  listen 443 ssl http2;

  location / {
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header Host $http_host;
    proxy_set_header X-NginX-Proxy true;
    proxy_set_header X-Custom-Referrer "idToken";
    proxy_http_version 1.1;
    proxy_set_header Upgrade $http_upgrade;
    proxy_set_header Connection "upgrade";
    proxy_max_temp_file_size 0;
    proxy_pass http://127.0.0.1:4050;
    proxy_redirect off;
    proxy_read_timeout 240s;
  }


    ssl_certificate ___ # managed by Certbot
    ssl_certificate_key ___ # managed by Certbot
}

Я не могу понять, в чем проблема. Любая подсказка или руководство будет высоко ценится. Заранее спасибо.

...