Login / Status
developer.Resource
Home . Development . Articles . Testing and tuning TYPO3 performance
Sponsors
hosted by punkt.deTYPO3 and Open Source Magazine

Conclusion

After a lot of successful and useless tweaking, we finally managed to improve our server performance from 4 Req/s to 55 Req/s, That is 14 times faster since we began to play with the knobs. You can see the changes in the chart below. Tuning parameters were added from left to right, beginning with our baseline (green bar), then tuning MySQL, the Linux kernel and libraries, installing eAccelerator and finally turning on caching in TYPO3 (orange bars).

 


Notice that low-level tweaking (Linux Kernel, MySQL) did not improve the performance of the Quickstart site, but remember that its page contents are basically static. The more you increase the share of dynamic content in your website, the more the database could become a limiting factor. Caching was the most prominent tuning candidate: One one hand, by using eAccelerator to cache precompiled PHP bytecode, speeding up the execution of PHP scripts. On the other hand by using the caching ability of TYPO3, storing once rendered pages as HTML in the database. 

Fortunately, most of the TYPO3 sites we know serve mostly static content, so the case of a completely uncacheable site is quite rare. In fact, caching increases performance so much that, unless you need real-time user-specific content, even extremely short caching intervals pay off immediately.

Finally, here come our recommendations: 

  1. Most importantly, install a PHP bytecode cache, such as eAccelerator, and make sure you use TYPO3's caching mechanisms, which are introduced in two excellent articles on the typo3.org development section.

  2. Furthermore, enable MySQL caching if your database is the bottleneck and produces system load. To avoid too much load on your machine, try to reduce the number of MaxClients in the Apache configuration file. 

  3. If you like low level tweaking and have control over your systems kernel and libraries, go for a Linux 2.6 kernel with NTPL. 

  4. In any case, spend enough memory for each of the candidates. 

Acknowledgements 

We'd like to thank Patrick Gaumond for reviewing a draft of this article.