It seems like website and elo system are pegged.
I was think about creating a "ticket" on get satisfaction, but want to get some feedback here first.
1. Web site shouldn't go down. You can use a CDN like cloudflare or something. And update twitter if it is down or make a separate one for server status.
2. In game ratings should be cached instead of rely on the already pegged server. By caching, I mean the client downloads the rating once upon opening the game, keeps it client side and uses the elo alogrith (so we are copying the server side logic to the client for this) to calculate rating on the fly (you have both players cached elo from the client). Rankings would be the only thing that would not be updated on the fly. The results can sit in a queue and wait to be processed by the server (ranking, recent duels, sword type..). For the most part, it would work like a normal cache, but you update the client side cache before the server side because the results are sitting in a queue.
3. Reduce the amount of back and forth between servers. Currently when I switch between rooms, I have to "reload" data I've already loaded. DB's are great at retrieving data, in my experience it's the new/open/close/manage and deliver over socket that creates db lag and suck up CPU (In an optimized environment where the queries aren't doing "table scans".) One way to simplify this is to have a service oriented approach.
These are recommendations I've made based on observation, and not the actual infrastructure. Maybe some of these ideas are on the table, maybe some of them are misguided, but some feedback would be appreciated and meaningful (even if you tell me "to go take a hike, there are more important things"). It can be frustrating for new players to not be able to reach the site as well as for veterans.