Я озадачен; Я предполагаю медленный запрос.
Примечание: все мои запросы проверены и работают отлично, когда мое приложение / веб-сайт использует меньше людей (менее 0,01 с каждый).
Итак, у меня высокая загрузка ЦП с моей текущей настройкой, и мне было интересно, почему? Возможно ли, что это проблема индекса?
Наше возможное решение: мы подумали, что можем использовать файл кэша XML для хранения информации каждый час, а затем уменьшить нагрузку на наш запрос MySQL? (обновлять файлы каждый час).
Будет ли нам хорошо делать такие вещи? Так как у нас есть SSD-накопитель? Или это будет медленнее, чем раньше?
В настоящее время при большом трафике наш сайт / приложение может занять до 30 секунд, прежде чем вернуть первый байт. Мой сайт работает под сервером Plesk 12.
ОБНОВИТЬ
Вот больше информации о моей настройке MySQL.
http://pastebin.com/KqvFYy8y
Возможно ли, что это проблема индекса?
Возможно, но не обязательно. Вы должны сначала определить, какой запрос медленный. Вы найдете это в медленном журнале запросов. Затем проанализируйте запрос. Это объясняется в литературе, или вы можете связаться с консультантом / репетитором для этого.
Мы думали, что могли бы использовать XML
cache
файл для хранения информации каждый час .. и затем уменьшить нагрузку на наш запрос MySQL?
Что ж, аннулирование кэша — не самая простая вещь, но с фиксированным ритмом каждый час это кажется достаточно простым. Но позаботьтесь о том, чтобы это помогло только в том случае, если реальный запрос, который вы кэшировали, был медленным. Mysql обычно имеет встроенный кэш запросов, проверьте, включен он или нет.
Будет ли нам хорошо делать такие вещи?
Обычно, если дела идут хорошо, результаты тоже будут хорошими. Иногда даже плохие вещи приводят к хорошим результатам, поэтому трудно ответить на такой общий вопрос. Вместо этого я предлагаю вам получить более конкретную информацию, прежде чем продолжать спрашивать. Звучит как угадывание. Хватит гадать. Правда, это только первые две минуты, после этого просто перестань гадать.
Так как у нас есть ssd диск? Или это будет медленнее, чем раньше?
Вы можете попробовать скинуть на него аппаратное обеспечение. Опять же, литература и консультант / репетитор могут вам в этом сильно помочь. Но просто перестань гадать. В самом деле.
Я предполагаю, что запрос не медленный все время. Если это правда, запрос не очень вероятная проблема.
Вы должны знать, что использует процессор. Вероятно, беглый скрипт с бесконечным циклом.
Попробуй это:
<?php
header('Content-Type: text/plain; charset=utf-8');
echo system('ps auxww');
?>
Это должно вернуть список в этом формате:
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
Сканирование вниз %CPU
столбец и найдите свое имя пользователя в USER
колонка
Если вы видите, что процесс загружается на 100%, вы можете получить PID
номер и:
system('kill 1234');
куда 1234
это PID
Процессы mysql, работающие на 441% и 218%, кажутся очень проблематичными.
Предполагая, что это общий сервер, может быть другой пользователь, выполняющий запросы, загружающий процессор. вам может потребоваться обсудить это с вашим провайдером.
Я наблюдал на одном из моих общих серверов, и процессор для процесса mysql не превысил 16%.
По ссылке видно у вас интенсивный трафик.
69863 за 23,5 мин. выходит почти на 50 запросов в секунду.
Это звучит правильно? Выполнение запроса с присоединением 150 раз в секунду.
У вас есть запрос с JOIN.
Таблицы объединены столбцами.
В объединенной таблице добавьте индекс к столбцу, который соединяет две таблицы вместе.