1

I'm new to DevOps and quite troubled financially but I desire to put websites that I now host on a shared server environment (CetnOS 12.x.x) on some cloud like DigitalOcean or Lindoe (but without using their droplets with ready OSs - I want to install the OS myself with Vagrant).

To have full automation of every upgrade possible (even OS itself say Ubuntu 18.04 to 20.04 or Apache 2.4 to Apache 3.4, PHP 7.4 to PHP 8.4 and so forth) I desire to use the VAD stack: Vagrant-Ansible-Docker.

DigitalOcean's cheapest plan for example is this 5$ plan:

25 GB SSD
1 virtual CPU
1 GB RAM
1 TB monthly data-transfer

I use the Drupal CMS (>=8) for generally all my websites (which are generally small-scale perceptional websites for small business of free-professions).

Each VPSE will contain up to 2 separate (non multi-stie) Drupal apps and each such app will usually take no more than 256 MB RAM, if I'm not exaggerating).

My question

Can I base these such a X2 drupals installment on such 5$ VPSE with a VAD stack in decent performance? Or there's no way I could handle both VAD and X2 such Drupals on one such small VPSE?

2

In this scenario, the cpu cycles required to read from the database and render to PHP will all be handled by a single core, ie they will be handled one after the other. This will be about the slowest way to deliver website traffic out of your server.

Each time a request is made, a certain amount of memory is occupied by PHP. You can test the actual amount, but you can only ever be sure it is not greater than memory_limit. Based on a use of no more than 256MB per Drupal site request, you can divide your 1GB of memory by that number (minus some memory for apache, MySQL and the OS). The result are 3 requests fit into memory only. You certainly do not want to allow more, because either your system runs out of Ram or it will use swap disk space.

The use of swap disk space is even worse, as it will slow down requests even more and consumes cpu itself.

3 requests can be used up quickly by some Ajax requests in the page or your Admin backend, either one likely bringing the server to its knees. It would be best to check in Chrome inspector how many PHP requests the site makes on frontend and backend.

Your situation will improve somewhat if you can dial down your PHP memory limit to say 64mb, but you still have the single core as the bottleneck.

So the key to keep this stable is to reduce the number of requests allowed either in apache or php-fpm to a number multiplied by PHP memory limit that stays smaller than your 1gb memory.

Your best option would be to copy out your Drupal pages to a static website every time a change is made. A transparent way for this is to put a cdn in front of your website. However you need to be sure.

Another non technical practical solution is to quadruple your hosting budget and find a sponsor or side gig to pay the charges.

  • Hmm, so 500mb for both Drupals on such LAMP-VAD is too much eh? Drupal could take much less, I just wanted to give a maximal plausible threshold (I think it will usually won't pass the 128mb for a site of up to 1000 visitors a month). Maybe I should take a 20$ plan (2gb RAM, 2 vCPU) after all. – JohnDoea Nov 22 '18 at 13:39
  • Even wordpress can live off 96MB usually, even though most plugins "recommend" 256MB. BUT, the lower you go the harder the development work. Alsom have you checked that Vagrant works on the hosting environments mentioned. To my knowledge it can only run on bare metal, not virtaulised environments – jdog Nov 22 '18 at 20:32
  • jdog I think you're right; this is what the DigitalOcean customer service told me (it was badly phrased IMO, haha): Our scope is very limited here. However, to address your question, Vagrant is a solution for a very specific problem. And that is PaaS orchestration. You can get your platform deployed the same way each time based on the configurations. So maybe there is a misunderstanding with the scope of Vagrant. Now, you can do the same using a cloud API library and automation software. But it doesn't come ready to read in config files like Vagrant with a DO provider driver enabled. . – JohnDoea Nov 23 '18 at 3:56
  • So yes, generally only bare-metal cloud server-environment (and of course, bare-metal dedicated server-environment), will allow Vagrant. – JohnDoea Nov 23 '18 at 3:57
0

I'm happy to presume jdog is right about his performance advice for PHP. PHP is not something I've ever tried to make perform. But one point that wasn't made is that you can:

test it yourself

  1. Fire up a VirtualBox instance on your desktop with the specs you're aiming for.
  2. Put the software in there and see how it runs.
  3. Run a performance test and see if it can handle a load that is useful to you.
  4. If not, then adjust memory or CPU and try again. If it works, then profit.

This seems like a lot of work to some and really easy to other people, but it isn't something that somebody else can do for you. Even if we put the same software on the same spec'd box we might install it differently. Or we might put different content in, or test it differently. If you want a definitive answer for your work load then go and try it out. This site and ServerFault and such can help you find out how to do that in more detail, but we can't predict perfectly how it will work out for you.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.