otel.nix: trim the StartLimit comment block to the load-bearing points
Cut ~27 lines of blackout-measurement and cross-reference narrative (already in the PR body / issue) down to the three things a reader actually needs at this call site: the [Unit]-vs-[Service] trap, why Restart is absent, and the window-vs-burst constraint.
This commit is contained in:
parent
596c0c17bc
commit
5cec69bd21
1 changed files with 6 additions and 29 deletions
|
|
@ -627,35 +627,12 @@ in
|
||||||
};
|
};
|
||||||
|
|
||||||
systemd.services.opentelemetry-collector = lib.mkMerge [
|
systemd.services.opentelemetry-collector = lib.mkMerge [
|
||||||
# Survive a restart that races the outgoing process off
|
# ⚠️ `StartLimit*` are `[Unit]` settings; systemd IGNORES them under
|
||||||
# `telemetryPort`. Every deploy, the replacement collector has been
|
# `[Service]` — in `serviceConfig` they render, deploy and do
|
||||||
# reaching `bind()` while the old one still holds `127.0.0.1:8888`,
|
# nothing. `checks.module-eval-hive-otel` pins them in `unitConfig`.
|
||||||
# and nixpkgs' `Restart = "always"` with no `RestartSec` turns that
|
# `Restart` is deliberately NOT set: nixpkgs' own module defines it
|
||||||
# into the worst possible response: five retries inside two seconds,
|
# at normal priority, so a second definition is a module-system
|
||||||
# `start-limit-hit`, and no telemetry at all until something else
|
# conflict. The window must exceed `RestartSec × burst`.
|
||||||
# pokes the unit. Measured at ~27s of blackout per deploy.
|
|
||||||
#
|
|
||||||
# 🔑 Same inversion the credential wait below records — `always`
|
|
||||||
# reads like it makes this self-healing and does the opposite. A
|
|
||||||
# FAST-failing unit exhausts its allowance before the thing it is
|
|
||||||
# waiting for (here, an exiting process letting go of a socket) can
|
|
||||||
# possibly have happened. Nothing here removes that race; it makes
|
|
||||||
# the unit outlast it instead.
|
|
||||||
#
|
|
||||||
# Sized for a socket held by a process already on its way out —
|
|
||||||
# seconds, not an unseal's hours. 5s ends the blackout within one
|
|
||||||
# interval of the port coming free; 12 attempts ride out 55s of it
|
|
||||||
# being held, twice the worst gap observed. `Restart` itself is
|
|
||||||
# deliberately NOT set, same as both container collectors: nixpkgs'
|
|
||||||
# own module defines it at the normal priority, so a second
|
|
||||||
# definition is a conflict the module system refuses.
|
|
||||||
#
|
|
||||||
# ⚠️ `StartLimit*` are `[Unit]` settings and systemd IGNORES them
|
|
||||||
# under `[Service]` — written into `serviceConfig` they render,
|
|
||||||
# deploy and do nothing. These two options are the `[Unit]`
|
|
||||||
# spelling; `checks.module-eval-hive-otel` asserts they land in
|
|
||||||
# `unitConfig` and not beside `RestartSec`. The window has to
|
|
||||||
# exceed `RestartSec × burst`.
|
|
||||||
{
|
{
|
||||||
startLimitBurst = 12;
|
startLimitBurst = 12;
|
||||||
startLimitIntervalSec = 120;
|
startLimitIntervalSec = 120;
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue