Почему подключение к MongoDB Atlas с JVM функциями Google Cloud происходит так медленно?

#google-cloud-platform #google-cloud-functions #mongodb-atlas

# #google-облачная платформа #google-cloud-функции #mongodb-atlas

Вопрос:

Я уже некоторое время использую GCF с Node / Typescript / MongoDB Atlas, и все это работает довольно плавно при холодном запуске (и подключении к Atlas), который длится всего несколько секунд. Недавно я начал играть с той же функциональностью, используя среду выполнения JVM с Kotlin. Я обнаружил, что при локальном тестировании во время холодного запуска время подключения к Atlas сопоставимо со средой узла, но при подключении из GC во время холодного запуска для установления соединения может потребоваться до 10 секунд! Я создал свой кластер Atlas на GC и использовал регион в США. Мне интересно, нет ли чего-нибудь, чего мне не хватает, чтобы ускорить время подключения? Ниже приведена реализация, с которой я тестировал.

Зависимости Gradle:

 dependencies {
    implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk8:$kotlin_version"
    implementation "org.jetbrains.kotlin:kotlin-reflect:$kotlin_version"

    compileOnly 'com.google.cloud.functions:functions-framework-api:1.0.1'

    // MongoDB amp; KMongo
    implementation "org.mongodb:mongodb-driver-sync:4.1.1"
    implementation 'org.mongodb:mongodb-driver-core:4.1.1'
    implementation 'org.mongodb:mongo-java-driver:3.12.7'
    implementation 'org.litote.kmongo:kmongo-coroutine:4.2.0'
    implementation 'org.mongodb:bson:4.1.1'

    implementation "org.slf4j:slf4j-simple:1.7.30"
}
 

Подключение к MongoDB Atlas:

 object Database {

    init {
        System.setProperty(
            "org.litote.mongo.test.mapping.service",
            "org.litote.kmongo.jackson.JacksonClassMappingTypeService"
        )
    }

    private val uri = MongoClientURI(MONGO_CLIENT_URI)

    private val mongoClient = KMongo.createClient(uri.uri)

    val database = mongoClient.getDatabase(uri.database).coroutine
}
 

Любая помощь / совет будут с благодарностью! 🙂

Комментарии:

1. Что такое медленно? Запуск? Соединение? Битрейт?

2. Не могли бы вы поделиться более подробной информацией о вашей реализации, чтобы мы могли проверить возможные проблемы?

3. @RafaelLemos Я отредактировал свой первоначальный пост, включив в него свою реализацию для подключения к MongoDB Atlas.

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

5. @RafaelLemos да, и проект GC, и кластер MongoDB Atlas используют регион us-central1.