Как минимизировать время ожидания при использовании клиентской библиотеки Google Cloud PubSub для php? - PullRequest
1 голос
/ 02 апреля 2020

Этим вечером мы получили от Google следующие исключения:

Google \ Cloud \ Core \ Exception \ ServiceException: ошибка cURL 56: OpenSSL SSL_read: SSL_ERROR_SYSCALL, errno 104 (см. http://curl.haxx.se/libcurl/c/libcurl-errors.html)

Google \ Cloud \ Core \ Exception \ ServiceException (код: 0): ошибка cURL 7: не удалось подключиться к порту oauth2.googleapis.com 443: истекло время ожидания соединения (см. http://curl.haxx.se/libcurl/c/libcurl-errors.html)

Google \ Cloud \ Core \ Exception \ ServiceException (код: 0): ошибка cURL 28: Тайм-аут операции после 2001 миллисекунды с получением 0 байтов (см. http://curl.haxx.se/libcurl/c/libcurl-errors.html)

Мы можем нормально обрабатывать исключения, но между установлением соединения и возникновением исключения существует значительный тайм-аут. Это означает, что наш сервер зависает в течение длительного периода времени, когда запрос инициируется в Google, ожидает правильного создания соединения, не удается, а затем продолжается. Это означает, что наши запросы занимают смешное количество времени (~ 20 секунд - приблизительно 3 минуты) вместо миллисекунд.

Итак:

  • Как мы можем определить причину root этой проблемы есть? Я предполагаю, что это проблема, связанная с сервисом Google, но их консоль Google ясна
  • Как мы можем установить тайм-аут, чтобы он был значительно короче, чтобы он не вызывал длительных задержек, особенно это важно для обращений пользователей .

Мы используем PHP PubSubClient, в частности только метод publish на данный момент.

1 Ответ

0 голосов
/ 02 апреля 2020

Я полагаю, что это можно исправить следующим образом:

$pubsub->publish(
    [
        'data'       => $data,
        'attributes' => $attributes,
    ],
    [

        'requestTimeout' => 2 // Set your own value here (in seconds)
    ]
);

Похоже, это переведено в опцию Guzzle под капотом.

См. \Google\Cloud\Core\RestTrait::send для получения дополнительной информации

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...