LINUX.ORG.RU
решено ФорумAdmin

Поисковы роботы? грузят сервер

 , , ,


1

3

На сервере из 24Гб ОЗУ занято 19Гб. Обычно занято примерно 7Гб. Смотрю логи nginx, вижу, что идёт сканирование от mail.ru. Неужели поисковой робот может так загрузить сервер? И это уже не первый раз, когда-то тоже было, прошло само по себе.

Как решать?

Перезагружал апач и nginx, толку ноль. Теперь прошло опять само по себе. Среди сканирующих ботов вижу ещё спутник, bing и yandex.

★★★★★

Последнее исправление: Amet13 (всего исправлений: 2)

Ответ на: комментарий от goingUp

Сейчас вижу, что роботы всё ещё сканируют, но нагрузка на сервер упала с 19Гб до 4Гб.

Amet13 ★★★★★
() автор топика
Ответ на: комментарий от Amet13

Ну вообще-то нужен был один сервис, который кушает память. Но вангую, что это apache, и что там mpm_prefok и что MaxRequestWorkers выставлен конский.

goingUp ★★★★★
()
Ответ на: комментарий от goingUp
/etc/apache2/apache2.conf | grep MaxReq
# MaxRequestsPerChild: maximum number of requests a server process serves
    MaxRequestsPerChild   0
# MaxRequestsPerChild: maximum number of requests a server process serves
    MaxRequestsPerChild   0
# MaxRequestsPerChild: maximum number of requests a server process serves
    MaxRequestsPerChild   0
Amet13 ★★★★★
() автор топика
Последнее исправление: Amet13 (всего исправлений: 1)

Задаешь вопросы, на которые ответить можешь только ты. Глянь лог запросов, да протестируй их сам через ab, к примеру. Найдешь проблемный url - дальше уже анализируй код скрипта

ovax ★★★
()
Ответ на: комментарий от goingUp
Уже установлена самая новая версия apache2-mpm-prefork.
apache2-mpm-prefork установлен вручную.
ls /etc/apache2/mods-enabled/mpm_prefork.conf
ls: невозможно получить доступ к /etc/apache2/mods-enabled/mpm_prefork.conf: Нет такого файла или каталога

ls /etc/apache2/mods-available/mpm_prefork.conf
ls: невозможно получить доступ к /etc/apache2/mods-available/mpm_prefork.conf: Нет такого файла или каталога
Amet13 ★★★★★
() автор топика
Ответ на: комментарий от Amet13

чтобы посмотреть, используется ли mpm_prefork
apachectl -t -D DUMP_MODULES
чтобы найти его настройки
grep -R mpm_prefork /etc/apache2

goingUp ★★★★★
()
Ответ на: комментарий от xtraeft

Это сейчас свободно, а тогда было свободно 5Гб. Во вторых достучаться до сайтов было невозможно, а по ssh с трудом.

Amet13 ★★★★★
() автор топика
Ответ на: комментарий от Amet13

Во вторых достучаться до сайтов было невозможно, а по ssh с трудом.

Ну неплохо было бы какие то графики показать, или привести цифры дисковой нагрузки, cpu и тд, а не просто «занято 19Гб.».
Еще было бы хорошо услышать что там за сайты крутятся.

xtraeft ★★☆☆
()
Ответ на: комментарий от Apple-ch

Во время того, как сервер лагал было столько:

cat /var/log/nginx/access.log | grep "14:30" | wc -l
399
Сейчас столько:
cat /var/log/nginx/access.log | grep "16:03" | wc -l
163

Amet13 ★★★★★
() автор топика
Ответ на: комментарий от goingUp

Судя по всему никакой.

# apachectl -t -D DUMP_MODULES
 http_module (static)
 so_module (static)
 actions_module (shared)
 alias_module (shared)
 auth_basic_module (shared)
 authn_file_module (shared)
 authz_default_module (shared)
 authz_groupfile_module (shared)
 authz_host_module (shared)
 authz_user_module (shared)
 autoindex_module (shared)
 cgi_module (shared)
 deflate_module (shared)
 dir_module (shared)
 env_module (shared)
 fcgid_module (shared)
 include_module (shared)
 mime_module (shared)
 negotiation_module (shared)
 php5_module (shared)
 reqtimeout_module (shared)
 rewrite_module (shared)
 rpaf_module (shared)
 setenvif_module (shared)
 status_module (shared)
 suexec_module (shared)
 vhost_alias_module (shared)
 ispmgr_module (shared)
Syntax OK

Amet13 ★★★★★
() автор топика
Ответ на: комментарий от Amet13

Кешер опкода какой нибудь стоит? Если нет, то ставь. Я юзаю xcache 3.
Кеширование на стороне cms тоже не помешает.

И это точно мейл.ру бот? Сайты на популярных CMS очень часто брутят. В логах ничего подозрительного нет?

xtraeft ★★☆☆
()
Ответ на: комментарий от xtraeft

Сайты на популярных CMS очень часто брутят.

Такое есть, я это сразу замечаю и применяю меры. Кэш есть.

Amet13 ★★★★★
() автор топика
Ответ на: комментарий от goingUp

Хм... Вроде как есть, но никаких конфигов не вижу...

#  apachectl -V
Server version: Apache/2.2.22 (Debian)
Server built:   Feb  1 2014 21:26:04
Server's Module Magic Number: 20051115:30
Server loaded:  APR 1.4.6, APR-Util 1.4.1
Compiled using: APR 1.4.6, APR-Util 1.4.1
Architecture:   64-bit
Server MPM:     Prefork
  threaded:     no
    forked:     yes (variable process count)
Server compiled with....
 -D APACHE_MPM_DIR="server/mpm/prefork"
 -D APR_HAS_SENDFILE
 -D APR_HAS_MMAP
 -D APR_HAVE_IPV6 (IPv4-mapped addresses enabled)
 -D APR_USE_SYSVSEM_SERIALIZE
 -D APR_USE_PTHREAD_SERIALIZE
 -D APR_HAS_OTHER_CHILD
 -D AP_HAVE_RELIABLE_PIPED_LOGS
 -D DYNAMIC_MODULE_LIMIT=128
 -D HTTPD_ROOT="/etc/apache2"
 -D SUEXEC_BIN="/usr/lib/apache2/suexec"
 -D DEFAULT_PIDLOG="/var/run/apache2.pid"
 -D DEFAULT_SCOREBOARD="logs/apache_runtime_status"
 -D DEFAULT_LOCKFILE="/var/run/apache2/accept.lock"
 -D DEFAULT_ERRORLOG="logs/error_log"
 -D AP_TYPES_CONFIG_FILE="mime.types"
 -D SERVER_CONFIG_FILE="apache2.conf"

Amet13 ★★★★★
() автор топика
Ответ на: комментарий от Amet13

Даже если в конфиге нет значения, используется значение по умолчанию. Нужно его создать или скопировать с другого дебиана и указать MaxRequestWorkers. Эта настройка ограничивает число процессов апача, предотвращая занимание всей памяти. Запросы сверх лимита будут ставиться в очередь.

goingUp ★★★★★
()
Ответ на: комментарий от goingUp

Нужно его создать или скопировать с другого дебиана и указать MaxRequestWorkers.

Есть другой дебиан, на нём всё точно также.

Amet13 ★★★★★
() автор топика
Ответ на: комментарий от goingUp

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

goingUp ★★★★★
()
Ответ на: комментарий от goingUp

Нет, проблема в большом количестве процессов апача. Я имел ввиду, что на другом сервере тоже дебиан и апач по умолчанию и там mpm_prefork тоже установлен, но его настроек нет.

Я правильно понял, что достаточно просто добавить в apache.conf строчку MaxRequestWorkers с каким-то значением.

Amet13 ★★★★★
() автор топика
Ответ на: комментарий от goingUp

Скачал, посмотрел ничего нет про MaxRequestWorkers. ЧЯДНТ?

Amet13 ★★★★★
() автор топика
Ответ на: комментарий от goingUp

Спасибо. Нашёл. Значение по умолчанию 150. Так же как и в дефолтном конфиге.

Как расчитать оптимальное значение параметра?

Amet13 ★★★★★
() автор топика
Ответ на: комментарий от Amet13

но никаких конфигов не вижу.

Как так?

# ls -l /etc/apache2/
total 68
-rw-r--r-- 1 root root  7994 Feb  2 01:22 apache2.conf
drwxr-xr-x 2 root root  4096 May 23 04:30 conf.d
-rw-r--r-- 1 root root  1169 Feb  2 01:22 envvars
-rw-r--r-- 1 root root     0 May 23 04:27 httpd.conf
-rw-r--r-- 1 root root 31063 Feb  2 01:22 magic
drwxr-xr-x 2 root root  4096 May 23 09:40 mods-available
drwxr-xr-x 2 root root  4096 May 23 09:40 mods-enabled
-rw-r--r-- 1 root root   750 Feb  2 01:22 ports.conf
drwxr-xr-x 2 root root  4096 Jun 12 15:28 sites-available
drwxr-xr-x 2 root root  4096 May 23 04:27 sites-enabled

# ls -l /etc/apache2/conf.d/
total 16
-rw-r--r-- 1 root root  269 Feb  2 01:22 charset
lrwxrwxrwx 1 root root   45 May 23 04:29 javascript-common.conf -> /etc/javascript-common/javascript-common.conf
-rw-r--r-- 1 root root 3296 Feb  2 01:22 localized-error-pages
-rw-r--r-- 1 root root  143 Feb  2 01:22 other-vhosts-access-log
lrwxrwxrwx 1 root root   28 May 23 04:30 phpmyadmin.conf -> ../../phpmyadmin/apache.conf
-rw-r--r-- 1 root root 1424 Feb  2 01:22 security

deep-purple ★★★★★
()
Ответ на: комментарий от deep-purple

Естественно я имел ввиду конфигов, относящихся к mpm_prefork.

Amet13 ★★★★★
() автор топика
Ответ на: комментарий от Amet13

Я обычно ставлю около 10*количество ядер. Посмотри размер одного процесса апача, и расчитай исходя из того, сколько памяти не жалко под него (обычно имеет смысл больше памяти давать мускулу). Еще должно быть достаточно памяти на кеш ФС.

goingUp ★★★★★
()
Ответ на: комментарий от Amet13

Как расчитать оптимальное значение параметра?

Я чутка погуглил, говорят - методом тыка

deep-purple ★★★★★
()
Ответ на: комментарий от Amet13

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

goingUp ★★★★★
()
Ответ на: комментарий от Amet13

Понятно. Получается, сайт не рассчитан даже на такую маленькую нагрузку? Если нет, и оптимизация не планируется, то единственный вариант резать особо агрессивных роботов на уровне нгикса или даже фаервола.

Apple-ch ★★
()
Ответ на: комментарий от Apple-ch

Оптимизация планируется. Как раз хочу этим заняться.

Amet13 ★★★★★
() автор топика
Ответ на: комментарий от Apple-ch

то единственный вариант резать особо агрессивных роботов на уровне нгикса или даже фаервола.

«Отличная идея» - резать SE ботов :)

xtraeft ★★☆☆
()

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

а mail.ru в бан - он ненужен.

reprimand ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.