Polr 2.x suffers from some performance issues under high load. We can significantly improve performance and reduce bottlenecking by implementing a queue (e.g redis, rabbitmq) for analytics data collection on click, and by caching requests in redis. The performance hit is especially visible when advanced analytics are used.
The cache would reduce the amount of database transactions we make and reduce latency, especially during peak periods. We would need to implement an event that clears links out of the cache when they're updated, and a queue task that inserts the analytics data into the database once the user visits the link. Queueing tasks is especially important when the advanced analytics setting is enabled.
100 connections on single-threaded development server:
Polr 2.x suffers from some performance issues under high load. We can significantly improve performance and reduce bottlenecking by implementing a queue (e.g redis, rabbitmq) for analytics data collection on click, and by caching requests in redis. The performance hit is especially visible when advanced analytics are used.
The cache would reduce the amount of database transactions we make and reduce latency, especially during peak periods. We would need to implement an event that clears links out of the cache when they're updated, and a queue task that inserts the analytics data into the database once the user visits the link. Queueing tasks is especially important when the advanced analytics setting is enabled.
100 connections on single-threaded development server:
10 connections on single-threaded development server:
We can vastly improve the performance during high loads by removing the bottlenecks. I believe #255 is relevant, although it needs to be updated.