DEV Community

kirandeepjassal-crypto
kirandeepjassal-crypto

Posted on • Originally published at prepstack.co.in

Our Azure Bill Spiked Overnight — Here's Exactly How We Cut It 60% (7 Real Fixes)

Originally published on PrepStack. Cross-posting the TL;DR here.

Finance pinged us on a Monday: our Azure bill was up ~150% month-over-month and still climbing — and nobody had shipped a "big" feature. This is the investigation on a real production SaaS (.NET 9 / ASP.NET Core, Angular 19, ~110k MAU, ~3,200 req/sec on Azure): the seven causes, and the fixes that cut the bill 60%.

Where the money went (before -> after)

Cost driver Spiked After fix What it was
Log / telemetry ingestion $3,100/mo $340/mo A Debug log level left on -> GBs/day to App Insights
Compute (autoscale) $3,400/mo $1,500/mo Scale-out rule, no scale-in
Orphaned resources $1,900/mo $0 Load-test env + unattached disks/IPs
Egress / bandwidth $1,200/mo $280/mo Large files, no CDN
SQL + Redis $1,600/mo $900/mo Premium tiers + no reservations
Storage transactions $500/mo $190/mo Millions of tiny blob ops, hot tier
AI / LLM tokens $400/mo $190/mo Uncached RAG, oversized model
Total ~$12,100/mo ~$4,700/mo -60%

What it covers

  • Turning the lights on first: tagging, a cost dashboard, anomaly alerts
  • The diagnostic queries (az consumption, KQL log-ingestion-by-source)
  • Before/after config for each fix (adaptive sampling, autoscale Bicep, blob lifecycle, CDN + compression, LLM caching + model routing)
  • A FinOps checklist so it doesn't recur
  • The honest limits of cost optimization

The lesson: most runaway bills are a visibility problem, not an architecture one — two config mistakes and some deleted waste did most of the work. ~3 days to fix, paid back in ~2.

Full post with real Azure config, queries, and dollar figures: https://prepstack.co.in/blog/azure-bill-spiked-how-we-cut-it-60-percent

Top comments (0)