I’m working on an application that works like a search engine, and all the time it has workers in the background searching the web and adding results to the Results table.
While everything works perfectly, lately I started getting huge response times while trying to browse, edit or delete the results. My guess is that the Results table is being constantly locked by the workers who keep adding new data, which means web requests must wait until the table is freed.
However, I can’t figure out a way to lower that load on the Results table and get faster respose times for my web requests. Has anyone had to deal with something like that?
The search bots are constantly reading and adding new stuff, it adds new results as it finds them. I was wondering if maybe by only adding the bulk of the results to the database after the search would help, or if it would make things worse since it would take longer.
Anyway, I’m at a loss here and would appreciate any help or ideas.
I’m using RoR 2.3.8 and hosting my app on Heroku with PostgreSQL
PostgreSQL doesn’t lock tables for reads nor writes. Start logging your queries and try to find out what is going on. Guessing doesn’t help, you have to dig into it.
To check the current activity: