Как получить 5 миллионов сообщений для загрузки файла 400 КБ в s3 - PullRequest
0 голосов
/ 24 сентября 2019

Я настроил конвейер AWS так, чтобы событие создания объекта в моем S3 создавало сообщение SQS.Я использую стандартные очереди SQS.Проблема возникла на прошлой неделе, когда я заметил, что для обработки файлов размером 400 тыс. .3des потребовалось много времени.Журналы приложений показали, что моя логика кода должна была обработать почти 5 миллионов сообщений в течение 3 дней, но команды aws показали, что загружается только 400 000 файлов, а на консоли AWS никогда не показывалось число сообщений, превышающее 500 000.

Мои исследования показывают, что стандарточереди могут создавать дубликаты сообщений, но тогда счетчик сообщений должен был отображаться в миллионах, чего никогда не было.Мне пока не удалось воспроизвести проблему для небольших наборов данных, поскольку при каждой загрузке объекта создается одно сообщение SQS.

У меня нет идей относительно возможной причины.

1 Ответ

0 голосов
/ 25 сентября 2019

Я не думаю, что вы получали каждое сообщение более 10 раз.Поскольку вы упомянули журналы приложений, я собираюсь предположить, что у вас на сервере запущен процесс.

Сначала я подумал, что у вашего сервера приложений возникли проблемы с производительностью, и он не смог обработать каждое сообщение SQS до истечения времени ожидания.Это приведет к тому, что SQS вернет сообщение обратно в очередь.

Вопрос в том, как вы можете это подтвердить?Если вы зайдете в панель управления SQS и выберите свой SQS, а затем перейдите на вкладку Мониторинг.Обязательно обновите свой временной диапазон, поскольку по умолчанию он равен часу.Поскольку это более недели назад, вы можете использовать CloudWatch-> Metrics, поскольку вы можете создать диапазон абсолютного времени, чтобы ограничить данные временем возникновения вашей проблемы.

Сначала давайте подтвердим, что метрики SQS соответствуют вашему приложениюметрики для рассматриваемого временного окна: NumberOfMessagesSent: должно равняться 400k.NumberOfMessagesReceived: это должно равняться 5 миллионам.NumberOfMessagesDeleted: это должно быть около 500k.ApproximateAgeOfOldestMessage: это число должно увеличиться в течение 3 дней после того, как сообщения ожидают обработки.

Если вы не получите эти числа, опубликуйте свои метрики, поскольку они обеспечат лучшее понимание.

Aеще несколько вопросов для рассмотрения.- Как у вас есть приемники?- Если вы не удаляете сообщения до тех пор, пока они не будут обработаны, то показатель ApproximateNumberOfMessagesNotVisable должен быть близок к количеству получателей.Если это> то ваше приложение не удаляет сообщения.Если значение <, то это может означать, что ваше приложение не обрабатывает сообщения до истечения времени ожидания.</p>

Довольно сложно точно сказать вам, что происходит, но, надеюсь, это поможет.

...