Openshift gear got stuck in the middle of the creation since it reach its quota limit.
The bottleneck is the API model for installations and categories which is chosen badly / poorly from the performance perspective.
The problem is that Installation has it categories member as Set<String> so what this effectively does it that there is a row for every single installation - category pair. If I have three categories, cat1, cat2 and cat3, it is stored like this:
installation1 cat1
installation1 cat2
installation1 cat3
installation2 cat1
installation2 cat2
installation2 cat3
This implementation is not optimal and performs badly. Categories should be moved to standalone Category entity and used in that table by its id.
(1) https://en.wikipedia.org/wiki/Pareto_distribution
|