1. The problem I’m having:
Every now and then when I look through the logs I see lots of errors that say “unable to obtain ARI lock: context deadline exceeded”.
Sometimes we have the server go down with connection timeouts (it comes back up in under a minute or so), and when that happens I usually see a massive amount of these errors in the logs, though I’m not sure if that’s just coincidence or not because even during the time I see these logs it can respond just fine.
Within the space of 5 minutes I can see 1,200 of these error logs spread across 19 different domains. One domain takes up roughly 900 of those errors. We have something in the range of 150 domains all using on-demand TLS.
Is there anything I can/should do about this, and could this be what’s causing the server to not respond with connection timeouts, or is this just a coincidence?
2. Error messages and/or full log output:
{"level":"error","ts":"2025-10-07T04:18:51.2198329+01:00","logger":"tls.on_demand","msg":"updating ARI","identifiers":["DOMAIN_HERE"],"server_name":"DOMAIN_HERE","error":"unable to obtain ARI lock: context deadline exceeded"}
3. Caddy version:
v2.10.2 h1:g/gTYjGMD0dec+UgMw8SnfmJ3I9+M2TdvoRL/Ovu6U8=
4. How I installed and ran Caddy:
Unzipped the exe from the GitHub releases, run with:
caddy.exe run --config C:\path\to\Caddyfile
a. System environment:
Windows 2022 Server Standard 21H2, Caddy is just running as a service with the previous command
b. Command:
caddy.exe run --config C:\path\to\Caddyfile
c. Service/unit/compose file:
N/A
d. My complete Caddy config:
{
log {
format json {
time_local
time_format rfc3339_nano
duration_format string
}
}
email EMAIL_ADDRESS_HERE
on_demand_tls {
ask http://localhost:7071/api/v1/meta/caddy/ask
}
storage file_system {
root "C:/server/caddy/.caddy"
}
}
import "sites/*"
Each site looks like this:
DOMAIN_HERE {
tls {
on_demand
}
encode zstd gzip
reverse_proxy local.hyperv.vm1:APPLICATION_PORT
}
5. Links to relevant resources:
N/A