It sounds to be that your workers (processing the csv) take a lot of CPU usage and therefore the whole server is getting slower because the CPU usage is high. Normally when you process this amount of data it's wise to split this into multiple servers. The most ideal setup might even be to have a separate web server, database server and worker server. This means you have three servers, but if your workers are having a hard time you can either scale that server or add another server that is also reading from the queue.
Separating the database into a different server will also take down the CPU usage in the end. Right now you write and read a lot from the database and this takes time and memory. If you have this on a separate server you will probably get some extra speed as well.
Does this help you in any way? Do you have more questions? Let me know!