Как понять где узкое место?

Статус
В этой теме нельзя размещать новые ответы.

vredin

Постоялец
Заблокирован
Регистрация
17 Дек 2007
Сообщения
139
Реакции
35
  • Автор темы
  • Заблокирован
  • #1
есть дедик, на нем пару блогов(вордпресс) и одна галерея комермайн

смотрю загрузку через htop: один процесс кушает (при аптайме сервера 20 дней) - 45 часов.

PID USER PRI NI VIRT RES SHR S CPU% MEM% TIME+ Command
2089 mysql 15 0 102M 65132 2848 S 69.5 5.0 45h07:47 /usr/sbin/mysqld --basedir=/usr --datadir=/var/lib/mysql --user=mysql --pid-file=/var/run/mysqld/mysqld.pid --skip-external-locking --port=3306 --socket=/var/run/mysqld/mysqld.sock

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

phpmyadmin показывает:
Slow_queries 1,877
Slow_launch_threads 459

в my.cnf long_query_time=2 но закоментировано
 
включи логирование медленных запросов, потом оптимизируй их. Явно что базу грузят, тормознутыми запросами....Используй кеш, оптимизируй бд, индексы используй если нету их.
 
когда система начинает виснуть я сразу иду mysql запускать "show full processlist;"
 
Профайлер надо юзать на стадии написания.
А если код чужой, то включать лог медленных запросов и смотреть.

В WP местами встречаются шедевры по части того, как не должны выглядеть SQL-запросы.

PS правда мускуль зараза не даёт установить для лога время меньшее 1 секунды.
 
  • Автор темы
  • Заблокирован
  • #6
включи логирование медленных запросов, потом оптимизируй их. Явно что базу грузят, тормознутыми запросами....Используй кеш, оптимизируй бд, индексы используй если нету их.

>> включил, показывает что больше всего медленных запросов в плагине FireStats.. отключил его нафиг..
лог медленных запросов пуст :(

и всё равно есть в списке процессов mysql процесс который со вчера уже почти 40 минут серверного времени занимает

show full processlist

команда показала 3 строки и в одной строке Time: 85(state: waiting for INSERT), в остальных - по нулям.. у меня смутная догадка что это оно и есть..

PHP_Master - как мне докопаться до запроса, которых жрет время? скажи, пожалуйста!
 
как мне докопаться до запроса, которых жрет время?
Поработаю дятлом :D - включить лог медленных запросов.
Дать ему поработать сутки, затем прогнать через анализатор и смотреть.

Если лог пуст - то либо он криво настроен, либо с твоим мускулем не всё в порядке, либо он у тебя выключен.
 
  • Автор темы
  • Заблокирован
  • #8
Поработаю дятлом :D - включить лог медленных запросов.
Дать ему поработать сутки, затем прогнать через анализатор и смотреть.
Если лог пуст - то либо он криво настроен, либо с твоим мускулем не всё в порядке, либо он у тебя выключен.

русский я понимаю с первого раза :)

отслеживание медленных я включил, пусть работает конечно - не вопрос

а анализатор зачем? запросы в логе же показываются

кстати, а на сколько поставить long_query_time параметр? сейчас он у меня закомментирован.
 
а анализатор зачем? запросы в логе же показываются
Он группирует запросы - смотреть удобнее.

кстати, а на сколько поставить long_query_time параметр?
Это уже тебе решать - ХЗ, что у тебя за база.

При правильном проектировании БД, большинство запросов должны выполняться менее секунды. Но мускуль этого не понимает - время можно задать только от секунды и выше.

Ну и не стоит забывать про опцию --log-queries-not-using-indexes

Попробуй так
[mysqld]
log-slow-queries = sql_slow.log
long_query_time = 1
log-queries-not-using-indexes
 
У меня как-то лежал mysql...
Тормозил select count(*).
Вылечил конвертацией таблиц из InnoDB в MyISAM.
 
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху