# `NebulaAPI.APIServer.NodesInfoCache`
[🔗](https://github.com/podCloud/nebula_api/blob/v0.7.1/lib/nebula_api/api_server/nodes_info_cache.ex#L1)

Per-node background refresher for the cluster node-info snapshot.

One instance runs per node, as a child of `NebulaAPI.APIServer` (which owns the
ETS cache). It rebuilds the node-info snapshot on a fixed interval and writes it
to ETS, so readers (`get_nodes_info/0`, hence every function-selector route)
never trigger an RPC fan-out themselves — they just read the latest snapshot.

This is what kills the thundering herd: refreshing is a single, periodic,
per-node job rather than something each concurrent caller does on cache miss.

The flip side is a fixed background cost: every node refreshes on every interval,
whether or not anything reads the snapshot — i.e. one RPC fan-out per node per
interval, cluster-wide. With the 5s default this is negligible for the small
clusters NebulaAPI targets; raise `nodes_info_refresh_interval` if your cluster
is large or node selectors can tolerate staler info.

The interval is `config :nebula_api, nodes_info_refresh_interval: <ms>`
(default 5000), overridable per-instance with the `:interval` option (used in
tests).

# `child_spec`

Returns a specification to start this module under a supervisor.

See `Supervisor`.

# `start_link`

---

*Consult [api-reference.md](api-reference.md) for complete listing*
