Cloudron makes it easy to run web apps like WordPress, Nextcloud, GitLab on your server. Find out more or install now.


    Cloudron Forum

    • Register
    • Login
    • Search
    • Categories
    • Recent
    • Tags
    • Popular

    Apache, OLS and Nginx-Custom Benchmarks

    WordPress (Developer)
    performance benchmark
    7
    27
    899
    Loading More Posts
    • Oldest to Newest
    • Newest to Oldest
    • Most Votes
    Reply
    • Reply as topic
    Log in to reply
    This topic has been deleted. Only users with topic management privileges can see it.
    • MooCloud_Matt
      MooCloud_Matt last edited by girish

      Hi!
      in the next days we start testing on 2 of the images we have prepared.
      We would like to know what data you would most like to know about their performance.

      Our testing environment will be:

      • 2 Epyc vCore
      • 2 GB Ram DRR4 ECC
      • NVMe PCI-e 3gen

      The app will be tested with 500MB of ram and 500MB of swap.

      Our goal is to have similar performance for our image and other WordPress hosting setup available, for this we have plan to test:

      • Cloudron standard apache setup (unmanaged)
      • OLS app that we have develop erly this summer (will be on the store early December)
      • Nginx custom build, with pagespeed mod, and some server side tweak to improve performance.

      All 3 with this combination:

      • With and without Redis object cache
      • We will use one or more cache plugin (which one is your favourite?) to test there performance with this 3 setup.
      • Just with server side cache.

      If you have any advice on testing tool to use, or other setup for wp to be test just commend, every thought is appreciated.

      Matt.

      Matteo. R.
      Founder and Tech-Support Manager.
      MooCloud MSP
      Swiss Managed Service Provider

      robi Lonkle 2 Replies Last reply Reply Quote 3
      • robi
        robi @MooCloud_Matt last edited by

        @moocloud_matt it would be interesting to add a few WP WAFs to the mix, like WP Cerber and other WP FWs; to see the impact of having such added vs benefit.

        Life of Advanced Technology

        MooCloud_Matt 1 Reply Last reply Reply Quote 0
        • girish
          girish Staff last edited by

          I have used ab extensively for load testing - https://www.digitalocean.com/community/tutorials/how-to-use-apachebench-to-do-load-testing-on-an-ubuntu-13-10-vps . You can send out concurrent requests easily.

          d19dotca 1 Reply Last reply Reply Quote 1
          • MooCloud_Matt
            MooCloud_Matt @robi last edited by

            @robi
            naxsi is included in our nginx build probably

            Matteo. R.
            Founder and Tech-Support Manager.
            MooCloud MSP
            Swiss Managed Service Provider

            1 Reply Last reply Reply Quote 0
            • d19dotca
              d19dotca @girish last edited by

              @girish ab is great, and jMeter too. Those are the two we use most frequently at work as they're the easiest but also give us the least trouble / cause less issues downstream when load testing (though the products I support at my day job are very complex API Gateways which have a habit of being temperamental lol)

              --
              Dustin Dauncey
              www.d19.ca

              1 Reply Last reply Reply Quote 0
              • jimcavoli
                jimcavoli App Dev last edited by

                Blazemeter makes a really slick tool called Taurus - https://gettaurus.org - which makes using the heavyweight Jmeter miles easier and like 1000x cooler-looking in your shell. Definitely recommend it.

                d19dotca 1 Reply Last reply Reply Quote 3
                • d19dotca
                  d19dotca @jimcavoli last edited by

                  @jimcavoli haha, yeah Blazemeter is a great product and so is Taurus. I actually work for the company that makes it too (though not on their team, I work on another product portfolio in the company), full disclosure. 😉

                  --
                  Dustin Dauncey
                  www.d19.ca

                  1 Reply Last reply Reply Quote 2
                  • Lonkle
                    Lonkle @MooCloud_Matt last edited by

                    @moocloud_matt Where will you be posting these benchmarks? This is a really fantastic initiative.

                    MooCloud_Matt 1 Reply Last reply Reply Quote 0
                    • MooCloud_Matt
                      MooCloud_Matt @Lonkle last edited by

                      @lonk
                      here below, probably this week, in 2 or 3 days. also I wanted to specify that we will work mainly with Server-Side-Cache apart from OLS which integrates the server side with wordpress.

                      Matteo. R.
                      Founder and Tech-Support Manager.
                      MooCloud MSP
                      Swiss Managed Service Provider

                      1 Reply Last reply Reply Quote 0
                      • MooCloud_Matt
                        MooCloud_Matt last edited by

                        Soo here we are with some data, and information.

                        To best test which solution was the best we actually have to create 3 image for nginx.

                        • FastCGI Cache
                        • Redis Full Pace Cache
                        • Cache Enabler (html file cache) this is here to show app level cache, with direct integration with the webserver, the call is not pass to FPM.

                        Our main image will be Redis Full Page Cache in till the support for RAM disk inside the container, then we will see how FastCGI will perform.

                        Basic information.

                        All the test are on our cloud platform hosted in 2 datacenter using 2 different server.

                        Server 1:

                        • 2 vCPU Intel XEON
                        • 2GB RAM
                        • and NVMe SSD on M2 Slot (over chipset) on RAID 1

                        Server 2:

                        • 2 vCPU AMD Epyc
                        • 2GB RAM
                        • and NVMe SSD on PCI-E directly to CPU on RAID 1

                        Both server have 1Gbit's port

                        The test are been done using as a client a server in the same rack, with the same specks of the tested one.

                        Only the app what we was testing was on at that time, and have 1 Cloudron GB as memory limit, that mean 1/2 is ram 1/2 is swap.
                        CPU Shares are set as default at 50%

                        How we test

                        Remember: this a preliminary test, not completely validated, we need to have various confirmation and runs before calming that they are perfect score.

                        We reboot the server, then stop all the app.
                        Check using HTOP if there was something going on on the server, if it was all clear we start testing.

                        We build 2 page, using divi builder the most commune builder with Elementor.
                        44e380a3-61ca-4477-b8b1-9269204ec6e1-image.png

                        1811d7c2-2543-45fe-ae00-d3f600fe4541-image.png

                        They have inline CSS, JS and we didn't use any plugin for optimizing the content, we have only use the plugin needed to enable cache control from WP.
                        Both pages have varius CSS file and Image + SVG.

                        For this test all image was the original, we will testing our auto optimize image script later.
                        We execute 8 test for every App.

                        • 5, 20, 50, 100 Concurrent session for a total of 500 session each.
                        • For both pages + some image and CSS in the page, not all the content

                        Results

                        c6d329ba-71f9-4fa4-ad10-ba9ff194b89a-image.png

                        What we see is 2 image that have server side cache boost there performance, they use different technique, redis full page cache save (similar to what nginx proxy cache do) a copy of the output in the RAM using the 300MB standard container provided by cloudron (we have better performance on Epyc due to low latency memory supported).
                        FastCGI save part of the page and the information pre-elaborate on the NVMe Storage and some on the RAM (we have a 3% better performance on the Epyc server probably due to the Storage been connected directly to the CPU).
                        What we didn't aspect was the terrible results (compare to the other NGINX set up) that Cache Enabler image have done, this is probably due to a check and the redirect of the request to an HTML page, saved in the NVMe Storage.

                        Why Redis Full Cache is for now the fastest?
                        Because it use a direct connection to Redis and is all in the cache, nginx don't need to interact with the FileSystem, and as we probably know Redis is one of the fastest "DB" available and is not limited to the IO for your disk, DRAM of your SSD, Chipset or raid card, but only from your RAM and CPU_RAM connection.
                        Especially with near AMD CPU that provider higher RAM frequency and bandwidth, Redis Full Cache page show to be the fastest solution that we can provide on cloudron.

                        Remember: this a preliminary test, not completely validated, we need to have various confirmation and runs before calming that they are perfect score.

                        Matteo. R.
                        Founder and Tech-Support Manager.
                        MooCloud MSP
                        Swiss Managed Service Provider

                        d19dotca 1 Reply Last reply Reply Quote 2
                        • d19dotca
                          d19dotca @MooCloud_Matt last edited by

                          @moocloud_matt Just want to make sure I understand... since the current WordPress Developer package uses Apache and Redis caching already, is the only difference with your testing for Redis involvement just that it's running behind Nginx instead of Apache? Just trying to understand the comparison between what we already have vs what you're proposing with Redis cache (since it seems the fastest and most similar to what we've already got in terms of Redis cache being used).

                          --
                          Dustin Dauncey
                          www.d19.ca

                          MooCloud_Matt 1 Reply Last reply Reply Quote 1
                          • marcusquinn
                            marcusquinn last edited by marcusquinn

                            @MooCloud_Matt Nice work! I went through similar comparisons a few years ago with similar results.

                            Ultimately, we settled on FastCGI as relatively simpler and low to no maintenance needs when we're deploying updates throughout each day that need cache-clearing every time anyway.

                            Do you plan on having uncached benchmark instance comparisons?

                            For anyone else following and unfamiliar; WP Admin, Woocommerce, logged-in users, and any other dynamic content plugins can't use full-page caching.

                            The simplest page to test for uncached server config performance is /my-account/ when you have Woocommerce installed and /wp-login.php if you don't.

                            If anyone wants to test any page's uncached performance, just add a cache-busting random GET var to the end of the URL, eg: ?v=762138 and just change the number each time so it's always serves from php.

                            We're not here for a long time - but we are here for a good time :)
                            Jersey/UK
                            Work & Ecommerce Advice: https://brandlight.org
                            Personal & Software Tips: https://marcusquinn.com

                            MooCloud_Matt 1 Reply Last reply Reply Quote 1
                            • MooCloud_Matt
                              MooCloud_Matt @d19dotca last edited by

                              @d19dotca said in Apache, OLS and Nginx-Custom Benchmarks:

                              Apache and Redis caching

                              Sorry i was not so clear on this.
                              Cloudron now don't provide any webserver cache (for what i know), what you have now is a DB cache, it sit between PHP and the DB.

                              What you see as "Apache" in the test is the standard cloudron app with "REDIS OBJECT CACHING", during the test in all app testes that lvl of cache was active, but in the Redis Full-Page Cache we use a integration between Nginx and Redis directly in addition to the Object Cache, so that PHP will never get involve if the page was already been serve to a similar client.

                              i will use this pics by runcloud to show you:
                              bf3b54f8-9000-4879-8823-9e37e47ca3db-image.png

                              What we build is similar to what runcloud call RunCache, redis in this case is used to store HTML, CSS and JS content and not query to the DB.

                              Matteo. R.
                              Founder and Tech-Support Manager.
                              MooCloud MSP
                              Swiss Managed Service Provider

                              1 Reply Last reply Reply Quote 2
                              • MooCloud_Matt
                                MooCloud_Matt @marcusquinn last edited by

                                @marcusquinn said in Apache, OLS and Nginx-Custom Benchmarks:

                                Nice work!

                                Ty!

                                @marcusquinn said in Apache, OLS and Nginx-Custom Benchmarks:

                                uncached benchmark

                                Yes we have already done it, we have a 20% on the complete page (whit all the css, js, pics, ...) tanks to the better resources management by Nginx on static content, we will provide more details later this week.
                                But no big improvement on just php-fpm (nignx) or fastcgi (apache) performance, apache is pretty much the best in just php content.

                                @marcusquinn said in Apache, OLS and Nginx-Custom Benchmarks:

                                Woocommerce

                                WC will be supported just on the Redis Full-Page Cache (Redis FPC) cache for now, we plan to support it on fastcgi early next year, with the support for tmpfs on Cloudron APP.

                                Btw on Redis FPC we will support partial cache soon, so wp-admin will be cached to, but partially.

                                Matteo. R.
                                Founder and Tech-Support Manager.
                                MooCloud MSP
                                Swiss Managed Service Provider

                                marcusquinn 1 Reply Last reply Reply Quote 0
                                • marcusquinn
                                  marcusquinn @MooCloud_Matt last edited by

                                  @moocloud_matt Cool, happy to help with some A/B testing on our WP stack which is rather bulky but quite well optimised on the app level. Eg, this site is running on Cloudron now:

                                  • https://swanson.co.uk/
                                  • https://status.swanson.co.uk/

                                  Something like 200 plugins, including Woocommerce.

                                  We use WP Super Cache for fragment caching, and happy to recommend it. Although, caching is the number one cause of issues with relatively new WP devs, so I always recommend optimising the app without any caching first, especially slow queries and php warnings before getting involved with caching.

                                  The blessing and curse of WP plugins eh, anyone can publish them 😂

                                  We're not here for a long time - but we are here for a good time :)
                                  Jersey/UK
                                  Work & Ecommerce Advice: https://brandlight.org
                                  Personal & Software Tips: https://marcusquinn.com

                                  1 Reply Last reply Reply Quote 2
                                  • Lonkle
                                    Lonkle last edited by

                                    @MooCloud_Matt This is huge. Those gains are insane with not that difficult of an infrastructure change.

                                    Curious, did you ever test an OLS implementation with their official OLS Caching plugin? The subject implied you were going to but maybe I misinterpreted the acronym (Open Lightspeed?).

                                    MooCloud_Matt 1 Reply Last reply Reply Quote 1
                                    • MooCloud_Matt
                                      MooCloud_Matt @Lonkle last edited by

                                      @lonk
                                      we pause the OLS development, (is in beta and is stable) to focus on Nginx Setup.
                                      Now our focus is to create a open beta soon, then post those app on the Cloudron store.
                                      and early next year make a some image intercompatible, so you can change from FastCGI + PageSpeed to only FastCGI, or From RedisFPC to FastCGI, ...

                                      But we don't know for now what we will able to do, we are focusing to prepare open beta for now.

                                      Matteo. R.
                                      Founder and Tech-Support Manager.
                                      MooCloud MSP
                                      Swiss Managed Service Provider

                                      Lonkle 1 Reply Last reply Reply Quote 1
                                      • girish
                                        girish Staff last edited by

                                        OLS also requires https://docs.cloudron.io/custom-apps/manifest/#httppaths feature which will be in coming release. So, makes sense to pause it a bit.

                                        1 Reply Last reply Reply Quote 2
                                        • Lonkle
                                          Lonkle @MooCloud_Matt last edited by

                                          @moocloud_matt said in Apache, OLS and Nginx-Custom Benchmarks:

                                          @lonk
                                          we pause the OLS development, (is in beta and is stable) to focus on Nginx Setup.
                                          Now our focus is to create a open beta soon, then post those app on the Cloudron store.
                                          and early next year make a some image intercompatible, so you can change from FastCGI + PageSpeed to only FastCGI, or From RedisFPC to FastCGI, ...

                                          But we don't know for now what we will able to do, we are focusing to prepare open beta for now.

                                          I would love to be part of the Open Beta since I don't use my Cloudron for anything production, just dev.

                                          1 Reply Last reply Reply Quote 1
                                          • MooCloud_Matt
                                            MooCloud_Matt last edited by

                                            Update on WAF:

                                            We have disable the WAF features for now, that we had plan due to instability in TTFB timings.

                                            Maybe we will add a CDN to host blacklists and information repository that WAF module need to work.
                                            Because now it take from .9 to 2 seconds to check the ip/browser and our objective is to have mostly all normal page load in 3 or less seconds.

                                            update on redis full Page cache (fpc)

                                            We are working on the partial page cache, or sr-cache module.
                                            But we are not shore if this will improve performance even more.
                                            Is just a better management of the cache.

                                            WordPress nginx helper

                                            We are using nginx-helper plugin to let you clear your cache from WordPress, but due to how we are implementing stuff, we will create a fork to better sweet our nginx stack.

                                            prestashop php-fpm + cache

                                            We are working on prestashop for cloudron too.
                                            This is a test to see how much flexible is our FPM+fastcgi cache setup

                                            (No redis cache possibile, due to license on plugin to support it)

                                            Matteo. R.
                                            Founder and Tech-Support Manager.
                                            MooCloud MSP
                                            Swiss Managed Service Provider

                                            Lonkle 2 Replies Last reply Reply Quote 2
                                            • Lonkle
                                              Lonkle @MooCloud_Matt last edited by

                                              @moocloud_matt Thanks for the update on your work! I love this stuff and it's going to be so beneficial to the community as a whole.

                                              1 Reply Last reply Reply Quote 0
                                              • Lonkle
                                                Lonkle @MooCloud_Matt last edited by

                                                @moocloud_matt After all of this development, what was your final stack after all of this research?

                                                No redis cache possibile, due to license on plugin to support it

                                                What kind of plugin, WP is mandatorily GPL for all themes and plugin code.

                                                MooCloud_Matt 2 Replies Last reply Reply Quote 0
                                                • MooCloud_Matt
                                                  MooCloud_Matt @Lonkle last edited by

                                                  @lonk
                                                  it's only mandatory to be on wp.org repo

                                                  Matteo. R.
                                                  Founder and Tech-Support Manager.
                                                  MooCloud MSP
                                                  Swiss Managed Service Provider

                                                  Lonkle 1 Reply Last reply Reply Quote 0
                                                  • Lonkle
                                                    Lonkle @MooCloud_Matt last edited by

                                                    @moocloud_matt said in Apache, OLS and Nginx-Custom Benchmarks:

                                                    @lonk
                                                    it's only mandatory to be on wp.org repo

                                                    Looks like if it's a Wordpress plugin, then the code automatically falls under GLP no matter the repo: https://kinsta.com/learn/wordpress-gpl/ - that's why Wordpress premium plugins can be distributed freely.

                                                    But a plugin can implement license protections to protect their code technically, it still doesn't take away the right of the user to use it in any way they see fit EXCEPT for graphic assets.

                                                    1 Reply Last reply Reply Quote 0
                                                    • Lonkle
                                                      Lonkle last edited by Lonkle

                                                      And redis is already apart of Cloudron installs actually - is there a specific redis plugin that you need to use? I thought the OLS Caching plugin handled redis?

                                                      MooCloud_Matt 1 Reply Last reply Reply Quote 0
                                                      • MooCloud_Matt
                                                        MooCloud_Matt @Lonkle last edited by

                                                        @lonk
                                                        btw the all section is for prestashop:

                                                        @moocloud_matt said in Apache, OLS and Nginx-Custom Benchmarks:

                                                        prestashop php-fpm + cache
                                                        We are working on prestashop for cloudron too.
                                                        This is a test to see how much flexible is our FPM+fastcgi cache setup
                                                        (No redis cache possibile, due to license on plugin to support it)

                                                        But a tweek for closed source plugin in WP.
                                                        GPL in WP is applied to ALL folder inside the ROOT folder of WP.

                                                        That mean that all function that call script in other section of the server are not included, an exemple is the ESI part for LS cache for wordpress, is the module that manage the "Edge Side Includes" feature inside WP and WooCommerce.

                                                        Matteo. R.
                                                        Founder and Tech-Support Manager.
                                                        MooCloud MSP
                                                        Swiss Managed Service Provider

                                                        1 Reply Last reply Reply Quote 0
                                                        • MooCloud_Matt
                                                          MooCloud_Matt @Lonkle last edited by

                                                          @lonk said in Apache, OLS and Nginx-Custom Benchmarks:

                                                          redis is already apart of Cloudron

                                                          Yes & no,
                                                          Yes is part of the cloudron addon, but it can be integrated in different way.

                                                          • You can use it for dynamic cache (as cloudron use in there apps), behind the php, db lvl.

                                                          • You can use it as a Full Page Cache (similar to what Cache Enebler do but in RAM and not in local disc). php lvl

                                                          • You can use it for partial page caching, in this case is at webserver/proxy lvl.

                                                          Redis is just a "database" in RAM, you can use it to store what you want, Redis is not a cache, but you can use it as it was one.

                                                          Matteo. R.
                                                          Founder and Tech-Support Manager.
                                                          MooCloud MSP
                                                          Swiss Managed Service Provider

                                                          1 Reply Last reply Reply Quote 0
                                                          • First post
                                                            Last post
                                                          Powered by NodeBB