Install considerations

Performance tuning Copied

The app consists of three deployments:

Defaults Copied

By default, the deployments have the following resource requests and limits:

Daemon REST Server Total
CPU Request 1 100m 1100m
CPU Limit 2 300m 2300m
Memory Request 512MiB 128MiB 640MiB
Memory Limit 2GiB 256MiB 2304MiB

You can verify the current resource requests or limits of your deployment by running the following command:

Note

Running the command requires jq.

The command below uses the iax-app-centralised-config naming name. In some production environments, the Helm release may still use obcerv-app-centralised-config naming instead.

Before running the command, confirm the instance name in your namespace:

kubectl get pod -n <namespace> \
  -l 'app.kubernetes.io/instance in (iax-app-centralised-config, obcerv-app-centralised-config)' \

Replace the iax alias in the command below if they differ.

kubectl get pod -n <namespace> \
-l app.kubernetes.io/instance=iax-app-centralised-config \
-o json | jq -r \
"[.items[] | \
  { \
    pod: .metadata.name, containers: .spec.containers[]  | \
    [ \
      { \
        container: .name, \
        resources: .resources \
      } \
    ] \
  } \
]"

The only CPU-intensive task performed by the app is Gateway validation, which is done by the iax-app-centralised-config-daemon deployment. It involves running a Gateway binary to validate a full Gateway setup.

For example, if the contents of a common include file used by 50 Gateways are modified as part of a setup change, the app validates that include against all 50 Gateways that use it. Validation duration depends on setup size, Geneos version, and available CPU on the node.

Validations are performed in parallel and the number of validator threads can be set through the following parameter:

daemon:
  numValidatorThreads: 3

Validation performance can be tuned by increasing the CPU request or limit of the iax-app-centralised-config-daemon deployment and setting the numValidatorThreads to the ceiling of the new CPU core limit. For example, if you set the limit to 4500m, then numValidatorThreads should be set to 5.

Advanced configuration Copied

The app can be configured with the values shown below. You are not required to change any of these configuration options unless advised to do so by ITRS.

grpcCompression:
  # Enables gRPC compression between the REST Server and the app's backend daemon.
  enabled: true

# The maximum amount of time to wait for gRPC calls to complete, expressed as an ISO-8601 duration.
grpcTimeout: "PT30S"

grpcLogging:
  # Enables gRPC request logging.
  enabled: false
  # Enables logging of gRPC responses
  responses: false

###################################
# Backend gRPC Daemon Configuration
###################################
daemon:
  # The daemon's log level
  logLevel: INFO

  # PVC for Gateway binary archives used during validation (default mount: /gateways).
  pvc:
    gatewayArchives:
      storageSize: 5Gi
      mountPath: /gateways
      keep: true

  # The maximum amount of time a Gateway validation can take before being aborted by the app,
  # expressed as an ISO-8601 duration.
  gatewayValidationTimeout: "PT30S"

  # The number of Gateway validation threads. Increasing this number can increase the number of
  # validations that can occur in parallel. However, it may have a negative impact on performance
  # if the app's allocated CPU resources are not sufficient, and it is being throttled by Kubernetes.
  # Increase this parameter only if the CPU utilisation of the daemon's pod is not close to its limit.
  numValidatorThreads: 3

  # The app holds a cache of current and recent validations to avoid re-reading
  # validation results from storage. The cache covers the common case where a user
  # validates and applies changes shortly after.
  validationCache:
    # How long to wait before evicting validations that have been created but not read after
    # completion. This could happen if the client application unexpectedly terminated.
    expireAfterCreate: "PT1H"
    # How long to wait before evicting completed validations after they have been read for the last
    # time. This timer resets every time a validation has been read after completion. The purpose of
    # this setting is to accommodate the most common use case which is to perform a setup change
    # shortly after a validation is completed.
    expireAfterRead: "PT5M"

  # The max inbound gRPC message size. Entries from the Obcerv Platform that are returned to the app
  # in batches may exceed the default gRPC inbound message size. Increase this if the app backend
  # logs or returns gRPC exceptions with status RESOURCE_EXHAUSTED.
  # !! Note: The value must be quoted to prevent it from being converted to scientific notation
  # !!       by the YAML parser.
  maxInboundGrpcMessageSizeBytes: "20971520" # 20MiB

  # How often to poll for Gateway archives that have been copied into the pod.
  gatewayArchivesPollInterval: "PT5S"

###########################
# REST Server Configuration
###########################
restServer:
  # The REST server's log level.
  logLevel: INFO

  # Logs all REST API requests. This has a negative impact on the performance 
  # of the server and should only be used to diagnose an issue.
  requestLogging: false

  # The maximum request entity size
  # !! Note: The value must be quoted to prevent it from being converted to scientific notation
  # !!       by the YAML parser.
  maxMessageSizeBytes: "10485760" # 10 MiB
["ITRS Analytics"] ["ITRS Analytics > Centralised Config"] ["Technical Reference"]

Was this topic helpful?