The engineering blog of Scout, an application monitoring company, covering Linux performance, Rails, databases, and lessons from running a web app.
HN commenters link it for explanations of CPU steal time and the move from MySQL+MMM to MariaDB Galera, and for its Django N+1 query guide.
[..] just start a blog. Nope, that's also not for you. Because blogging is a nearly full-time occupation, so don't expect to gain readership with that little precious time you have left from coding your product and working your day job. Successful blogs are written by well-funded competitors who don't have to code 18 hours a day and have capital to keep staff on payroll to blog/tweet/whatever and make as much attention-grabbing noise as possible.
True for you and many others but not a universal truth by a long shot. Blogging is far from a time consuming activity if you're both a reasonable writer and neck deep in the subject matter. Let's just take an example that sat on the front page of HN for most of today:
http://blog.scoutapp.com/articles/2010/10/21/why-we-dont-schedule-deployments-during-off-hours
232 words. And as my own blog was on the front page a similar length of time today, I'm confident they got at least 2000 pageviews from that (I got 5000) and I know I've seen several posts of theirs do well here. Yet if you check their blog, they have several posts per month at most, none are very long or technical.
Other startups like SeatGeek and MailChimp nail the blogging in a similar way. There's no way they're not getting some serious exposure with them, yet it seems in most cases it's regular techs updating the blog and not some team of "noise" generating PR flacks.
20% sound ridiculous high, and I would ask where in the world of sanity that people got that number.
If we look at freemium to paid conversion rates, 20% seems out-of-this world large. Almost no one has that high. Looking around, 1% or 2.5% is said to be the average for games[1][2][3].
Why would a pirate be 10 times more likely to be incited to buy a game, rather than those who play a game designed from the ground up to encourage high conversion rates? It sound to me that logic demand that games with features designed for high conversion rates will do better than games that don't.
Ie, to sum up, the conversation rate for pirate->paying should be far less than 2.5% in average, and nowhere near 20%.
[1]: http://blog.scoutapp.com/articles/2009/11/04/running-a-freemium-web-app-heres-a-big-reason-were-growing
[2]: http://www.gamesbrief.com/2011/11/conversion-rate/
[3]: http://www.gamesbrief.com/2013/03/arpdaus-conversion-rates-and-other-new-datapoints/
can confirm.
That said, one can often capture much of the performance benefit with Postgres indexes - basically, instead of trying to tightly-pack the base tables, copy the data into indexes which are tightly packed exactly as you need. Put another way, Postgres indexes are synchronously updated materialized views - and yes, the Postgres planner/optimizer will automatically answer queries from an index if it's faster and all the columns are in there.
I esp recommend reading about function and expression indexes, as well as the (new) covering indexes.
http://blog.scoutapp.com/articles/2016/05/31/3-postgresql-indexing-tricks-that-surprise-everyone
https://www.endpoint.com/blog/2013/06/10/postgresql-functional-indexes
https://paquier.xyz/postgresql-2/postgres-11-covering-indexes/
Actually we're also able to spend a lot more time now on things that really matter to our customers -- things that customers request, like more graphing options and better support for cloud instances. The cloud functionality is already available, and graphing is coming up fast. It's a real pleasure to finally have time to address these things, in addition to the sales and partnership efforts.
Also, performance is significantly better since we simplified the architecture (http://blog.scoutapp.com/articles/2009/10/01/simplify-get-an-order-of-magnitude-speedup), which benefits customers old and new!
http://blog.scoutapp.com/articles/2013/09/24/from-mysql-mmm-to-mariadb-galera-cluster-a-high-availability-makeover
That explains how they chose to minimize deadlocks.
Yes, if you use it incorrectly and/or for the wrong problem space, you will have issues. It isn't a magical solution to all problems. It is, however, an effective solution for a specific problem space.
You can measure it quite easily with NewRelic installed. You will have a nice chat looks like this: https://cl.ly/232r1k1r2z0p
Some good links about stolen cpu: http://blog.scoutapp.com/articles/2013/07/25/understanding-cpu-steal-time-when-should-you-be-worried
https://www.datadoghq.com/blog/understanding-aws-stolen-cpu-and-how-it-affects-your-apps/