This page contains detailed information about how AWS is set up with convox. Some of this information may be useful when troubleshooting your apps’ unexpected behavior, or simply to understand better what’s underneath infrastructure looks like.

ECS (EC2 launch type)

A service’s memory limit (set via convox scale <service> --memory <memory> CLI command) translates to a hard-only memory limit on ECS task definition (see memoryReservation section on AWS’s website here to read more). This is true both for long-running processes, and for processes started via a timer.

If you were to execute a one-off command however, the process created will have a soft-only memory limit with the same scale value. This subtle difference may be important in understanding why sometimes a given command crashes when run either as a long-running process or a process started via a timer, but if executed via convox run it doesn’t.

When hard-only limit is used, docker will kill your process if it were to run out of memory; whilst when soft-only memory is used your process can use all the memory available in the container instance, hence it may not crash even if the memory consumption is higher than the value set as scale value.