For Phoenix, the main constraints in performance are usually around configuration like the size of your database pool or if protocols are being consolidated. Once those are tweaked, you are usually good to go!<p>Generally speaking though, Erlang in Anger is a great (and free) resource and Observer is a fantastic tool. When we made Phoenix handle 2 million connections, observer was all we needed to find the bottlenecks. The fix was then to optimize ETS or introduce a pool of processes.<p>If performance is not what you expect, feel free to ping me or Chris. I personally enjoy doing this kind of work. :)