4 ms·
Pushing it in terms of performance and complexity. We have high QPS and need low latency, a few milliseconds to do a lot of work. Baseline performance of nice i
by bluesnowmonkey 4y ago
Pushing it in terms of performance and complexity. We have high QPS and need low latency, a few milliseconds to do a lot of work. Baseline performance of nice idiomatic Elixir is good enough mostly for general business logic. Tools like Recon help you find bottlenecks. You can move state off heap into ETS to reduce GC, or share a public ETS table to eliminate inter-process communication. You can dynamically recompile a module at runtime when configuration changes. You can move really hot loops into NIFs. These are all relatively easy once you know how and really good at eliminating bottlenecks.
On call is great. Tail latency (p99.9 and up) is great, much better than Java, due to per-process vs stop-the-world GC. Remote console is a superpower, lets you debug in production. Minor flakiness tends to get handled silently be supervised processes crashing and getting restarted. Elixir stuff just pages us much, much less than other languages.