MySQL and MariaDB innodb_file_per_table

For those of you pushing your MySQL instances to higher levels, you'll have realized at some point that all InnoDB tables share their indexing space into a single file (ibdata1, usually). This has several very bad outcomes:
  • the ibdata1 file becomes huge after some time (we've seen it pass the 8GB bar)
  • starting the MySQL server takes longer
  • deleting an InnoDB table *doesn't* reduce the space used by ibdata1
  • you have to shutdown your server, remove ibdata1 completely, then restart the server in order to reinitialize the ibdata1 file to a 0-size file (but th

Using php5-memcached to store sessions on distributed servers

This article is an extension of the previous article about storing sessions in Memcached with PHP. Using Memcached for sessions storage is generally a matter of speed (storing them in memory is faster than on disk) and of scalability (using a Memcached server allows you to have several web servers serving the same PHP application in a seamless way). In the previous article, we mentioned (3 years ago) that the php5-memcached extension did not seem to manage the storage of sessions quite well, or at least t

On PHP and cache slams and solutions

While reading about Doctrine's cache mechanism (which applies to other stuff than database queries, by the way), my eye was caught by a little message at the end (last section) about cache slams. I have used cache mechanisms extensively over the last few years, but (maybe luckily) never happened to witness a "cache slam". There's a link to a blog (by an unnamed author) that explains that. To make it short, you can have race conditions in APC (and

Nginx + CDN + GoogleBot or how to avoid many useless Googlebot hits

If you're like me and you've developed a CDN distribution for your website's content (while waiting for SPDY to be widely adopted and available in mainstream distributions), you might have noted that the Googlebot is frequently scanning your CDNs, and this might have made your website a bit overloaded. After all, the goal of the CDNs are (several but in my case only) to elegantly distribute contents across subdomains so your browser will load the page resources faster (otherwise it gets blocked by the HTTP limit or any higher limit set by your browser of simultaneous content download). Hell,

Google's new terms to reduce spamming is really taking effect

I don't know about you, but in the latest months, I've received a series of requests which follow the same pattern:
LINK REMOVAL REQUEST Dear Website Owner: It has come to our attention that a number of links exist on your domain which send traffic to our website [theirdomain.com].  We have determined that these links may be harmful either to the future marketing and reputation of [theirdomain.com], or to our users. Accordingly, we kindly request that you (A) remove all existing links to [theirdomain.com] from your domain, including, but not limited to the following URLs: http:/

Installing Redmine 2.1 on Debian Squeeze with Apache modPassenger

This article is co-authored by Jérôme Warnier, from work mostly done by him with my occasional support. Kudos go to him. We couldn't find any valuable manual to install Redmine 2.1 on Debian Squeeze, and we sure met a lot of resistance along the way, so we came up with the following step-by-step guide...

Sources of inspiration

We used the following resources as a starting point.