Steve wrote:
Thanks Matthew.
I wonder what kind of web setup and cache you use. I have a dedicated server as well, so if u can point me a dirrection with details, that would be a just wonderful. At the moment i am using Apache2, with mariadb and APC, ES dashboard with a lot of stream items loads in 1.5 sek if logged in and arround 1s if not logged in. Site is running without any caches enabled, even joomla. Tried varnish, but i am not so strong to configure vlc to purge cache on POST.
Thanks
I am currently running the latest distro of Ubuntu with the latest versions of both PHP and SQL server. I use the built in zend opcache that comes with the latest versions of PHP which makes APC virtually redundant (I never use it now).
My server specs: Xeon E3-1240 v3, 4 Cores x 3.4 GHz, 8 GB DDR3, 120 GB SSD
I use nginx as the main web server which interfaces with PHP-FPM and a highly tuned MYSQL. Memcached is used in front of the database to cache queries and I store all of the Joomla sessions into memcached. At this point in time I also make use of the simple Joomla file cache as using memcached is much slower and I have the advantage of SSD hard drives.
In addition I also use a content deliver network to offload all images, js and CSS. This basically saves my server from having to deliver this content and is super fast. I also defer the loading of all js so my pages render much faster. Trying to make the page as light as possible is key, so I make sure I have as few http requests as possible and minimize and combine as much js and css as possible.
I have also spent a considerable amount of time tuning the nginx configuration (with max servers ect) to my specific server setup to get the first byte time as low as possible. This is now around 200ms (the same as Google roughly). The database also need constant tuning and I do this every 48 -72 hours and adjust certain variables to keep everything optimal.
Yes, I am running a very custom setup of Varnish 4 which really helps to load balance and keeps everything fast under peak periods of very heavy load. Basically everybody who is not signed in to the site are served pages directly from memory. With around 400 - 500 visitors at any time this saves my server having to serve tons of PHP and SQL requests and instead I concentrate my resources on my logged in members. Even when members are logged in I will try and server as much as I can directly from memory. This helps keep load averages even at peak well below the 1.0 mark with plenty of breathing room. Currently the highest amount of members logged in has been around 150. The server is now capable of I would say handling 400 members online before slowing. Not much is being passed to disk as mostly everything is being served as much as possible directly from RAM.
I have had to alter some parts of the Joomla core to achieve this, especially the way Joomla handles session cookies. I have also had to write custom rules based on components I am using. It has taken some time to perfect this.
I am lucky in the fact that I did a degree in Computer Science, So I can code! I have spent years messing around with various server configurations and am mostly self taught in command line and server optimization. I am now messing around with huge server balancing projects as the projects we are asked to build become more and more complex.
It would be hard to recommend a generic server setup as each project has its own requirements. However I would be happy to help a few members setup their servers and get the very best out of them. When building a new server every aspect has to be taken into consideration from the very start, beginning with the choice of operating system!
Do not be afraid to start over if things are not working well. I have often backed up my files, wiped the server and began from scratch!