Когда я запускаю запрос через 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 метода, даже если он будет немного медленнее. У кого-нибудь есть идеи относительно того, что может быть причиной этого?