Oproxyctl
Материал из ISPWiki
Содержание |
Назначение
Утилита служит для управления oProxy и просмотра её внутренней статистики.
Для работы ей необходимо знать путь до сокета oProxy. Путь читается и oproxy.conf и по умолчанию равен /tmp/oproxy.sock. Поменять можно с помощью ключа --socket:
/usr/local/ispmgr/sbin/oproxyctl --socket /other/path/oproxy.sock команда
Режимы работы
Режим задаётся с помощью команд. Одновременно в командной строке можно передать несколько команд:
/usr/local/ispmgr/sbin/oproxyctl команда1 команда2
Остановка oProxy (stop daemon)
/usr/local/ispmgr/sbin/oproxyctl 'stop daemon'
Будет корректно завершена работа oProxy.
Просмотр рабочих процессов (show workers)
/usr/local/ispmgr/sbin/oproxyctl 'show workers'
Вывод будет примерно таким:
id pid closed_connections 0 19932 1818 1 19933 1842 2 19934 1821 3 19935 1864
id — внутренний идентификатор рабочего процесса
pid — PID процесса
closed_connections — количество завершённых соединений
Просмотр информации о бэкендах (show nodes <http|mysql>)
/usr/local/ispmgr/sbin/oproxyctl 'show nodes http'
Вывод будет примерно таким:
id ip active_connections closed_connections active 0 10.0.0.1 3 1289 on 1 10.0.0.2 4 1353 on 2 10.0.0.3 4 1410 on
ip — IP-адрес, по которому известен узел
active_connections — количество в данный момент обрабатываемых соединений
closed_connections — количество завершённых соединений
active — статус узла. off, если узел помечен как down
По аналогии, командой 'show nodes mysql' можно посмотреть статистику по рабочим узлам MySQL.
Просмотр информации об относительно текущем трафике (show traffic <http|mysql>)
Почему "об относительно текущем"? Статистика обновляется от всех рабочих процессов раз в 3 секунды. Команда может показывать информацию, устаревшую на несколько секунд.
/usr/local/ispmgr/sbin/oproxyctl 'show traffic http' /usr/local/ispmgr/sbin/oproxyctl 'show traffic mysql'
Вывод будет примерно таким:
host received sent time requests host.com 144872 1038753 5.12540 193 site.com 474 242807 0.00000 1 somesite.info 92 71904 0.46369 1
host (для http) — имя хоста
user (для mysql) — имя пользователя
received — сколько данных получено от клиента
sent — сколько данных передано клиенту
time — суммарное время ожидания ответа (т.е. время реакции на все запросы в сумме
requests — количество обработанных запросов
Внимание! Статистика обнуляется каждый раз, когда сбрасывается в файл статистики (если это настроено).
Обнуление статистики трафика
/usr/local/ispmgr/sbin/oproxyctl 'reset traffic'
Управление списками наблюдения
В oProxy есть возможность писать отдельные логи запросов, которые могут пригодиться для дальнейшего анализа производительности и тому подобного. Часто бывает, что у клиентов на хостинге есть перерасход ресурсов и они хотят знать, откуда эта нагрузка происходит. Для этих целей был разработан микроязык запросов к oProxy OpQL.
Допустим, по MySQL-пользователю nobody случилось превышение нагрузки на MySQL. Вы можете написать команду:
/usr/local/ispmgr/sbin/oproxyctl 'start save time, sent, query from mysql where user = "nobody" into file "/home/nobody/data/mysql_load.txt"'
С этого момента, oProxy начнёт сохранять в указанный файл все запросы к MySQL, пришедшие от пользователя nobody. Будет записано время выполнения запроса, количество посланных клиенту байт и сам запрос. Чтобы остановить запись, достаточно написать ту же команду, но в начале вместо ключевого слова start слово stop:
/usr/local/ispmgr/sbin/oproxyctl 'stop save time, sent, query from mysql where user = "nobody" into file "/home/nobody/data/mysql_load.txt"'
Запись прекратилась. Более сложный пример:
/usr/local/ispmgr/sbin/oproxyctl 'start save current_time, time/60, sent/1024/1024, host, uri
from http
where host = "somesite.com"
and ((uri = "/" and time < 0.5) or (uri = "/news/" and time > 0.01))
into file "/tmp/requests.txt";
stop save host from http into file "/tmp/all_http.txt"'
Можно посмотреть текущий список наблюдения:
/usr/local/ispmgr/sbin/oproxyctl 'show queries'
За подробностями синтаксиса, смотрите OpQL.
Опции командной строки
--socket /tmp/oproxy.sock
Путь до управляющего сокета. По умолчанию, /tmp/oproxy.sock.
--field-separator <табуляция>
Разделитель полей в выводимых данных. По умолчанию, символ табуляции.
--record-separator <новая_строка>
Разделитель записей в выводимых данных. По умолчанию, символ новой строки.
--console
Интерфейс командной строки для управления oProxy.
--help
Справка по использованию.
