Hi Alan;
I appreciate you taking the time from your undoubtedly busy schedule to directly address questions posted here. Thank you for that!
I am presently managing a project to have our eCommerce platform migrated from an antiquated, under-performing custom build to a Magento 2 architecture. I am having a completely segmented n-tier architecture set up to address our needs (Admin/database/Magento/Web/Dev, all being on separate servers).
My question lies with the performance of Magento 2 strictly as a REST API app server (no front-end rendering will be handled by Magento). I have scoured several forums and the documentation but, as of yet, have not found anything delineating recommended hardware configurations for Magento 2. I'm piecing together the various installations we will need and want to ensure I have adequate specs handling each component part.
Specifically, I will be serving the Magento 2 REST API from an AWS resource and am trying to determine the specs needed. As we hope to expand our business, I plan to have traffic eventually served behind an Elastic Load Balancer (ELB), though for now I know a single web server will suffice. Where I need assistance is determining what is needed to effectively server the API calls, given our current traffic.
Presently, we serve an average 167k sessions per month, 3k-6k daily sessions, with about 70 daily transactions. During our busiest 10 hours of each week day, we have about 25-35 concurrent users. Are there any figures that can be provided as to the kind of CPU/RAM requirements necessary per certain base unit of sessions/transactions?
Obviously, a lot of the typical workload will be offset by the fact that the database and web rendering servers will be separate entities, so I'm hoping to get a definitive idea about what to expect from using Magento 2 strictly as an API endpoint.
We will be installing Nginx 1.9.6 (or the latest stable version at the time) to try and utilize HTTP/2 wherever possible.
I appreciate your insight and feedback into this matter, and look forward to your response.
Solved! Go to Solution.
I am going to mark this is as resolved for now if that is OK - it helps with my book keeping. I am not going to be able to provide a better response. The whitepaper is due "soon".
I am not aware what performance figures we have for direct API access only. We are currently doing another around of performance tests incorporating all the improvements that have come since the last round of tests, but that is the full stack (including Varnish), so not sure that will be useful to you or not. There are probably not much perf results around yet for M2 from other sources (there are some community members that have done things at times), if only because it is not released yet! Every change we make potentially invalidates the previous results.
We presented this session at Imagine that might have some useful data in it: http://magento.com/videos/imagine/imagine-commerce-2015-magento-2-developer-deep-dive-session-iii-pe...
My other question is whether you are going to be using CE or EE. There are additional scalability boosts in EE. One example that might be useful is EE has AMQP (RabbitMQ) support, so you can receive a AMQP message and bind it to a service contract. The server side would be in a continually running loop receiving messages. This code is very new - no performance testing yet (I have not even had a chance to try it myself yet), but it may avoid the HTTP startup cost per HTTP request, and so deliver better performance. A concern I have is whether PHP or our code has any memory leaks - do we need to restart the server periodically to reclaim memory? Not sure yet. First goal was to get the async processing capability in so we can start building upon it.
Hi Alan;
Thank you very much for the prompt reply. I will review the video you linked to see what information I can glean from that presentation. Hopefully, what I learn from that will provide enough insight to determine the specs I will need.
To answer your question, we will be utilizing the CE version of M2. That is one constraint which I will not be allowed to circumvent. I hope to alleviate as many calls as possible through good caching of the front end.
P.S. Thank you as well for your blog posts related to M2, such as http://alankent.me/2015/08/31/magento-2-rest-api-swagger-schema/ which have already proven very useful.
Best Regards
Hi Alan;
I did watch the presentation you provided via the link. Unfortunately, there was no specific hardware mentioned for the testing that was carried out. It seems that hardware recommendations are an elusive data point for M2. Even if I were given hardware recommendations based on a typical M2 install (with front-end rendering being handled by M2), I could likely deduce what I need from those the base specs required for utilizing M2 solely as a back-end app via its REST API.
With all of the improvements that M2 brings forth, along with utilizing PHP 7, the amount of hardware that is thrown by hosts at current M1 installations, I feel, will be overkill.
Any further insight or links with pertinent specs and metrics you can provide would be greatly appreciated.
Best Regards
One of the challenges with recommending hardware is different projects will hit different bottlenecks and so hit different limits. We have tests we have run, but it is not going to be the same as the built up knowledge of M1 available for a while yet. One thing we do recommend is to run a copy of Varnish, even if on the same server as the web server. That then raises questions about how much content is cacheable, how often products are updated in the database (which invalidates cache entries), and so on.
I will try to dig up some hardware specs however. I think a new whitepaper is coming out soon with the latest performance information in it - I am pretty sure that will include the hardware the tests are run on.