Запрос Pymongo значительно медленнее через AWS Lambda - PullRequest
0 голосов
/ 03 июля 2019

Когда я запускаю запрос через Robo 3T, mongod или pymongo с помощью командной строки, запрос возвращает 50 миллисекунд. Выполнение того же запроса с помощью pymongo в AWS Lambda занимает 15-16 секунд. Все запросы не такие медленные, просто обращайтесь к запросам в моем случае (запросы на имя занимают менее 1 секунды). Я использую python 3.6, pymongo 3.7 и mongodb 3.6.

Я не думаю, что это проблема холодного запуска, потому что я запускаю 2 запроса подряд, это второй запрос, и первый запрос все еще занимает меньше секунды. Кроме того, я попытался запустить его несколько раз подряд, и каждый раз получаю одинаковые результаты. Функция использует только 57 МБ выделенных 128 МБ, поэтому я не верю, что это может быть проблема с ЦП, и увеличение ЦП вообще не изменило скорость.

Запрос MongoDB

db.getCollection('CA').find({'$and': [{'OWNER_ZIP': {'$regex': '^95120'}},{'OWNER_STREET_1': '123 MAIN STREET'}]})

запрос пимонго

cursor = list(db_unclaimed.find({'$and': [{'OWNER_ZIP': {'$regex': '^95120'}},{'OWNER_STREET_1': '123 MAIN STREET'}]}).skip(0).limit(50))

Python-функция, которую я использую

def searchAddress(zipcode, address, page_size, page_num):
    print('Searching by address...')
    print(address)
    skips = page_size * (int(page_num) - 1)
    cursor = list(db_unclaimed.find({'$and': [{'OWNER_ZIP': {'$regex': zipcode}},{'OWNER_STREET_1': address}]}).skip(skips).limit(page_size))
    for document in cursor: print(document)
    return cursor

Я бы ожидал, что запрос в лямбде будет занимать столько же времени, что и другие 3 метода, даже если он будет немного медленнее. У кого-нибудь есть идеи относительно того, что может быть причиной этого?

...