Это команда pt-stalkp, которую можно запустить в провайдере бесплатного хостинга OnWorks, используя одну из наших многочисленных бесплатных онлайн-рабочих станций, таких как Ubuntu Online, Fedora Online, онлайн-эмулятор Windows или онлайн-эмулятор MAC OS.
ПРОГРАММА:
ИМЯ
pt-stalk - сбор данных о MySQL при возникновении проблем.
СИНТАКСИС
Использование: pt-stalk [ОПЦИИ]
pt-stalk ожидает возникновения условия срабатывания триггера, а затем собирает данные для диагностики
проблемы. Инструмент разработан для работы в качестве демона с привилегиями root, так что вы можете
диагностировать периодически возникающие проблемы, которые вы не можете наблюдать напрямую. Вы также можете использовать его для
выполнить пользовательскую команду или собрать данные по запросу, не дожидаясь срабатывания триггера.
происходит.
РИСКИ
Percona Toolkit зрелый, проверенный в реальном мире и хорошо протестированный, но все базы данных
инструменты могут представлять опасность для системы и сервера базы данных. Перед использованием этого инструмента,
пожалуйста:
· Прочтите документацию к инструменту
· Просмотрите известные "ОШИБКИ" инструмента.
· Протестируйте инструмент на непроизводственном сервере
· Сделайте резервную копию вашего производственного сервера и проверьте резервные копии
ОПИСАНИЕ
Иногда проблема возникает нечасто и на короткое время, не давая вам возможности увидеть
система, когда это происходит. Как решить периодически возникающие проблемы с MySQL, если вы не можете
наблюдать за ними? Вот почему существует pt-stalk. В дополнение к его использованию, когда известно
проблема на ваших серверах, рекомендуется постоянно запускать pt-stalk, даже если вы
думаю, что все в порядке. Вы оцените данные, которые он собирает, когда возникает проблема,
потому что такие проблемы, как зависание MySQL или всплески активности, обычно не оставляют никаких доказательств
для использования в анализе первопричин.
pt-stalk делает две вещи: он наблюдает за сервером MySQL и ждет, пока условие триггера
происходят, и он собирает диагностические данные при срабатывании этого триггера. Чтобы избежать ложных срабатываний
вызвано кратковременными проблемами, условие триггера должно выполняться по крайней мере "--cycles"
раз перед запуском «--collect».
Чтобы эффективно использовать pt-stalk, вам нужно определить хороший триггер. Хороший триггер
достаточно чувствителен, чтобы надежно стрелять при возникновении проблемы, чтобы вы не упустили шанс
решить проблемы. С другой стороны, хороший триггер не подвержен ложным срабатываниям, поэтому
вы не собираете информацию, когда сервер работает нормально.
Наиболее надежными триггерами для MySQL, как правило, являются количество подключений к серверу,
и количество запросов, выполняемых одновременно. Они доступны в SHOW GLOBAL
STATUS как Threads_connected и Threads_running. Иногда Threads_connected
не надежный индикатор проблемы, но обычно Threads_running. Ваша работа, как
пользователю инструмента необходимо определить соответствующее условие срабатывания инструмента. Выбирать
внимательно, потому что качество ваших результатов будет зависеть от выбранного вами триггера.
Вы определяете триггер с помощью «--function», «--variable», «--threshold» и «--cycles».
опции. Значения по умолчанию для этих параметров определяют разумный триггер, но вы должны
отрегулируйте или измените их, чтобы они соответствовали вашей конкретной системе и потребностям.
По умолчанию инструмент pt-stalk постоянно наблюдает за MySQL, пока не сработает триггер, а затем собирает
диагностические данные на некоторое время, а затем засыпает, чтобы избежать повторного сбора данных, если
триггер остается верным. Общий порядок действий таков:
пока правда; делать
если --variable from --function> --threshold; тогда
циклы_ истинное ++
если cycle_true> = --cycles; тогда
--уведомить по электронной почте
если - собрать; тогда
если --disk-bytes-free и --disk-pct-free нормально; тогда
(--collect для --run-time секунд) &
fi
rm файлы в --dest старше, чем --retention-time
fi
iter ++
cycle_true = 0
fi
если iter <--iterations; тогда
сон - секунды сна
еще
перерыв
fi
еще
если iter <--iterations; тогда
сон - интервал секунд
еще
перерыв
fi
fi
сделанный
rm old - самые старые файлы старше --retention-time
если процесс --collect все еще запущен; тогда
подождать до --run-time * 3 секунды
убить все оставшиеся - собрать процессы
fi
Диагностические данные записываются в файлы, имена которых начинаются с отметки времени, поэтому вы можете
отличать образцы друг от друга, если инструмент собирает данные несколько раз. В
Инструмент pt-sift разработан, чтобы помочь вам просматривать и анализировать полученные образцы данных.
Хотя это звучит достаточно просто, на практике есть ряд тонкостей, например
обнаруживая, когда диск начинает заполняться, чтобы инструмент не заставлял сервер
чтобы не хватило места на диске. Этот инструмент справляется с этими типами потенциальных проблем, поэтому
хорошая идея использовать этот инструмент вместо того, чтобы писать что-то с нуля и, возможно,
столкнуться с некоторыми опасностями, которых призван избежать этот инструмент.
НАСТРОЙКА
Вы можете использовать стандартные файлы конфигурации Percona Toolkit для установки параметров командной строки.
Вы, вероятно, захотите запустить инструмент как демон и настроить хотя бы
"--порог". Вот пример файла конфигурации для запуска, когда больше, чем
Одновременно выполняется 20 запросов:
демонизировать
порог = 20
Если вы не запускаете инструмент как root, вам нужно будет указать несколько параметров, например
«--pid», «--log» и «--dest», иначе инструмент, вероятно, не запустится.
ДОПОЛНИТЕЛЬНЫЕ ОПЦИИ
--иск-пас
Запрашивать пароль при подключении к MySQL.
--собирать
по умолчанию: да; отрицательный: да
Сбор диагностических данных при срабатывании триггера. Укажите "--no-collect", чтобы
Инструмент следит за системой, но не собирает данные.
См. Также «--stalk».
--collect-gdb
Соберите трассировки стека GDB. Это достигается подключением к MySQL и печатью стека.
следы от всех потоков. Это заморозит сервер на некоторое время в диапазоне
от секунды или около того на очень загруженных системах с большим объемом памяти и множеством
потоки на сервере. По этой причине по умолчанию он отключен. Однако если вы
пытаются диагностировать остановку или зависание сервера, замораживание сервера не вызывает
дополнительный вред, и трассировки стека могут быть жизненно важны для диагностики.
Помимо зависания сервера, существует также риск его сбоя или
плохо работает после отсоединения от него GDB.
--collect-oprofile
Соберите данные о профиле. Это достигается запуском сеанса oprofile, позволяя ему
запустить на время сбора, а затем остановить и сохранить полученные данные профиля
в системном расположении по умолчанию. Пожалуйста, прочтите документацию по профайлу вашей системы, чтобы
узнать больше об этом.
--collect-strace
Соберите данные strace. Это достигается подключением strace к серверу, который
заставьте его работать очень медленно, пока ремень не отсоединится. Применяются те же предостережения, что и
перечислено в --collect-gdb. Не следует включать эту опцию вместе с
--collect-gdb, потому что GDB и strace не могут подключиться к серверному процессу
одновременно.
--collect-tcpdump
Соберите данные tcpdump. Эта опция заставляет tcpdump перехватывать весь трафик на всех
интерфейсы для порта, который прослушивает MySQL. Позже вы можете использовать pt-query-
дайджест для декодирования протокола MySQL и извлечения из него журнала трафика запросов.
--config
тип: строка
Прочтите этот список файлов конфигурации, разделенных запятыми. Если указано, это должно быть первое
параметр в командной строке.
--циклы
тип: int; по умолчанию: 5
Во сколько раз "--variable" должно быть больше, чем "--threshold" перед срабатыванием
"--собирать". Это помогает предотвратить ложные срабатывания и снижает вероятность срабатывания триггера.
скорее всего, сработает, когда проблема исчезнет быстро.
- демонизировать
Демонизируйте инструмент. Это заставляет инструмент переходить в фоновый режим и регистрировать свои
вывод, как указано в --log.
--defaults-файл
краткая форма: -F; тип: строка
Только читать параметры mysql из данного файла. Вы должны указать абсолютный путь.
- самый
тип: строка; по умолчанию: / var / lib / pt-stalk
Куда сохранять диагностические данные из "--collect". Каждый раз, когда инструмент собирает данные, он
записывает в новый набор файлов, которым присвоена текущая системная метка времени.
--disk-байт-свободно
тип: размер; по умолчанию: 100M
Не используйте команду «--collect», если на диске меньше указанного свободного места. Это предотвращает
средство от заполнения диска диагностическими данными.
Если каталог «--dest» содержит ранее записанный образец данных, инструмент
измерить его размер и использовать его как оценку того, сколько данных может быть собрано
и на этот раз тоже. Тогда он будет еще более пессимистичным и откажется собирать
данные, если на диске недостаточно свободного места для хранения образца и все еще
желаемое количество свободного места. Например, если вам нужно 100 МБ свободного места и
предыдущий диагностический образец занимал 100 МБ, инструмент не будет собирать данные, если
на диске свободно 200 МБ.
Допустимые суффиксы значений размера: k, M, G и T.
--disk-pct-free
тип: int; по умолчанию: 5
Не используйте команду «--collect», если на диске меньше этого процента свободного места. Это предотвращает
средство от заполнения диска диагностическими данными.
Этот параметр работает аналогично «--disk-bytes-free», но указывает процентную маржу.
безопасности вместо байтового запаса прочности. Инструмент учитывает оба варианта и будет
не собирать никаких данных, если оба поля не удовлетворены.
--функция
тип: строка; по умолчанию: статус
На что обращать внимание на спусковой крючок. Значение по умолчанию смотрит "ПОКАЗАТЬ ГЛОБАЛЬНЫЙ СТАТУС", но
вы также можете посмотреть "SHOW PROCESSLIST" и указать файл с вашим собственным кодом.
Эта функция предоставляет значение "--variable", которое затем сравнивается с
«--threshold», чтобы увидеть, выполняется ли условие срабатывания триггера. Дополнительные опции могут быть
также требуется; увидеть ниже. Возможные значения:
· положение дел
Следите за триггером «ПОКАЗАТЬ ГЛОБАЛЬНЫЙ СТАТУС». Значение "--variable" тогда
определяет, какой счетчик состояния является триггером.
· Список процессов
Посмотрите "ПОКАЗАТЬ ПОЛНЫЙ СПИСОК ПРОЦЕССОВ" для триггера. Значение триггера - это количество
процессы, столбец "--variable" которых соответствует параметру "--match". Например, чтобы
триггер «--collect», когда более 10 процессов находятся в состоянии «статистика»,
уточнить:
--функция список процессов \
--переменное состояние \
- статистика матча \
- порог 10
Кроме того, вы можете указать файл, содержащий вашу настраиваемую функцию триггера,
написано в сценарии оболочки Unix. Это может быть оболочка, которая выполняет все, что угодно.
Если аргумент "--function" - файл, то он имеет приоритет над встроенным
функций, поэтому, если в рабочем каталоге есть файл с именем "status" или
"processlist", тогда инструмент будет использовать этот файл, даже если есть допустимые встроенные значения.
Файл работает, предоставляя функцию trg_plugin, а инструмент просто
получает файл и выполняет функцию. Например, файл может содержать:
trg_plugin () {
mysql $ EXT_ARGV -e "ПОКАЗАТЬ СТАТУС INNODB ДВИГАТЕЛЯ" \
| grep -c "ожидал в"
}
Этот фрагмент будет подсчитывать количество ожиданий мьютекса внутри InnoDB. Это иллюстрирует
общий принцип: функция должна выводить число, которое затем сравнивается с
"--threshold" как обычно. Переменная $ EXT_ARGV содержит упомянутые параметры MySQL.
в «СИНОПСИСЕ» выше.
Файл не должен изменять существующие глобальные переменные инструмента. Префикс любого файла -
конкретные глобальные переменные с помощью «PLUGIN_» или сделать их локальными.
--Помогите
Распечатать справку и выйти.
--хозяин
краткая форма: -h; тип: строка
Хост для подключения.
--интервал
тип: int; по умолчанию: 1
Как часто в секундах проверять срабатывание триггера, если оно истинно.
--итерации
тип: int
Сколько раз «-собрать» диагностические данные. По умолчанию инструмент работает вечно и
собирает данные каждый раз при срабатывании триггера. Укажите "--iterations" для сбора данных
ограниченное количество раз. Эта опция также полезна с "--no-stalk" для сбора данных.
один раз и выйти, например.
--бревно
тип: строка; по умолчанию: /var/log/pt-stalk.log
Распечатать весь вывод в этот файл при демонтировании.
--соответствие
тип: строка
Шаблон для использования при просмотре SHOW PROCESSLIST. См. "--Function" для подробностей.
--уведомить по электронной почте
тип: строка
Отправляйте электронные письма на эти адреса для каждого "--collect".
--пароль
краткая форма: -p; тип: строка
Пароль для использования при подключении. Если пароль содержит запятые, их нужно экранировать.
с обратной косой чертой: "пример \, пожалуйста"
--пид
тип: строка; по умолчанию: /var/run/pt-stalk.pid
Создайте данный файл PID. Инструмент не запустится, если файл PID уже существует и
PID, который он содержит, отличается от текущего PID. Однако, если файл PID
существует и содержащийся в нем PID больше не работает, инструмент перезапишет PID
файл с текущим PID. PID-файл автоматически удаляется при выходе из инструмента.
--плагин
тип: строка
Загрузите плагин, чтобы подключиться к инструменту и расширить его функциональность. Указанный файл
не обязательно должен быть исполняемым, и его первая строка не обязательно должна быть строкой shebang. Это
нужно только определить одну или несколько из этих функций Bash:
до_сталка
Вызывается перед выслеживанием.
до_коллекции
Вызывается при срабатывании триггера перед запуском подпроцессов "--collect" в
фон.
after_collect
Вызывается после запуска процесса сборщика. PID процесса коллектора:
передается как первый аргумент. Этот хук вызывается перед "after_collect_sleep".
after_collect_sleep
Вызывается после сна "--sleep" секунд для завершения процесса сборщика. Этот
хук вызывается после "after_collect".
after_interval_sleep
Вызывается после сна "--interval" секунд после каждой проверки триггера.
after_stalk
Вызывается после преследования. Так как pt-stalk по умолчанию работает вечно, этот хук
вызывается только в том случае, если указано "--iterations".
Например, очень простой плагин, который касается файла при запуске "--collect":
before_collect () {
сенсорный / tmp / foo
}
Поскольку плагин полностью загружен (импортирован) в пространство имен инструмента,
осторожно, чтобы не определять другие функции или глобальные переменные, которые уже существуют в
инструмент. Перед всеми специфичными для плагина функциями и глобальными переменными следует поставить префикс
"plugin_" или "PLUGIN_".
Плагины имеют доступ ко всем параметрам командной строки, но не должны их изменять. Каждый
option - это глобальная переменная, такая как $ OPT_DEST, которая соответствует "--dest". Следовательно,
глобальная переменная для каждого параметра командной строки - "OPT_" плюс имя параметра во всех
заглавные буквы с дефисами заменены на подчеркивания.
Плагины могут остановить инструмент, установив для глобальной переменной OKTORUN значение 1. В этом
случае, глобальная переменная EXIT_REASON также должна быть установлена, чтобы указать, почему инструмент
был остановлен
Разработчикам плагинов следует иметь в виду, что префикс назначения файла, который в настоящее время используется
должен быть доступен через префиксную переменную $, а не через $ OPT_PREFIX.
--порт
краткая форма: -P; тип: int
Номер порта для подключения.
--приставка
тип: строка
Префикс имени файла для диагностических образцов. По умолчанию все файлы созданы одним и тем же
Экземпляр "--collect" имеет префикс отметки времени, основанный на текущем местном времени, например
«2011_12_06_14_02_02», то есть 6 декабря 2011 г., 14:02:02.
--время удерживания
тип: int; по умолчанию: 30
Количество дней для хранения собранных образцов. Любые более старые образцы будут
очищен.
- время выполнения
тип: int; по умолчанию: 30
Как долго «- собирать» диагностические данные при срабатывании триггера. Стоимость указана в
секунд и не должно быть длиннее, чем "--sleep". Обычно нет необходимости
изменить это; если 30 секунд по умолчанию не собирают достаточно данных, дольше будет
вряд ли поможет, потому что система или сервер MySQL, вероятно, слишком занят, чтобы ответить.
Фактически, во многих случаях уместен более короткий период сбора.
Это значение используется еще два раза. После сбора подпроцесс сбора будет
подождите еще "--run-time" секунд, пока его команды завершатся. Некоторые команды могут принимать
некоторое время, если система работает очень медленно (что, вероятно, может иметь место, если
сбор был запущен). Поскольку пустые файлы удаляются, дополнительное ожидание дает
командам пора заканчивать и записывать свои данные. Значение потенциально может использоваться снова
непосредственно перед завершением работы инструмента, чтобы снова дождаться завершения всех подпроцессов сбора. В
в большинстве случаев этого не произойдет из-за вышеупомянутого дополнительного ожидания. Если это произойдет,
инструмент будет регистрировать «Ожидание до N секунд завершения подпроцессов ...», где N -
три раза "- время выполнения". В обоих случаях после ожидания инструмент убивает все
подпроцессы.
--спать
тип: int; по умолчанию: 300
Как долго спать после «--собирать». Это предотвращает срабатывание инструмента.
постоянно, что может быть проблемой, если процесс сбора навязчивый. Это
также предотвращает заполнение диска или сбор слишком большого количества данных для разумного анализа.
- спать-собирать
тип: int; по умолчанию: 1
Как долго спать между циклами цикла сбора. Это полезно с "--no-stalk", чтобы
делать длинные коллекции. Например, чтобы собирать данные каждую минуту в течение часа, укажите:
"--no-stalk --run-time 3600 --sleep-collect 60".
--разъем
краткие формы; тип: строка
Файл сокета, используемый для подключения.
- стебель
по умолчанию: да; отрицательный: да
Наблюдайте за сервером и ждите, пока сработает триггер. Укажите "--no-stalk" для сбора
данные диагностики немедленно, то есть не дожидаясь срабатывания триггера. Ты
возможно, вы также захотите указать значения для «--interval», «--iterations» и «--sleep».
Например, чтобы сразу собрать данные за 1 минуту и выйти, укажите:
--no-stalk --время выполнения 60 --итераций 1
«--cycles», «--daemonize», «--log» и «--pid» не действуют с «--no-stalk».
Параметры защиты, такие как "--disk-bytes-free" и "--disk-pct-free", по-прежнему
уважаемый.
См. Также «--collect».
--порог
тип: int; по умолчанию: 25
Максимально допустимое значение для "--variable". "--collect" запускается, когда
значение «--variable» во много раз больше, чем «--threshold» для «--cycles».
В настоящее время нет способа определить нижний порог для проверки наличия «--variable».
значение, которое слишком низкое.
См. Также «--function».
--Пользователь
краткая форма: -u; тип: строка
Пользователь для входа, если не текущий пользователь.
--Переменная
тип: строка; по умолчанию: Threads_running
Переменная для сравнения с "--threshold". См. Также «--function».
--подробный
тип: int; по умолчанию: 2
Печатайте больше или меньше информации во время бега. Поскольку инструмент предназначен для
долго работающий демон, уровень детализации по умолчанию печатает только самые важные
Информация. Если вы запускаете инструмент в интерактивном режиме, вы можете использовать более высокий
уровень многословности.
УРОВНЯ ОТПЕЧАТКИ
===== ====================================
НИКОГДА не ошибаться
Предупреждения 1
2 Соответствующие триггеры и информация о коллекции
3 Несовпадающие триггеры
--версия
Распечатать версию инструмента и выйти.
ОКРУЖАЮЩАЯ СРЕДА
Этот инструмент не требует каких-либо переменных среды для настройки, хотя его можно
влияет на работу по-разному через несколько переменных. Имейте в виду, что это
экспертные настройки и не должны использоваться в большинстве случаев.
В частности, можно установить следующие переменные:
CMD_GDB
CMD_IOSTAT
CMD_MPSTAT
CMD_MYSQL
CMD_MYSQLADMIN
CMD_OPCONTROL
CMD_OPREPORT
CMD_PMAP
CMD_STRACE
CMD_SYSCTL
CMD_TCPDUMP
CMD_VMSTAT
Например, во время сбора iostat вызывается с аргументом -dx, но поскольку у вас есть
раздел NFS, вам также понадобится флаг -n. Вместо редактирования источника вы можете
назовите pt-stalk как
CMD_IOSTAT = "iostat -n" pt-stalk ...
который сделает именно то, что вам нужно. В сочетании с хуками плагинов это дает вам
детальный контроль над тем, что делает инструмент.
СИСТЕМА ТРЕБОВАНИЯ
Для этого инструмента требуется Bash v3 или новее. Для некоторых опций требуются другие программы:
"--collect-gdb" требует "gdb"
"--collect-oprofile" требует "opcontrol" и "opreport"
"--collect-strace" требует "strace"
"--collect-tcpdump" требует "tcpdump"
Используйте pt-stalkp онлайн с помощью сервисов onworks.net