Вложенный модуль box.info
Вложенный модуль box.info
предоставляет доступ к информации о переменных экземпляра сервера.
- cluster.uuid – это уникальный идентификатор набора реплик (UUID). У каждого экземпляра в наборе реплик будет одно и то же значение
cluster.uuid
. Данное значение также хранится в системном спейсе box.space._schema. - gc() возвращает состояние сборщика мусора в Tarantool’е, в том числе контрольные точки и их потребителей (пользователи); более подробную информацию см. ниже.
- id соответствует идентификатору replication.id (см. ниже).
- lsn соответствует регистрационному номеру replication.lsn (см. ниже).
- memory() возвращает статистику об использовании памяти (см. ниже).
- pid – идентификатор процесса. Это значение также отображается с помощью модуля tarantool и по команде
ps -A
в Linux. - ro принимает значение
true
, если экземпляр находится в режиме только для чтения «read-only» (как read_only вbox.cfg{}
), или в статусе „orphan“ (одиночный). - signature представляет собой сумму всех значений lsn из векторных часов (vclock) всех экземпляров в наборе реплик.
- sql().cache.size – это количество байтов в кэше подготовленных операторов SQL.
- sql().cache.stmt_count – это количество операторов в кэше подготовленных операторов SQL.
- status – это текущий статус экземпляра. Он может быть:
running
– экземпляр запущен,loading
– экземпляр восстанавливается из xlog’ов или snapshot’ов или стартует с нуля (bootstrapping),orphan
– экземпляр (еще) не подключился к необходимому количеству мастеров (см. статус orphan),hot_standby
– экземпляр является резервным для другого экземпляра.
- uptime – это количество секунд с момента запуска экземпляра. Данное значение также можно получить с помощью tarantool.uptime().
- uuid соответствует идентификатору replication.uuid (см. ниже).
- vclock соответствует часам replication.downstream.vclock (см. ниже).
- version – это версия Tarantool’а. Данное значение также можно отобразить с помощью команды tarantool -V.
- vinyl возвращает статистику времени работы для движка базы данных vinyl. Данная функция объявлена устаревшей, используйте box.stat.vinyl().
-
box.info.
memory
() Функция memory в
box.info
дает пользователюadmin
полное представление об экземпляре Tarantool’а.Примечание
Чтобы получить представление о подсистеме vinyl’а, используйте box.stat.vinyl().
- memory().cache – это количество байтов, используемых для кэширования данных пользователей. Движок базы данных memtx не нуждается в кэше, то есть на самом деле это количество байтов в кэше для кортежей движка базы данных vinyl.
- memory().data – количество байтов, используемых для хранения данных пользователей (кортежи) в движке memtx и на уровне 0 движка vinyl, не принимая во внимание фрагментацию памяти.
- memory().index – количество байтов, используемых для индексирования данных пользователей, включая экстенты для деревьев в memtx’е и vinyl’е, индекс страниц и фильтры Блума в vinyl’е.
- memory().lua – количество байтов, используемых Lua-интерпретатором.
- memory().net – количество байтов, используемых буферами для сетевого ввода-вывода.
- memory().tx – количество байтов, используемых активными транзакциями. Для движка базы данных vinyl это общий размер всех размещаемых объектов (структура
txv
, структураvy_tx
, структураvy_read_interval
) и кортежей, прикрепленных к этим объектам.
Пример с минимальным распределением, когда используется только движок базы данных memtx:
tarantool> box.info.memory() --- - cache: 0 data: 6552 tx: 0 lua: 1315567 net: 98304 index: 1196032 ...
-
box.info.
gc
() Функция gc в
box.info
дает пользователюadmin
полное представление о факторах, которые влияют на сборщик мусора Tarantool’а. Сборщик мусора сопоставляет значения vclock (векторные часы) пользователей и контрольных точек, поэтому взглянув наbox.info.gc()
, можно понять, почему сборщик мусора не удалил старые WAL-файлы или что он может вскоре удалить.- gc().consumers – список пользователей, запросы которых могут затронуть сборку мусора.
- gc().checkpoints – список сохраненных контрольных точек.
- gc().checkpoints[n].references – список ссылок на контрольную точку.
- gc().checkpoints[n].vclock – значение vclock контрольной точки.
- gc().checkpoints[n].signature – сумма компонентов vclock контрольной точки.
- gc().checkpoint_is_in_progress – true если идет создание контрольной точки, в противном случае false.
- gc().vclock – vclock сборщика мусора.
- gc().signature – сумма компонентов контрольной точки сборщика мусора.
-
box.info.
replication
Раздел replication (репликация) во вложенном модуле
box.info()
содержит статистику по всем экземплярам в наборе реплик относительно текущего экземпляра (см. также «Мониторинг набора реплик»):Далее n – это индексный номер одного элемента таблицы, например,
replication[1]
, который содержит данные о экземпляре сервера номер 1, который может быть или не быть тем же самым, что и текущий экземпляр («текущий экземпляр» – это тот, что отвечает наbox.info
).replication[n].id
– это короткий числовой идентификатор экземпляра в наборе реплик. Данное значение хранится в системном спейсе box.space._cluster.replication[n].uuid
– это глобально-уникальный идентификатор экземпляра. Данное значение хранится в системном спейсе box.space._cluster.replication[n].lsn
– это номер в журнале (LSN) для последней записи в журнале упреждающей записи (WAL) экземпляра n.replication[n].upstream
возникает (т.е. не nil), если текущий экземпляр принимает или готов принимать данные от экземпляра n, что обычно означаетreplication[n].upstream.status
=follow
,replication[n].upstream.peer
= url экземпляра n, который отдает данные,replication[n].lag и idle
= скорость экземпляра, описанная позже. По-другому можно сказать, чтоreplication[n].upstream
возникает, когдаreplication[n].upstream.peer
не принадлежит текущему экземпляру, не является доступным только для чтения и был указан вbox.cfg{replication={...}}
, поэтому он показан в box.cfg.replication.replication[n].upstream.status
– это репликационный статус экземпляра:auth
означает, что экземпляр проходит аутентификацию.connecting
означает, что происходит подключение.disconnected
означает, что экземпляр не подключен к набору реплик (по причине проблем в сети, а не ошибок репликации).follow
означает, что текущий экземпляр является репликой (только для чтения, или не только для чтения, но ведет себя как реплика для этого удаленного URI в конфигурации master-master) и получает или может получать данные от мастера экземпляра n (upstream).stopped
означает, что репликация остановилась по причине ошибки репликации (например, повторяющийся ключ).sync
означает, что мастер и реплика в данный момент синхронизируются для получения одинакового набора данных.
replication[n].upstream.idle
– это время (в секундах) с момента получения последнего события. Это основной индикатор работоспособности репликации. Подробности в Monitoring a replica set.
replication[n].upstream.peer
содержит URI экземпляра n, например 127.0.0.1:3302. Более подробную информацию см. в разделе Мониторинг набора реплик.
replication[n].upstream.lag
– это разница во времени между локальным временем на экземпляре n, зарегистрированным при получении события, и локальное время на другом мастере, зарегистрированное при записи события в журнал упреждающей записи на этом мастере. Более подробную информацию см. в разделе Мониторинг набора реплик.replication[n].upstream.message
содержит сообщение об ошибке в случае системного сбоя, в противном случае – nil.replication[n].downstream
появляется (т.е. не nil), когда имеются данные об экземпляре, который принимает данные от экземпляра n или намеревается это делать,что обычно означаетreplication[n].downstream.status
=follow
,replication[n].downstream.vclock
содержит векторные часы, которые представляют собой таблицу из пар „id, lsn“, напримерvclock: {1: 3054773, 4: 8938827, 3: 285902018}
(Обратите внимание, что таблица может иметь несколько пар, хотя vclock - это единственное имя).Даже если экземпляр удален, его значения все равно появятся здесь; однако, его значения будут переопределены, если позже экземпляр присоединится с тем же UUID. Пары векторных часов будут появляться только если
lsn > 0
.replication[n].downstream.vclock
может быть таким же, как и vclock текущего экземпляра (box.info.vclock
), потому что все значения vclock в кластере известны. Мастер будет знать, что находится в копии vclock реплики, потому что, когда мастер делает изменение данных, он посылает информацию об изменении на реплику (включая векторные часы мастера), и реплика отвечает тем, что находится в ее таблице векторных часов.Также реплика отправляет всю свою таблицу векторных часов в ответ на сообщение контрольного сигнала мастера (heartbeat message), их примеры можно найти в разделе Бинарный протокол – репликация.
replication[n].downstream.idle
– это время (в секундах) с момента последней отправки событий экземпляром n через downstream-репликацию.replication[n].downstream.status
– это статус для downstream-репликации:stopped
означает, что downstream-репликация остановлена,follow
означает, что downstream-репликация находится в процессе (экземпляр n готов принимать данные от мастера или уже делает это).
replication[n].downstream.message
andreplication[n].downstream.system_message
не появятся, пока не возникнет проблем с соединением. Например, если экземпляр n даст сбой, то можно будет увидетьstatus = 'stopped'
,message = 'unexpected EOF when read from socket'
, иsystem_message = 'broken pipe'
. См. также «сбой».
-
box.
info
() Поскольку содержимое вложенного модуля
box.info
является динамическим, невозможно провести итерацию по ключам с помощью Lua-функцииpairs()
. Для этой цели модульbox.info()
создает и возвращает Lua-таблицу со всеми ключами и значениями во вложенном модуле.возвращается: ключи и значения во вложенном модуле тип возвращаемого значения: таблица Пример:
Данный пример приводится для набора со схемой мастер-реплика, который включает в себя один мастер-экземпляр и один реплика-экземпляр. Запрос был отправлен с реплики-экземпляра.
tarantool> box.info() --- - vinyl: [] version: 2.2.0-482-g8c84932ad id: 2 ro: true status: running vclock: {1: 9} uptime: 356 lsn: 0 memory: [] cluster: uuid: e261a5bc-6303-4de3-9873-556f311255e0 pid: 160 gc: [] signature: 9 replication: 1: id: 1 uuid: fce71bb3-0e99-40ec-ab7e-5159487e18d1 lsn: 9 upstream: status: follow idle: 0.035709699994186 peer: replicator@127.0.0.1:3401 lag: 0.00016164779663086 downstream: status: follow idle: 0.59840899999836 vclock: {1: 9} 2: id: 2 uuid: bc4629ce-ea31-4f75-b805-a4807bcacc93 lsn: 0 uuid: bc4629ce-ea31-4f75-b805-a4807bcacc93 ...