Сессия Memorystore и облачные функции

У меня есть несколько функций, и я разделяю сеанс пользователя между функциями, использующими Cloud Memorystore. Я использовал пакет connect-redis и модифицировал его для работы с Memorystore.

В основном работает без проблем. Однако я обнаружил, что временами облачные функции не могли получить доступ к сеансу. Это случается нечасто, и я сталкивался с этой проблемой, может быть, три-четыре раза за последние полтора месяца. В функциях ошибок нет, и я свои функции тщательно проверил.

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

Из-за внезапного характера ошибки я также не уверен, смогу ли я воспроизвести события, приведшие к ошибке. Что я могу сделать, чтобы отладить эту ошибку и получить более конкретное представление о том, что происходит?


person Abrar Hossain    schedule 17.04.2020    source источник


Ответы (1)


Согласно this использование облачных функций с Memorystore должно работать нормально без проблем.

Это могло быть вызвано многими факторами. Возможно, тайм-аут соединения, холодный запуск функции, возможно, неправильное использование Memorystore, что приведет к проблеме, которая не позволяет ему работать должным образом.

Я предлагаю добавить ведение журнала до и после каждой части кода, завершающей большую часть. Поэтому в основном попробуйте определить, какие части кода вызывают проблему или не показывают ожидаемых результатов при возникновении проблемы, а затем разделите эту часть на более мелкие части, чтобы найти причину проблемы. Если даже с ведением журнала все в порядке с облачной функцией, скорее всего, что-то происходит на стороне Memorystore.

Также, возможно, стоит открыть публичную проблему для дальнейшего изучения, если проблема не имеет отношения к вашему коду или конфигурации. Отслеживание проблем

person Waelmas    schedule 22.04.2020
comment
Спасибо за ваш ответ. Я сам разбирался в проблеме. Я подозреваю, что это политика моего экземпляра Redis. Он был установлен на volatile-lru, и я изменил его на noeviction. С тех пор ошибок нет, но я проверю еще раз, прежде чем подтвердить. Что касается ведения журнала, проблема начинается, когда первое промежуточное ПО в цепочке, которое проверяет сеанс, не может загрузить сеанс из экземпляра Redis MemoryStore. Из журнала я всегда вижу, что в таких случаях объект сеанса пуст. - person Abrar Hossain; 22.04.2020
comment
Я бы сказал, что это возможная причина. Надеюсь, это предотвратит повторение проблемы. - person Waelmas; 23.04.2020