Очевидно, что у вас title генерируется JS.
1. 40к в сутки
2. Самопис
3. Выделенный сервер с Xeon, 16Gb ОЗУ, nginx + php7 + mysql5.6 + Redis
Сам движок справлялся на ура, было хорошее кеширование посредством Redis. В какой-то момент пришлось увеличить лимиты открытых файлов для Nginx (вывались ошибки в пик трафика, т.к. по умолчанию лимит 1024 файла). PHP-сесии были также перенесены в Redis.
Главная проблема - нагрузка на диски. Были две нерейдовых диска, по которым размазан контент. Сайт - видеотуб, с постоянно практически забитым каналом 1Gbps, дискам было тяжеловато. При этом на одном из этих дисков размещалась и система. Часто таскал части контента с одного диска на другой, чтобы уровнять нагрузку, /var/lib/mysql в какое-то время тоже пришлось перенести на второй диск. В общем, напрашивалась конфигурация с отдельным диском для системы.
В общем, ситуацию в итоге решил приобритением второго идентичного сервера, ежедневным зеркалированием на него всех данных (заодно и решился вопрос бекапа, которого, к слову, не было). Движок юзерам отдавал контент то с первого, то со второго сервера, распределяя тем самым нагрузку на канал и диски.
Ну так ты первым методом прогрел процессор, конечно второй код быстрее начнет выполняться.
Потому что надо передавать одним параметрам ключи, а другим - значения. Если имеем в распоряжении массив как в стартпосте.
Жуткий боян, но все же. Их и новая версия недалеко ушла.
Да даже str_replace позволяет:
Это может быть и физически другой сервер.
Последнее время уже не наблюдаю эту практику. Скорее всего, счета были не левые, т.к. сумма и ID услуг совпадали. Возможно я даже разок и оплатил этим способом когда-то, врать не буду. Но напрягало то, что запрашивали оплату и моих личных услуг и обслуживаемых мною, а согласие на оплату банальное - ответ на смс. В общем, можно по запарке заплатить что-то не свое.
По поводу, собственно, вопроса. Можно примерно вот такой конструкцией:
tail -n 10000 access.log | awk '{print $1}'| sort | uniq -c | sort -n -r | head -n 15 | awk '{printf("%s: %s | ",$1,$2); system("host "$2)}'
Найти самые "активные" IP. Для лога Nginx. "-n 10000" - сколько последних строк лога анализировать. "n -15" - сколько выдавать топчик IP. Я добавил в команду еще определение имени по IP для облегчения анализа.
Далее блочим неугодных:
iptables -I INPUT -s {IP} -j DROP
Метод применим, если DDOSят HTTP-запросами и не очень большими сетями. Для Nginx также рекомендую настроить limit_req_zone.
Отправлю немного своих лучей гнева в сторону reg.ru. Вы зачем мне присылаете счета напрямую в мобильный банк Сбербанка? Уж не знаю, когда и как я спалил вам свой номер телефона (видимо, через него идет связка), но с чего вы взяли, что вправе выбирать за меня способ оплаты и тарабанить мой личный счет, в то время как услуги у вас я заказываю не для собственных нужд. Плюс ко всему, однажды произошел какой-то глюк и мне эти счета, со всеми вытекающими радостями в виде СМС, выставлялись всю ночь напролет.