Постоянные одновременные подключения истощают память моего сервера

Обычно лучше работать со строками (строками ). Такие инструменты, как awk, работают с одной строкой за раз. Чтобы преобразовать ваши столбцы в строки (, то есть транспонировать ), используйте GNUdatamash. Затем awkможет сделать правильные тесты для каждой строки отдельно, печатать ее или нет. В конце снова используйте datamash, чтобы преобразовать результат в исходный формат :

.

Объяснение логики:

  • Первый forпропускает строку и начинает сначала, если какое-либо из полей 2..5 отличается от номера поля 1. Все 5 полей равны, это единственная возможность, которая позволяет программе перейти к следующей строке кода.
  • Второй forпропускает строку и начинает сначала, если любое из следующих полей совпадает с первым.
  • Если программа вышла за пределы обоих fors, то это означает, что никакого противоречия вашим критериям обнаружено не было. Только тогда печатается вся строка.

Примечания:

  • В исходной задаче (без транспонирования )вам нужно прочитать следующую строку, только если есть хотя бы один столбец, который еще не противоречит вашим критериям. В зависимости от данных возможно, что все столбцы могут быть объявлены несоответствующими -сразу после чтения нескольких первых строк. В таком случае алгоритм может быстро выйти и вообще ничего не напечатать. Но datamash transposeнеобходимо прочитать и обработать весь файл (или поток )независимо от данных. В этом контексте мое решение неоптимально.
  • На случай, если datamashнедоступен, есть awkрешение здесь .

0
29.08.2021, 09:17
1 ответ

Хорошо, мы выяснили, в чем была проблема, поэтому я закрываю вопрос, так как не было ни DDoS, ни какой-либо атаки:

ИТ-отдел клиента настроил свой балансировщик нагрузки буквально на экземпляры пулеметного сервера, и весь трафик, который я видел в журнале доступа, на самом деле был -проверкой работоспособности.

Теперь, когда они установили разумные 2 -3 минуты на проверку, она исчезла.

Извините за беспокойство.

1
29.08.2021, 11:01

Теги

Похожие вопросы