View Post

Troubleshooting (Web) Application Performance Issues with Strace

In Apache by Aurimas Mikalauskas2 Comments

What do you do when your Linux web app starts acting out? You troubleshoot it, of course! Me too. And today I would like to talk to you about one tool that works really well with all sorts of applications and application servers – ranging from apache http server running modules (mod_php, mod_perl, etc.), to applications running in fast cgi setting or even simple single-threaded programs. Read More

View Post

MySQL 5.7 default configuration: what’s new? (and what’s not)

In MySQL by Aurimas MikalauskasLeave a Comment

Inspired by Peter Zaitsev’s post for MySQL 5.6, I decided to do a comparison between default configuration of MySQL 5.6 and 5.7. And I gotta tell you, some of the changes I found will have a huge impact on performance so make sure to get yourself familiar with them before you upgrade, even if you’re not otherwise running with a default configuration. Read More

View Post

MySQL Performance Troubleshooting Crash Course. A Story Of One Sneaky MySQL Performance Bug

In MySQL by Aurimas MikalauskasLeave a Comment

What better way to learn the basics of MySQL Performance Troubleshooting, than by observing a MySQL expert troubleshoot a nasty MySQL 5.7 performance bug, that a team of DBAs were chasing for weeks before giving up and calling in an external consultant for help.

The bug was causing roughly 2 minute long lock-ups for all MySQL write queries at seemingly random 20-30 hour intervals and it took me (the external consultant) only 4 hours to uncover the issue (and a couple more to find and showcase a solution). Read More

View Post

Troubleshooting MySQL Performance. Step Zero: Check If You Have a Performance Problem to Troubleshoot

In MySQL by Aurimas Mikalauskas1 Comment

I lost count of the number of times I had customers come to me for a regular MySQL performance check-up saying “no, we don’t have any performance problems right now”, just to find they do actually have them, they’re just not aware of it. It’s no big surprise this happens when you’re not using your system as actively as your users are.

So let me share with you one trick I’m using to quickly check if the system I’m on has any problems that need troubleshooting. Actually, it’s dead simple. And no, it’s not a slow query log, it’s Threads_running. Let me show you.
Read More

View Post

17 Key MySQL Config File Settings (MySQL 5.7 proof)

In MySQL by Aurimas Mikalauskas6 Comments

When MySQL becomes too slow (or too unstable), temptation usually is to tweak the MySQL configuration file. Indeed, it’s a good place to start. But if you ever looked at the available configuration options, you know things can get messy – MySQL now has over 450 configuration variables for your consideration, that are not classified in any way, and neither of them are included in the stock my.cnf. It’s hard to know where to start! Read More

Running Elasticsearch in Production. The Ultimate Checklist

In Elasticsearch by Aurimas MikalauskasLeave a Comment

Running Elasticsearch in dev and production is day and night difference. For dev, you just run “elasticsearch” and you’re done. In production, you would almost never run one instance anyway, but there’s a lot more you need to do and check when running a production Elasticsearch cluster.

Here’s a quick checklist for you to go over every now and again, if you don’t want to get into trouble with your cluster: Read More

Quick way to improve Elasticsearch performance on a single machine

In Elasticsearch by Aurimas MikalauskasLeave a Comment

It’s hard to find a server that has less than 4 cores and at least 2 disks these days. Multi-core, multi-disk environments have now become a commodity, yet not all software is built (or, in some cases, configured out of the box) to make the best use of that. Moreover, measuring and instrumenting such systems properly has become increasingly complex, which is why this has been one of the most interesting topics that I give talks in various tech conferences on.

Elasticserach is not an exception. Yes, it is multi-threaded and it does make a pretty good use of available CPUs or disks, especially at high concurrency environment. But. If you want your queries to return faster using as much CPU or Disk capacity as they possibly can, there’s something you can do about it. Read More

Apache -vs- Nginx. 2015 Edition

In Web Servers by Aurimas Mikalauskas4 Comments

apache -vs- nginx
The choice used to be clear:

  • You want convenience – go with Apache
  • If you want speed – then it’s Nginx

Or lighttpd. Or whatever, but NOT Apache web server. Sometimes they were even used in conjunction – Nginx on the front, to spoon-feed slower client connections and serve static content (using almost no memory for that), and Apache at the back, to generate dynamic content.

Digital ocean has covered the practical considerations of running one or the other (or both) very nicely, so I’m not going to. What I am going to tell you though is that it is outdated. Long gone the days when Nginx had a significant advantage over Apache. Read More