У меня проблемы с моим LAMP-сервером. В последнее время все стало очень медленно, хотя количество посетителей на моих сайтах сильно не изменилось. Когда я запускаю top
команду, она говорит, что процесс MySQL занял 150-200% процессорного времени. Как это возможно, я всегда думал, что 100% это максимум?
Я использую серверную версию Ubuntu 9.04 с 1,5 ГБ оперативной памяти.
my.cnf
настройки:
key_buffer = 64M
max_allowed_packet = 16M
thread_stack = 192K
thread_cache_size = 8
myisam-recover = BACKUP
max_connections = 200
table_cache = 512
table_definition_cache = 512
thread_concurrency = 2
read_buffer_size = 1M
sort_buffer_size = 4M
join_buffer_size = 1M
query_cache_limit = 1M # the maximum size of individual query results
query_cache_size = 128M
Вот вывод MySQLTuner :
Команда top
:
Что может быть причиной этой проблемы? Могу ли я внести изменения в мой, my.cnf
чтобы предотвратить зависание сервера?
mysql
performance
cpu-usage
Temnovit
источник
источник
У вас есть процессор с несколькими ядрами или несколько процессоров. Если у вас два ядра и процесс использует 100% обоих ядер, он будет отображаться как 200% сверху.
Аналогично, это, вероятно, работает как задумано - с вашей конфигурацией все в порядке. Если вы испытываете частые зависания, из того, что вы опубликовали, вы можете захотеть добавить правильные индексы в свои таблицы (или оптимизировать свои запросы).
источник
Запустите,
top -H
чтобы увидеть все запущенные потоки, а не только общий процесс. Кроме того, если вы нажмете1
клавишу в верхней части, он покажет вам использование процессора для отдельных процессоров / ядер.источник
Mysql имеет несколько процессов (потоков), работающих независимо, например, один отвечает за запись данных из памяти на диск. При наличии нескольких ядер в ЦП (и / или нескольких ЦП) работает более одного потока, и поэтому он может работать более чем на 100% одного ядра - на упрощенном уровне, возможно, работает 75% каждого из двух ядер , давая 150%.
источник
Я заметил проблему, не связанную с процессором. Если вы используете apache и MySQL на одном сервере, вы можете достичь плохих условий ( ОЗУ ), когда ваша активность apache возрастет.
MySQLTunner сообщает вам, что, используя 200 доступных подключений (ваш максимальный параметр подключения), вы будете заполнять оперативную память. Допустим, у вас ограничен процесс Apache до 150, и вам наверняка не хватит оперативной памяти, когда MySQL и apache попытаются использовать 150 соединений (поскольку Apache также является хорошим потребителем ОЗУ).
Так что речь идет об оперативной памяти, и вы, возможно, еще не нажали :-) Верхние команды показывают только 15 процессов Apache (но вы загружаетесь в среднем 3/6/16, так что это означает, что шторм был 15 минут назад и сейчас в оставляя).
Что касается проблемы с процессором, чтобы дополнить хороший ответ shakalandy , это может быть из-за одного запроса. Это может быть огромная таблица, выполнение множества заданий по переиндексации, использование большого количества временных файлов, отсутствие индекса (удаление?) И т. Д. Единственный способ обнаружить его - активировать журнал медленных запросов (может быть, с высоким порогом, как 8s). Затем используйте инструмент mysqlsla для анализа этого медленного журнала запросов и выполните некоторые объяснения по идентифицированным запросам.
источник