как, проблема в недостаточном transactionLifetimeLimitSeconds. Я использую образы bitnami/mongodb-sharded. Как я понял из доков не шардовой монги, можно увеличить время транзакции при старте контейнера используя переменную среды - MONGODB_EXTRA_FLAGS='--transactionLifetimeLimitSeconds=480'. Но с шардом такое не прокатывает. Как быть?
А какой у вас сценарий стресс-теста? основан ли он на каком-то реальном кейсе, на реальных данных?
Пока что спамлю локустом создание документов через API на основе FastAPI. Потом буду ещё небольшие файлы в GridFS писать (знаю, что не поддерживает транзакции), но пока без них. Пока что в транзакции всего по 2 операции, создать документ с информацией о файле, добавить в документ с инфой о проекте ссылку на новый файл.
я разделил на 2 типа транзакции в монго у себя: 1. для юзеров - юзер коннекты, таймауты везде не более 5 секунд 2. для обновлений коллекций (таблиц) - таймауты подключения 300 сек если у вас не все обрабатываются запросы и копится очередь, то коннекты могут подвисать, а так как они в очереди, то время истекает и они завершаются с исключением timeouterror пример такой: .connect('127.0.0.1', port=58999, socketTimeoutMS=5000, connectTimeoutMS=5000, serverSelectionTimeoutMS=5000, waitQueueTimeoutMS=15000) .connect('127.0.0.1', port=58999, socketTimeoutMS=300000, connectTimeoutMS=300000, serverSelectionTimeoutMS=300000, waitQueueTimeoutMS=300000) п.с. отталкивался ещё от того, что чаще всего встречал в практике. так же, ты не написал, с каким исключением у тебя обваливаются коннекты, так что можно только гадать
Обсуждают сегодня