Skip to main content

Limits and troubleshooting

Limits​

  • State in memory. The queue lives in the memory of each middleware instance. Several Traefik replicas do not share it, and a restart empties it. A dynamic configuration change may also recreate the middleware with an empty queue: change the configuration outside peak hours.
  • Abandoned places. A visitor who closes the waiting page keeps their place in the queue. When their turn comes, the slot stays reserved until inactivityTimeoutSeconds runs out. The queue moves slower than its size suggests when many visitors give up.
  • Approximate wait time. The wait shown is computed from the position, not measured from real departures.
  • Cookie without Secure behind a TLS proxy. The cookie gets the Secure flag only when the TLS connection ends at Traefik.
  • Reload URL. The default page reloads with <meta http-equiv="refresh" content="…;url=./"> and a script that reloads the current path without its query string. On a deep path such as /shop/item, the meta refresh goes to /shop/. Edit the template if visitors must come back to the exact URL.

Troubleshooting​

SymptomCauseFix
Traefik refuses the middleware: invalid QueueManager configurationA value fails the checksFix the value given in the message
The built-in English page shows instead of yoursTemplate not found or invalidCheck queuePageFile and the volume; the log says Could not load queue page template
Empty texts on the waiting pageLanguage missing from the translations file, or file not foundAdd the language, check queueTranslationsFile
Changes to the template or translations do not showFiles are read at startupRestart Traefik
JSON {"error":"capacity overload"} without detailRate limit on requests without the cookieKeep cookies, or raise rateLimitTimes
Visitors go back to the queue while browsinginactivityTimeoutSeconds too short, or cookie expiredRaise inactivityTimeoutSeconds or cookieMaxAgeSeconds

Logs​

The plugin writes to the Traefik standard error, or to logFile, with the prefix [Loch-Queue]. Set debug=true to see each decision (client, position, promotions) while troubleshooting, and turn it off afterwards: it is verbose.