Вложенный модуль box.info

Вложенный модуль 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 is the number of bytes in the SQL prepared statement cache.
  • sql().cache.stmt_count is the number of statements in the SQL prepared statement cache.
  • status соответствует статусу replication.upstream.status (см. ниже).
  • 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

The replication section of box.info() is a table array with statistics for all instances in the replica set that the current instance belongs to (see also «Monitoring a replica set»): In the following, n is the index number of one table item, for example replication[1], which has data about server instance number 1, which may or may not be the same as the current instance (the «current instance» is what is responding to box.info).

  • replication[n].id is a short numeric identifier of instance n within the replica set. This value is also stored in the box.space._cluster system space.
  • replication[n].uuid is a globally unique identifier of instance n. This value is also stored in the box.space._cluster system space.
  • replication[n].lsn is the log sequence number (LSN) for the latest entry in instance n’s write ahead log (WAL).
  • replication[n].upstream appears (is not nil) if the current instance is following or intending to follow instance n, which ordinarily means replication[n].upstream.status = follow, replication[n].upstream.peer = url of instance n which is being followed, replication[n].lag and idle = the instance’s speed, described later. Another way to say this is: replication[n].upstream will appear when replication[n].upstream.peer is not of the current instance, and is not read-only, and was specified in box.cfg{replication={...}}, so it is shown in box.cfg.replication.
  • replication[n].upstream.status is the replication status of the connection with instance n:
    • auth means that authentication is happening.
    • connecting means that connection is happening.
    • disconnected means that it is not connected to the replica set (due to network problems, not replication errors).
    • follow means that the current instance’s role is «replica» (read-only, or not read-only but acting as a replica for this remote peer in a master-master configuration), and is receiving or able to receive data from instance n (upstream) master.
    • running means that replication is in progress.
    • stopped means that replication was stopped due to a replication error (for example duplicate key).
    • orphan means that it has not (yet) succeeded in joining the required number of masters (see orphan status).
    • sync means that the master and replica are synchronizing to have the same data.
  • replication[n].upstream.idle is the time (in seconds) since the last event was received. This is the primary indicator of replication health. See more in Monitoring a replica set.
  • replication[n].upstream.lag is the time difference between the local time of instance n, recorded when the event was received, and the local time at another master recorded when the event was written to the write ahead log on that master. See more in Monitoring a replica set.
  • replication[n].upstream.message contains an error message in case of a degraded state, otherwise it is nil.
  • replication[n].downstream appears (is not nil) with data about an instance that is following instance n or is intending to follow it, which ordinarily means replication[n].downstream.status = follow,
  • replication[n].downstream.vclock contains the vector clock, which is a table of „id, lsn“ pairs, for example vclock: {1: 3054773, 4: 8938827, 3: 285902018}. (Notice that the table may have multiple pairs although vclock is a singular name.) Even if instance n is removed, its values will still appear here; however, its values will be overridden if an instance joins later with the same UUID. Vendor clock pairs will only appear if lsn > 0. replication[n].downstream.vclock may be the same as the current instance’s vclock (box.info.vclock) because this is for all known vclock values of the cluster. A master will know what is in a replica’s copy of vclock because, when the master makes a data change, it sends the change information to the replica (including the master’s vector clock), and the replica replies with what is in its entire vector clock table. Also the replica sends its entire vector clock table in response to a master’s heartbeat message, see the heartbeat-message examples in section Binary protocol – replication.
  • replication[n].downstream.idle is the time (in seconds) since the last time that instance n sent events through the downstream replication.
  • replication[n].downstream.status is the replication status for downstream replications:
    • stopped означает, что downstream-репликация остановлена.
    • follow means that downstream replication is in progress (instance n is ready to accept data from the master or is currently doing so)
  • replication[n].downstream.message and replication[n].downstream.system_message will be nil unless a problem occurs with the connection. For example, if instance n goes down, then one may see status = „stopped“, message = „unexpected EOF when reading from socket“, and system_message = „Broken pipe“. See also degraded state.
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
...