Removed limitation for environment variables values to be less than 255 characters.
User can set JAVA_OPTS in env variables of workspace
User can set MAVEN_OPTS in env variables of workspace
User can set CHE_WORKSPACE_WSAGENT_JAVA_OPTIONS java opts to adjust java opts of ws-agent
User can set CHE_WORKSPACE_MAVEN__SERVER__JAVA__OPTIONS java opts to adjust java opts of the maven server
Admin can set CHE_WORKSPACE_JAVA__OPTIONS to adjust default value of JAVA_OPTS of all workspaces
Admin can set CHE_WORKSPACE_MAVEN__OPTIONS to adjust default value of MAVEN_OPTS of all workspaces
Admin can set CHE_WORKSPACE_WSAGENT__JAVA__OPTIONS to adjust default value of JAVA_OPTS of all ws-agents
Admin can set CHE_WORKSPACE_MAVEN__SERVER__JAVA__OPTIONS to adjust default value of JAVA_OPTS of all maven servers
If admin will configure CHE_WORKSPACE_HTTP__PROXY this values will be used in JAVA_OPTS , MAVEN_OPTS , and jvm options for ws-agent and maven-server
che.workspace.java_options=-XX:MaxRAM=150m -XX:MaxRAMFraction=2 ...
che.workspace.maven_options=-XX:MaxRAM=150m -XX:MaxRAMFraction=2 ...
che.workspace.wsagent_java_options=-XX:MaxRAM=600m -XX:MaxRAMFraction=1 ...
che.workspace.maven_server_java_options=-XX:MaxRAM=128m -XX:MaxRAMFraction=1 ..
Signed-off-by: Sergii Kabashniuk <skabashniuk@redhat.com>
Optimize che-server ram usage on Docker
Proposal is to set container limit to 750M for both Docker and OpenShift and tune a bit GC
-XX:MaxRAMFraction=2 -XX:+UseParallelGC -XX:MinHeapFreeRatio=10 -XX:MaxHeapFreeRatio=20 -XX:GCTimeRatio=4 -XX:AdaptiveSizePolicyWeight=90 -XX:+UnlockExperimentalVMOptions -XX:+UseCGroupMemoryLimitForHeap -Dsun.zip.disableMemoryMapping=true -Xms20m
Important parts
-XX:MaxRAMFraction=2 -XX:+UnlockExperimentalVMOptions -XX:+UseCGroupMemoryLimitForHeap - tels jvm to use ~ CHE_MASTER_CONTAINER_RAM/MaxRAMFraction for heap
We need some space for off-heap activity. During test I saw VmRSS of jvm ~330_000k - 350_000k.
-XX:+UseParallelGC -XX:MinHeapFreeRatio=10 -XX:MaxHeapFreeRatio=20 -XX:GCTimeRatio=4 -XX:AdaptiveSizePolicyWeight=90 ask GC to keep heap compact in cost of some CPU.
You can see changes in heap usage pattern in images below.
Removed default properties extraction from war.
Removed all usage of CHE_LOCAL_CONF_DIR
Forced unset of CHE_LOCAL_CONF_DIR to make sure that Eclipse Che server can be configured only with environment variables.
Changed location of default properties from /codenvy/che.properties to /che/che.properties
* Toggle Che single port by enabling CHE_SINGLE_PORT in the che.env file. (CHE_SINGLE_PORT=true, default is false)
By enabling single-port, all browser traffic to Che or any workspace will be routed through the value that you have set to CHE_PORT`, or 8080 if not set. Setting this property will transform the launch sequence of Che to launch a Traefik reverse proxy. The reverse proxy will act as the traffic endpoint for all browser communications. When a new workspace is started or stopped, Che will update Traefik's configuration
with rules for how browser traffic should be routed to Che or a workspace.
It’s now using an official Traefik image (before I was using a custom made image)
There is an interceptor with a kill switch. It means interceptor is applied only if plug-in is enabled (not only if plug-in is added at compilation)
It is automatically enabled when CHE_SINGLE_PORT is turned on
docker-compose file is handling if the single_port is turned on or off and then add the traefik container and redirect port only if the property is enabled. (not enabled by default)
using —debug flag when launching che is also turning on the traffic web console to view traefik routes
It is not enabled by default, so it means that without user change, there is no overhead, no useless container started, etc.
Change-Id: I12644d9202dadc0b10104f78bb055425ca6611ac
Signed-off-by: Florent BENOIT <fbenoit@codenvy.com>