Here are some best practices to keep your Print Servers stable!
1. Minimize the driver count, stick to universal if you can (less features)
2. Set all your print ports to “winprint” with powershell
get-printer | set-printer -PrintProcessor "Winprint"
3. Set all your print rendering to happen on the server and NOT client with powershell
get-printer | set-printer -RenderingMode SSR
4. If your print drivers support it, set them to isolated or at least shared (shared is the default in 2012 r2), this prevents drivers from crashing each other or the print spooler.