scale system

After years living with Joomla!, the big challenge we faced with the Joomla! system was performance. Many customers after upgrade their hardware infrashstructure such as 1 server for mysql and 1 for httpd, some tried to use light weight server such as Nginx, Lighttp but the bottle necks just be resolved in the short time, once the audiences increase, the issue is continuing, and adding more RAM, CPUs doesn't help any more or it was reached the limit of the server. So what's the solutions?

With this post, I shared my experiences on optimization the Joomla! System. First of all, I'm sorry to not have much time to write in details, just the list of things you can do with the system. You can google out or question us by contact form if you have any questions

1. Using Nginx for handling static reuquest such as images, videos, css and javascript. Nginx is much faster than Apache. But what's able the dynamic request to Joomla? For Joomla you can us Php-fpm with Nginx as Fast CGI or using Apache.For me I use php-fpm. But by comparing php-fpm with Apache in most case of Joomla, I don't see the much different. So it's your decision.

2. Install APC for opcose cache for your php files. You can also use it for Joomla's cache.

3. Using Percona or MariaDB for your Mysql. Or at least, you will need to install InnoDB Plugin for Mysql instead of built-in version. For me, I use Percona, you can also optimize your configuration for your mysql by using this Percona's tool. Remember to enable query cache and using innodb for your all tables.

4. Enable Joomla Cache. There are some options for joomla cache storage such as memcache, files, or apc.

5. If you are high invest, you can think about LoadBalancer for http servers and split read/write mysql as different instances[servers]. The problem of joomla doesn't support multiple mysql servers or event http server. It's warmly welcome to discuss on our forum if you have any questions. I will share my experiences on this field.

After you make the changes, we need to test the system, as you know nothing perfect from start and you may wrong in some changes. So we need to test before make it as production site.

Test tools

1. Apache benmark  Normally this tool is available on all server. You can ran command: ab -n NUMBER_OF_REQUESTS -c CONCURRENCY_NUMBER  http://yoursite.com/index.php there isimportant numbers: requests per second. After you make change on the system, check this number with the same number of requests and concurrency.

2. Check time for genrate page for logged in members. And check memory using for each request.