Fixed
Pinned fields
Click on the next to a field label to start pinning.
Details
Assignee
Brad WoodBrad WoodReporter
Samuel W. KnowltonSamuel W. KnowltonLabels
Fix versions
Priority
Major
Details
Details
Assignee
Brad Wood
Brad WoodReporter
Samuel W. Knowlton
Samuel W. KnowltonLabels
Fix versions
Priority
Sentry
Sentry
Sentry
Created November 6, 2018 at 1:52 PM
Updated November 24, 2018 at 4:18 AM
Resolved November 24, 2018 at 4:18 AM
Modify CommandBox to not set a max or min heap size if none is provided by the user.
Also allow heap size to have the k, m, or g identifier.
Default if no letter is provided will still be "m"
Original ticket
Per the thread of CFML slack referencing this article:
https://medium.com/@yortuc/jvm-memory-allocation-in-docker-container-a26bbce3a3f2
Commandbox specifies a default heapSize of 512 in /src/cfml/system/services/ServerService.cfc:127. In a Docker deployment, it appears that the best practice is not to specify a heap size at all. But it's probably not a good idea to just remove this value for everyone, so perhaps a transitional argument and environment variable that, when set, removes any default values for heapSize?
It could be simplified further, depending on how prescriptive you want to be, by directly adding the relevant JVM arguments, e.g. if
CFML_JVM_DOCKERHEAPMODE = 1
then no default heapSize, and the follow JVM args get added:
This is the first time I've plumbed into the Commandbox source and it looks pretty straightforward, but I'm not quite comfortable enough yet to deal with optional settings that could come from either the command line or the environment (and not sure if that's Commandbox proper or just the Docker stuff).