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

Загрузка процессора неуклонно растет, и MySQL 1,5 ГБ открывает удаленный файл в каталоге temp

У меня есть сервер CentOS, на котором работает cPanel (сервер общего хостинга), у меня раньше были проблемы с MySQL, и я потратил некоторое время на его настройку и настройку, пока, наконец, нагрузка не упала (со 170% !! до 10% или около того), пока 2 дня назад MySQL не начал вести себя как сумасшедший!

"Завис" сервер, в частности Apache и MySQL! Я зашел и проверил /tmp каталог с df и он использовал 100% доступного пространства (2 ГБ), я запустил du -h и он сообщил, что только 129 МБ использованного пространства! Я понятия не имел, куда делось другое пространство, я пробовал lsof +L1 чтобы увидеть открытые файлы, и он перечислил целую кучу открытых удаленных файлов во временном каталоге (у большинства из них был нулевой размер), за исключением одного, принадлежащего MySQL, который имел 1,5 ГБ, я убил процесс, и пространство было освобождено.

Я не знал, что это за файл, так как не знаю, как получить к нему доступ, так что же послужило причиной этого файла? И что обычно должно выводить lsof + L? это нормально?

httpd    6450 nobody  559w   REG    8,2        0     0 2492169 /usr/local/apache/logs/ssl_mutex (deleted)
httpd    6450 nobody  560u   REG    8,4        0     0     151 /tmp/ZCUDj2EaZi (deleted)
httpd    6490 nobody  559w   REG    8,2        0     0 2492169 /usr/local/apache/logs/ssl_mutex (deleted)
httpd    6490 nobody  560u   REG    8,4        0     0     151 /tmp/ZCUDj2EaZi (deleted)
httpd    6528 nobody  559w   REG    8,2        0     0 2492169 /usr/local/apache/logs/ssl_mutex (deleted)
httpd    6528 nobody  560u   REG    8,4        0     0     151 /tmp/ZCUDj2EaZi (deleted)
mysqld  46096  mysql    4u   REG    8,4        0     0     141 /tmp/ibvvhkQX (deleted)
mysqld  46096  mysql    5u   REG    8,4      432     0     143 /tmp/ibrHhJ9J (deleted)
mysqld  46096  mysql    6u   REG    8,4        0     0     144 /tmp/ibsWv8sw (deleted)
mysqld  46096  mysql    7u   REG    8,4        0     0     145 /tmp/ibjEeVSi (deleted)
mysqld  46096  mysql   17u   REG    8,4        0     0     146 /tmp/ibFo67JJ (deleted)
httpd   47389   root  559w   REG    8,2        0     0 2492169 /usr/local/apache/logs/ssl_mutex (deleted)
httpd   47389   root  560u   REG    8,4        0     0     151 /tmp/ZCUDj2EaZi (deleted)

Там около 100 файлов, но я не собираюсь их все публиковать.

Это не сильно загруженный сервер, и он даже ОЧЕНЬ мощный для обслуживаемых веб-сайтов, так что это, безусловно, неправильная конфигурация или проблема с ошибкой, вот информация о моем сервере:

Процессор: Intel (R) Xeon (R) CPU E31230 @ 3,20 ГГц / 8 МБ кэш-памяти ОЗУ: 16 ГБ ОС: CENTOS 6.4 MySQL: 5.1.68

Иногда загрузка ЦП MySQL превышает 100%, неуклонно увеличиваясь, пока mysqladmin show processlist показывает только несколько процессов, и это мой файл my.cnf:

max_connections=500
innodb_file_per_table=1
local-infile=0
slow_query_log
key_buffer_size=2G
query_cache_limit=4M
query_cache_size=32M
join_buffer_size=2M
tmp_table_size=256M
max_heap_table_size=256M
thread_cache_size=4
table_cache=256
innodb_buffer_pool_size=512M

И еще одна важная вещь, о которой следует упомянуть, это то, что своп иногда используется, пока у меня еще много свободной физической памяти, и я думаю, что этого не должно происходить.

По какой-то причине я думаю, что на сервере иногда происходят некоторые DoS-атаки, я не знаю, связано ли это, но я знаю это, потому что иногда, когда я запускал netstat, я вижу несколько IP-адресов с 250 открытыми соединениями (и это не боты поисковых систем) , если я заблокирую эти IP-адреса, новые IP-адреса начнут подключаться, и снова 100-200 открытых подключений с одного IP-адреса.

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

Спасибо.

Я бы порекомендовал вам обновить MySQL до последней версии.

mysql_upgrade --force


заменить slow_query_log с участием log-slow-queries=/var/lib/mysql/slow.log в my.cnf
затем выполните команды

коснитесь /var/lib/mysql/slow.log
chmod 660 /var/lib/mysql/slow.log
chown mysql: mysql /var/lib/mysql/slow.log

удалять innodb_file_per_table=1 из my.cnf тоже.

Вы можете установить CSF Firewall, если сомневаетесь, что подвергаетесь DDoS-атаке:
http://configserver.com/free/csf/install.txt