Many of us have heard of Functional Programming, and all the benefits it brings to our code. But how can it be applied to real-world, running, production software?
Tag Archives: jvm
Every day hundreds of thousands of users come to Redbubble searching for art works. Given the large number of works on Redbubble – we host millions of works for our ever-growing community of artists – it’s important that our search engine return good results, because our users sure ain’t going to paginate through millions of works! Standing between us and our quest to produce relevant search results was our 3-year old Solr 3.6. It’s not so much the age that was bothering us, but rather its lack of boolean and relevance functions. Add in the fact that Solr 3.6’s higher memory demand was causing occasional performance problems, we had a solid case to say goodbye to this fella. So we
Recently we noticed that one of our Solr slave processes (a piece of software we use to power the search feature at RedBubble) was taking longer to respond to search queries than usual – enough to trigger a warning alert on our monitoring systems. On first inspection, we saw that the machine was using a lot of memory – enough to go into swap space, but this was sitting around the same level as our other server, which was not experiencing problems. A little more digging, and we noticed, thanks to the JVM monitoring provided by NewRelic, that the Solr process was spending a lot of time (around 15% on average, but up to 50%) doing garbage collection. This means