Memory limit test with PHP in a container¶
Go to Project 8 from the git repository root:
This example shows the memory testing in a PHP container, where the “truncate” command generates a file with a defined size and the PHP reads it into the memory. We use an environment variable to set the memory size.
Start the test¶
The container will have 50MB memory limit. (It must be at least 6MB in Docker Compose 1.27.4). The examples below will test the memory usage from 10MB to 50MB increased by 10MB for each test.
MEMSIZE=10MiB docker-compose run --rm php MEMSIZE=20MiB docker-compose run --rm php MEMSIZE=30MiB docker-compose run --rm php MEMSIZE=40MiB docker-compose run --rm php MEMSIZE=50MiB docker-compose run --rm php
bash: line 5: 9 Killed php -r ' ob_start(); readfile("/tmp/50MiB"); ob_clean(); echo (memory_get_peak_usage(true)/1024/1024)." MiB\n"; '
“Killed” means we exceeded the memory limit. There is no error until 50MB. Since there is some additional memory usage in the container, it kills the process at 50MiB even though 50 is still allowed.
Explanation of the parameters¶
The “docker-compose run” is similar to “docker run”, but it runs a service from the compose file. “–rm” means the same as it meant for “docker run”. Deletes the container right after it stopped.
Clean the project:
The containers were deleted automatically, but it can still delete the network.