Назад | Перейти на главную страницу

Восстановление сервера после отказа в обслуживании

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

Детали атаки:

Злоумышленник намеренно или непреднамеренно отправил тысячи поисковых запросов, используя URL-адрес поискового запроса приложения, в течение нескольких секунд. Похоже, сервер был перегружен, и это заставило базу данных записать это сообщение:

121118 20:28:55 InnoDB: Initializing buffer pool, size = 512.0M
InnoDB: mmap(549453824 bytes) failed; errno 12

Характеристики сервера: 1,5 ГБ выделенной памяти

Есть ли здесь какие-то очевидные неправильные конфигурации, которые мне не хватает?

**mysql.log**
121118 20:28:54 mysqld_safe Number of processes running now: 0
121118 20:28:54 mysqld_safe mysqld restarted
121118 20:28:55 [Warning] option 'slow_query_log': boolean value '/var/log/mysqld.slow.log' wasn't recognized. Set to OFF.
121118 20:28:55 [Note] Plugin 'FEDERATED' is disabled.
121118 20:28:55 InnoDB: The InnoDB memory heap is disabled
121118 20:28:55 InnoDB: Mutexes and rw_locks use GCC atomic builtins
121118 20:28:55 InnoDB: Compressed tables use zlib 1.2.3
121118 20:28:55 InnoDB: Using Linux native AIO
121118 20:28:55 InnoDB: Initializing buffer pool, size = 512.0M
InnoDB: mmap(549453824 bytes) failed; errno 12
121118 20:28:55 InnoDB: Completed initialization of buffer pool
121118 20:28:55 InnoDB: Fatal error: cannot allocate memory for the buffer pool
121118 20:28:55 [ERROR] Plugin 'InnoDB' init function returned error.
121118 20:28:55 [ERROR] Plugin 'InnoDB' registration as a STORAGE ENGINE failed.
121118 20:28:55 [ERROR] Unknown/unsupported storage engine: InnoDB
121118 20:28:55 [ERROR] Aborting

**ulimit -a**
core file size          (blocks, -c) 0
data seg size           (kbytes, -d) unlimited
scheduling priority             (-e) 0
file size               (blocks, -f) unlimited
pending signals                 (-i) 13089
max locked memory       (kbytes, -l) 64
max memory size         (kbytes, -m) unlimited
open files                      (-n) 1024
pipe size            (512 bytes, -p) 8
POSIX message queues     (bytes, -q) 819200
real-time priority              (-r) 0
stack size              (kbytes, -s) 8192
cpu time               (seconds, -t) unlimited
max user processes              (-u) 1024
virtual memory          (kbytes, -v) unlimited
file locks                      (-x) unlimited

**httpd.conf**
StartServers 10
MinSpareServers 8
MaxSpareServers 12
ServerLimit 256
MaxClients 256
MaxRequestsPerChild 4000

**my.cnf**
innodb_buffer_pool_size=512M
# Increase Innodb Thread Concurrency = 2 * [numberofCPUs] + 2
innodb_thread_concurrency=4
# Set Table Cache
table_cache=512
# Set Query Cache_Size
query_cache_size=64M
query_cache_limit=2M
# A sort buffer is used for optimizing sorting
sort_buffer_size=8M
# Log slow queries
slow_query_log=/var/log/mysqld.slow.log
long_query_time=2
#performance_tweak
join_buffer_size=2M

**php.ini**
memory_limit = 128M
post_max_size = 8M

Похоже, вам следует оптимизировать свои SQL-запросы и / или использовать некоторую защиту CAPTCHA, чтобы предотвратить автоматическое злоупотребление. Вы также можете установить ограничения ресурсов mysqli.max_persistent, mysqli.max_links (PHP) и / или MAX_USER_CONNECTIONS, MAX_QUERIES_PER_HOUR, MAX_CONNECTIONS_PER_HOUR (mysql).

ограничения ресурсов mysql

ограничения ресурсов клиента mysql (php)