Нагрузка на хостинге
Что делать, если на хостинге высокая нагрузка.
- Админы: Виктор Карабедянц 067 52-377-57, скайп vk_psix
- Техподдержка датацентра Воля (круглосуточно): тел.: (044) 585-33-51, support@dc.volia.com — писать с support@zina.com.ua.
Сервер zina. Номер договора: 2792 от 26.12.2013, ЧП "Студия "Зина дизайн"
service named restart
- Скрипт мониторинга сервера: http://vintage.zina.com.ua/ser-stat/serverstatus.php
- Логин: zina
- Пароль: status
- Munin http://91.197.131.59/munin_view
- user: munin
- pass: KecdeavJor
- Процессы, Сеть, Диск: atop
- Сеть: iftop
- Процессор:
top, среднее за суткиcat /proc/loadavg - Свободное место:
df -h - Атака:
- проверка 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
- проверка HTTP flood:
tail -f /var/log/nginx/access.log- MySQL:
vi + /tmp/mysql-slow.log - MySQL:
mysqladmin processlist
или, чтобы обновлялся автоматически раз в 5 секунд:mysqladmin -i 5 processlist - 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)
- http://uptimerobot.com/ — free including 50 monitors, 2 months of log, 5 minute monitoring intervals
- http://statuscake.com/ — every 5 minutes under FREE account
- uptimedoctor.com — $0.40/SMS
блокировка через 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 Если что, то у меня есть резервная копия конфигурации для вашего сервера. Если возникнут проблемы, то пишите мне
На страницу 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
В /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
- Основные команды Linux
- Оптимизация Apache
- Оптимизация Drupal
- Оптимизация MySQL
- Оптимизация PHP
- Сервер попал в спам-списки
- Тестирование железа под Linux
- Первые 5 минут устранения неполадок на Linux-сервере
- DDOS: что делать?
- Скрипт блокировки спамеров на www средствами ipfw table и nginx
- Полезные однострочники для администратора веб-сервера
Мониторинг
- Полезные пакеты, которые следует установить на сервер для диагностики сбоев
- Инструменты для мониторинга производительности
- Определяем нагрузку на сервер Apache
- Cacti — Мониторинг сетевых устройств
- Мониторинг web сервера Apache с помощью Cacti
- 7 консольных инструментов для мониторинга системы
Безопасность
- Укрепление защиты сервера под Linux — руководство IBM для Ubuntu Server Edition
- Безопасность Друпал. Как добиться надёжной работы сайта без взломов?