Нагрузка на хостинге

Матеріал з Wiki.Zina
(Перенаправлено з Нагрузка)
Перейти до навігації Перейти до пошуку

Параметры хостинга

Что делать, если на хостинге высокая нагрузка.

  • Админы: Виктор Карабедянц 067 52-377-57, скайп vk_psix
  • Техподдержка датацентра Воля (круглосуточно): тел.: (044) 585-33-51, support@dc.volia.com — писать с support@zina.com.ua.
    Сервер zina. Номер договора: 2792 от 26.12.2013, ЧП "Студия "Зина дизайн"

Перезапуск DNS

[ред. | ред. код]
service named restart

Как мониторить нагрузку

[ред. | ред. код]
  1. Скрипт мониторинга сервера: http://vintage.zina.com.ua/ser-stat/serverstatus.php
    • Логин: zina
    • Пароль: status
  2. Munin http://91.197.131.59/munin_view
    • user: munin
    • pass: KecdeavJor
  3. Процессы, Сеть, Диск: atop
  4. Сеть: iftop
  5. Процессор: top, среднее за сутки cat /proc/loadavg
  6. Свободное место: df -h
  7. Атака:
    • проверка HTTP flood: netstat -plan | grep ':80 ' | grep -c tcp — число одновременных запросов к веб-серверу. Обычное состояние для среднего сервера — до 200—400 запросов. В случае HTTP flood — более тысячи.
    • отслеживание через nginx: cat /var/log/nginx/access.log|awk '{print $2}'|sort|uniq -c|sort -n|tail -20
    • кто атакует сайт example.com: cat /var/log/nginx/access.log|grep example.com|awk '{print $1}'|sort|uniq -c|sort -n|tail -20
  8. tail -f /var/log/nginx/access.log
  9. MySQL: vi + /tmp/mysql-slow.log
  10. MySQL: mysqladmin processlist
    или, чтобы обновлялся автоматически раз в 5 секунд: mysqladmin -i 5 processlist
  11. Apache: http://zina.com.ua:8080/server-status?refresh=5 (предварительно внести свой IP (whatismyip.com, 2ip.ru) в конфиг vi /etc/apache2/apache2.conf
<Location /server-status>
 SetHandler server-status
 Order Deny,Allow
 Deny from all
 Allow from 92.112.211.208
</Location>

и перезапустить Apache /etc/init.d/apache2 restart)

Сервисы мниторинга

[ред. | ред. код]

DDOS на определенный домен

[ред. | ред. код]

блокировка через nginx добавить в /etc/nginx/nginx.conf (в раздел location / домена) строчку

 deny all;

или так (блокируем пользователя avalinvest):

/usr/local/ispmgr/sbin/mgrctl user.disable elid=avalinvest

Останавливаем «тяжелые» процессы

[ред. | ред. код]

Если top показывает load average больше 10, то останавливаем процессы, которые обычно вызывают наибольшую нагрузку:

/etc/apache2/apache2.conf
/etc/init.d/apache2 stop
/etc/init.d/mysql stop
/etc/init.d/nginx stop

Снова запустить процесс — start, перезапустить — restart

/etc/init.d/apache2 restart
/etc/init.d/nginx restart
/etc/init.d/mysql restart

Количество открытых файлов

[ред. | ред. код]
lsof | grep PROCESS | wc -l

PROCESS - имя процесса, как правило соответствует имени исполняемого файла (nginx, apache2, mysqld, ...). Имя процесса можно посмотреть в top или ps -x.

Для apache2 нормальное значение ~6000-7000, при пиковых нагрузках до 10000. Для nginx ~500-750.

Текущее ограничение на количество открытых файлов можно посмотреть так:

ulimit -a

- по умолчанию стоит 1024 в строке open files (-n) 1024.

Исправить можно, добавив в файл /etc/security/limits.conf такую строку:

*               hard    nofile  32000

Свободное место на жестком диске

[ред. | ред. код]

Иногда нагрузка остается очень высокой из-за того, что закончилось свободное место на жестких дисках.

Как посмотреть свободное место: Место на жестком диске

Это может произойти из-за ошибок при создании бэкапов или разрастании лог-файлов.

  • Бэкапы здесь: /var/backups/userdata/
  • Лог файлы здесь: /var/www/httpd-logs

Очистить слишком большой лог-файл:

cat /dev/null >/var/www/httpd-logs/obzor.com.ua.error.log
cat /dev/null >/var/www/shopbuilder/data/hg/data
> shopsupport_error.log

Найти все файлы аккаунта demping:

find / -group demping |grep -v www

Отправка почты

[ред. | ред. код]
echo "Test mail send" | mail -s "Test mail sending" -r "info@zina.com.ua" mail_to

Спам и рассылки

[ред. | ред. код]

Очередь писем:

/var/spool/postfix/active/ 

в любом из писем очереди ищем (Postfix, from userid

должен быть ID пользоватеся иногда в заголовках и имя. ID я потом искал в файле паролей:

/etc/passwd

С ним надо быть максимально осторожным - это может привести к неработоспособности сервера.

Логирование рассылаемой скриптами почты:

vim /etc/php.ini

Включить логирование и указать путь:

mail.add_x_header = On
; Log all mail() calls including the full path of the script, line #, to address and headers
mail.log = /var/log/php_mail.log

Просмотр лог-файла почты из скриптов в реальном времени:

tail -f /var/log/php_mail.log
cat /var/log/maillog | grep script 

Спам из скриптов

[ред. | ред. код]

Joomla

Переименовать компонент /components/com_mailto


Старое

  • tail -f /var/log/exim4/mainlog - смотреть лог почтового сервера в реальном времени
  • exim -bp - посмотреть почтовую очередь
  • exim -bp | exiqsumm -c -s | head - вывести статистку и посортировать по доменам и максимальному количеству сообщений
  • exiqgrep -b -f 'sender_domain' -r 'recipient_domain' | awk '{print $3}' | sort | uniq -c | sort -n | tail - посмотреть кто отправляет больше всех с этого домена
  • exiqgrep -i -f '<spamer>' | xargs exim -Mrm - удалить очередь сообщений от спамера

См. Exim

Вирусы

[ред. | ред. код]

Он-лайн проверка на вирусы

[ред. | ред. код]

Антивирус, установленный на сервере zina. Инструкция на русском

Сканировать рекурсивно, начиная с текущей папки:

clamscan -r -i .

где параметры означают --recursive=yes --infected

clamscan --recursive=yes --infected --exclude-dir='^/sys|^/proc|^/dev|^/lib|^/bin|^/sbin' /

AI-Bolit — это бесплатный сканер вирусов, хакерских шеллов, бэкдоров, спам-рассыльщиков и других вредоносных скриптов на хостинге.

Поиск вирусов из командной строки

[ред. | ред. код]

Пример поиска подозрительных php-файлов, содержащих очень длинные строки OpenNET

Конфиги

[ред. | ред. код]
  • apache
/etc/httpd/conf/httpd.conf
  • nginx
/etc/nginx/nginx.conf
/usr/local/nginx/conf/nginx.conf
/usr/local/nginx/logs/access.log
/usr/local/nginx/logs/error.log
/usr/local/nginx/logs/nginx.pid 
  • mysql /etc/my.cnf
  • php
/etc/php.ini
/opt/php52/etc
  • php_fastcgi /etc/php5.2.5/fpm/php-fpm.conf

Лог-файлы

[ред. | ред. код]
  • apache:
/var/log/httpd/*
/var/wwwhttpd-logs
  • nginx /usr/local/nginx5.3.5/logs/*.log
  • mysql /var/log/mysqld.log
  • php в логе сайта. Логи сайтов (nginx) настраиваются в соответствующих конфигах (для nginx)
  • php_fastcgi /usr/local/php5.2.5/logs/php-fpm.log

Скрипты

[ред. | ред. код]

На сервере установлен платный скрипт (20$) antidos:

usr/local/antidos/

Скрипт смотрит количество подключений с одного IP адреса, если превышено, то блокирует его фаерволом и шлёт письмо. Конфигурация в файле:

/usr/local/antidos/antidos.conf

Скрипт запускается коммандой

/usr/local/antidos/antidos start

Заблокированные пользователи в iptables:

iptables -L

При возникновени вопросов обращаться к разработчику Олег «Химик» me@himik.org.ru, ICQ 392395.

Чтобы переустановить antidos, что нужно сделать?
(13:24:52)  Химик:  его не нужно переустанавливать.
все файлы лежат на /usr/local/antidos
Если что, то у меня есть резервная копия конфигурации для вашего сервера.
Если возникнут проблемы, то пишите мне

Мелкий ddos или вирус

[ред. | ред. код]

На страницу w-s-b.biz/msgboard/ (несуществующую) было много запросов. Баним их в iptables:

tail -f /var/www/httpd-logs/w-s-b.biz.access.log | awk '/msgboard/ { print "/sbin/iptables -A INPUT -s " $1 " -j DROP" }'  | sh

Включение/выключение Drush

[ред. | ред. код]

В /etc/php.ini находим disable_functions. Это — функции которые считаются небезопасными.

Сняв комментарий — включаем, закомментируем — отключим их.

Найти измененные файлы

[ред. | ред. код]

Поиск файлов, которые были модифицированы в последние 60 минут в директории /target_directory и во всех ее поддиректориях:

find /target_directory -type f -mmin -60

Поиск файлов, которые были модифицированы в последние 2 дня в директории /target_directory и во всех ее поддиректориях:

find /target_directory -type f -mtime -2

Поиск файлов, которые были модифицированы в последние 2 дня в директории /target_directory и ее поддиректориях глубиной до 3 уровня:

find /target_directory -type f -mtime -2 -depth -3

Вы также можете задать диапазон времени модификации. Поиск файлов, которые были модифицированы в последние 7 дней, но не позднее чем 3 дня назад:

find /target_directory -type f -mtime -7 ! -mtime -3

Все эти команды выводят только путь к найденным файлам. Вы можете также детализировать вывод информации с помощью опции "-exec". Поиск файлов в директории /target_directory (и во всех ее поддиректориях), которые были модифицированы в последние 60 минут и вывод атрибутов файлов:

find /target_directory -type f -mmin -60 -exec ls -al {} \;

В качестве альтернативы вы можете использовать для этого команду xargs:

find /target_directory -type f -mmin -60 | xargs ls -l

Обратите внимание, что эти команды найдут также файлы, созданные в заданный промежуток времени.

Посмотреть измененные файлы за исключнием дирректории cache отсортированные по дате. Те что изменялись за последние 40 дней

find /var/www/pspland/data/www/pspland.com.ua -type f -mtime -40 ! -path "/var/www/pspland/data/www/pspland.com.ua/sites/userdata/pspland.com.ua/cache/*" -printf "%T@ %Tc %p\n" | sort -n

См. также

[ред. | ред. код]

Ссылки

[ред. | ред. код]

Мониторинг

Безопасность