I’m getting the
kill signal received error that seems to indicate that the machine has run out of RAM.
However support is so incredibly slow to respond that I don’t know if or when they will respond to this and there are no controls in the app to increase RAM size of machines.
Is there any way to get past this blocker? I’ve got several branches all sitting in an unknown state as a result of Circle being blocked and broken.
Hey @peternixey, just a quick question, which executor are you using? Our machine executor offers slightly higher specs than our Docker executor.
It may be worth seeing if the performance plan will work for you, since you’ll have a couple more options in terms of spec. Pricing is available here https://circleci.com/pricing/usage/
If you need to get something working immediately, I second @gmemstr’s suggestion. The Docker executor has a limit of 4G by default, and Machine has 8G. I expect the conversion from one to the other would be quite easy - you could even install Docker in Machine so you can use a specific image.
This is all helpful, thank you guys. I’m not a sysadmin by trade though so am a bit confused by what it means to swap the underlying machine. If my current setup looks like this:
- image: circleci/ruby:2.3.8-browsers
- image: circleci/postgres:9.6.2-alpine
- image: elasticsearch:1.7.5
How would I alter it to use the machine executor - I assume it’s not as simple as just changing the “docker” to “machine”?
Yes, correct. A machine is a virtual machine, as would be run by VMWare or VirtualBox on your computer. CircleCI offers a limited number of parent images, and it is thus not as flexible as CircleCI’s Docker system, which can run any parent image you like.
So the first thing you need to do is to swap “docker” to “machine”. Then you need to choose an image (or, I think, leave it on the default Ubuntu image, by not specifying one). This is a generic VM, so you would need to install your other things manually: Ruby, browsers, Postgres, Elasticsearch. You would also need to start them manually, in a non-Docker context.
I think this is the route you should take.
For completeness, an alternative option is to install Docker Compose, and spin up each of these things (Ruby, browsers, Postgres, Elasticsearch) in Docker. However that requires some familiarity with Docker, which can be fiddly if you do not have prior experience with it.
(One thing you can do, whichever way you go, is to get a CI expert into your organisation for a day or two, either on-site or remotely, if budgets allow. It may seem an expensive option, but it can often be cheaper than spending weeks of your own time on it. Just a thought.)