I'm not exactly sure how you have your services setup but I'd recommended making the chat system, the mail, and the auction house each running as their own process with a lower nice level than that of the game service. That way no matter how busy the actual game service is, those services will always have priority.
Several reasons for this..
1. I've noticed during peak times, the mail system can take upwards 45 seconds from the time you click "send" till the time the mail actually sends.
2. Same with the Auction house.. It don't ever delay like the mail system does, but it does appear to be either lagging or throttled in some way. Scanning 300 pages of auctions takes roughly 15-20 minutes.
3. The chat system.. I've never experienced any delay in the chat system, but running it as its own process would enable you to expand on it. Perhaps implement a "filter" that monitors transmitted messages for key words.. Perhaps the phrases the gold spammers use, or their urls.. then auto kick/ban.
I understand you're using cloudflare, and it does a good job of blocking most known proxy servers, but obviously the spammers are getting through it. There are tons of proxy servers they can hide behind, you're going to need some form of automated regulation or that's all you're GM's are going to be doing is getting tickets and responding to gold spammers. It may seem tedious at first, but every automated kick/ban is one less proxy server they can use to connect with. They will run out of options at some point. They will give up very quick if they can't even get their message seen before their current IP is useless and they have to find another.