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

Под DOS или вам нужно больше памяти?

У меня есть сервер centos 6 с apache2, php и MySQL. В конфигурации apache есть несколько виртуальных сайтов, так как на сервере работают шесть сайтов, три из шести сайтов используют MySQL, а три других - нет.

Недавно я обнаружил, что сайты, использующие MySQL, вылетают - сообщают об ошибке «невозможно подключиться к базе данных sql ..»

После просмотра журналов, похоже, что есть несколько запущенных экземпляров apache, которые съедают всю мою память - это заставляет сервер убивать процесс MySQL, чтобы не дать серверу умереть, а через несколько секунд он восстанавливается (в некоторых случаях Мне нужно отремонтировать некоторые столы)

Чтобы попытаться контролировать ситуацию, я снизил max_connections до 100, но это не помогло.

Прямо сейчас я не уверен, нужно ли мне больше памяти (установлен 1 ГБ) или я подвергся DoS-атаке. Честно говоря, мы ожидаем больших объемов трафика на сервер, но как я могу узнать, постоянно ли попадает в поле один IP-адрес?

Я вставил некоторые выходные данные во время "нормальной работы" ниже, если это помогает

free -m
             total       used       free     shared    buffers     cached
Mem:           992        771        221          0         15         87
-/+ buffers/cache:        668        323
Swap:          976         39        937

ps aux | grep apache
apache   17148  0.1  3.4 430836 35036 ?        S    06:34   0:10 /usr/sbin/httpd
apache   17150  0.1  3.3 430592 34560 ?        S    06:34   0:12 /usr/sbin/httpd
apache   17157  0.1  3.3 333192 33896 ?        S    06:34   0:13 /usr/sbin/httpd
apache   17164  0.1  3.3 333712 33984 ?        S    06:34   0:09 /usr/sbin/httpd
apache   17167  0.1  3.4 430576 34584 ?        S    06:34   0:12 /usr/sbin/httpd
apache   17168  0.1  3.3 430064 34312 ?        S    06:34   0:11 /usr/sbin/httpd
apache   17176  0.1  3.3 430564 34560 ?        S    06:34   0:11 /usr/sbin/httpd
apache   17184  0.1  3.4 432124 35500 ?        S    06:34   0:08 /usr/sbin/httpd
apache   17186  0.1  3.3 430088 34384 ?        S    06:34   0:14 /usr/sbin/httpd
apache   17188  0.1  3.3 333464 34028 ?        S    06:34   0:13 /usr/sbin/httpd
apache   17190  0.1  3.4 430548 34616 ?        S    06:34   0:08 /usr/sbin/httpd
apache   17193  0.1  3.3 333372 33548 ?        S    06:34   0:12 /usr/sbin/httpd
apache   17195  0.1  3.4 333716 34672 ?        S    06:34   0:11 /usr/sbin/httpd
apache   17225  0.1  3.3 430044 33584 ?        S    06:35   0:10 /usr/sbin/httpd
apache   17239  0.1  3.4 430568 34796 ?        S    06:35   0:11 /usr/sbin/httpd
apache   17241  0.1  3.3 430480 34284 ?        S    06:35   0:11 /usr/sbin/httpd
apache   17290  0.1  3.4 430948 34824 ?        S    06:35   0:10 /usr/sbin/httpd
apache   21095  0.1  3.1 331300 32344 ?        S    08:15   0:01 /usr/sbin/httpd
apache   30858  0.1  3.2 430148 33304 ?        S    Aug04   0:49 /usr/sbin/httpd
apache   31996  0.1  3.2 430168 33480 ?        S    Aug04   0:48 /usr/sbin/httpd

Похоже, вам нужно больше оперативной памяти. Вы также можете уменьшить максимальное количество процессов HTTPd или максимальный параметр памяти для PHP.

Я согласен с @PauRudnitskiy, но всего несколько вещей, на которые вы должны обратить внимание, прежде чем просто уделять больше внимания проблеме.

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

Также проверьте, какова нагрузка на вашу систему, используя следующую команду

uptime

Это будет выглядеть примерно так

02:22:35 до 4:07, 4 пользователя, средняя нагрузка: 0,10, 0,08, 0,06

если числа после "средняя нагрузка"Тогда посмотрите крупно, чтобы показать, что вы атакованы. Просто разделите наибольшее число на количество ядер процессора, которое у вас есть. Если результат больше 1, это означает, что ваш процессор заполнен.

Наконец, просто чтобы добавить то, что я вам показываю, на самом деле, чтобы увидеть, находитесь ли вы под скачком трафика или под дополнительной нагрузкой. Вам нужно будет посмотреть свои журналы apache, чтобы попытаться увидеть, если вы подвергаетесь какой-либо атаке, обычно это видно по тому же IP-адресу, который отправляет множество запросов на страницу, и другие вещи, которые обычные пользователи не будут делать.