Joker-jar

Joker-jar
Рейтинг
171
Регистрация
26.08.2010

Очевидно, что у вас title генерируется JS.

1. 40к в сутки

2. Самопис

3. Выделенный сервер с Xeon, 16Gb ОЗУ, nginx + php7 + mysql5.6 + Redis

Сам движок справлялся на ура, было хорошее кеширование посредством Redis. В какой-то момент пришлось увеличить лимиты открытых файлов для Nginx (вывались ошибки в пик трафика, т.к. по умолчанию лимит 1024 файла). PHP-сесии были также перенесены в Redis.

Главная проблема - нагрузка на диски. Были две нерейдовых диска, по которым размазан контент. Сайт - видеотуб, с постоянно практически забитым каналом 1Gbps, дискам было тяжеловато. При этом на одном из этих дисков размещалась и система. Часто таскал части контента с одного диска на другой, чтобы уровнять нагрузку, /var/lib/mysql в какое-то время тоже пришлось перенести на второй диск. В общем, напрашивалась конфигурация с отдельным диском для системы.

В общем, ситуацию в итоге решил приобритением второго идентичного сервера, ежедневным зеркалированием на него всех данных (заодно и решился вопрос бекапа, которого, к слову, не было). Движок юзерам отдавал контент то с первого, то со второго сервера, распределяя тем самым нагрузку на канал и диски.

Ну так ты первым методом прогрел процессор, конечно второй код быстрее начнет выполняться.

не годится

Потому что надо передавать одним параметрам ключи, а другим - значения. Если имеем в распоряжении массив как в стартпосте.

Жуткий боян, но все же. Их и новая версия недалеко ушла.

Да даже str_replace позволяет:

Если search или 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. Вы зачем мне присылаете счета напрямую в мобильный банк Сбербанка? Уж не знаю, когда и как я спалил вам свой номер телефона (видимо, через него идет связка), но с чего вы взяли, что вправе выбирать за меня способ оплаты и тарабанить мой личный счет, в то время как услуги у вас я заказываю не для собственных нужд. Плюс ко всему, однажды произошел какой-то глюк и мне эти счета, со всеми вытекающими радостями в виде СМС, выставлялись всю ночь напролет.

Всего: 970