Overview

The main responsibility of process managers is executing commands on microservices through its management interfaces including the examination of proper environmental condition of each command execution (ex. the amount of needed resources). In case of application microservices execution is performed through TRANSMISSION port by PROCESS MANAGER, in case of technical microserivces implementation of command execution depends on the API provided by technical microserice and is performed by TECHNICAL PROCESS MANAGER.

Process manager

The process manager takes care of application microservices, it monitors their availability on the OS level, detects JVM error and takes action in order to restore microservice availability.

Technical process manager

The technical process manager takes care of technical microservices, it monitors their availability on the OS level, responsiveness and takes action in order to restore microservice availability. Its implementation differs depending on the type of technical microservice.

Configuration

Configuration of process managers is a part of main config and consists of the following sections:

Section 'PROCESS_MANAGER'

The default configuration:

PROCESS_MANAGER:
  isCheckAvailableOSMemoryOnMicroservicesStart: true
  startupOrder: 1
  externalHealthCheckPeriod: 4000
  MICROSERVICES_PORT_OFFSET:
    NATIVE:
      begin: 20001
      end: 30000
    SERVLET:
      begin: 30001
      end: 40000
  OS_PROCESSES_KEEPER:
    isCheckOSProcessAlive: true
    howOftenCheckingProcessInMillis: 5000
    restartDelayInMillis: 0
    #logPath: 'c:/server/alternative_path/process_errors'
  JVM_MEMORY_ERRORS_KEEPER:
    isCheckMemoryErrors: true
    howOftenCheckingProcessInMillis: 5000
    #heapDumpPath: c:/server/restart_log/heap_dump
    #logPath: 'c:/server/alternative_path/memory_errors'
    #archiveLogPath: 'c:/server/alternative_path/memory_errors_archive
    #restartLogPath: c:/server/restart_log/
  SERVICE_REPOSITORY_SETTINGS:
    howOftenCheckingMicroservicesInMillis: 5000
    externalNodePeersStartCheckDelayInMillis: 5000
    SOCKET_PROPERTIES_TO_CONNECT_WITH_PEERS:
      connectionTimeoutInMillis: 1000
      readTimeoutInMillis: 90000
      isKeepAlive: false
      isOOBInline: false
      isTcpNoDelay: false
      isReuseAddress: false
      sendBufferSize: 0
      receiveBufferSize: 0
      soLinger: 0
      trafficClass: 0
  LOAD_BALANCER_SETTINGS:
    JRMC_PROTOCOL_SETTINGS:
      ALGORITHM:
        type: priority
      PROPERTIES:
        changeServerIntervalInMillis: 5000
        repeatsAmount: 3
    QUEUE_PROTOCOL_SETTINGS:
      ALGORITHM:
        type: priority
      PROPERTIES:
        changeServerIntervalInMillis: 5000
        repeatsAmount: 3
Parameter Description
isCheckAvailableOSMemoryOnMicroservicesStart The switch that determines whether there is enough memory for the starting microservice. If the process manager finds that there is not enaugh memory for a new microservice, it won't start.
startupOrder The startup order index that determines the order between process manager and technical process manager. The higher value means higher priority in terms startup procedure. By default process manager has higher priority then technical process manager.
externalHealthCheckPeriod This value should be set to time in millis which external components waits between checking microservices health.

Subsection 'MICROSERVICES_PORT_OFFSET'

Main Server needs port sets to establish communication to microservices. These sets are managed automatically by default which means that ports in each set is assigned dynamically. Port sets are defined individually for each application microservice type (NATIVE and SERVLET), each port set starts with begin port and ends with end port.

Subsection 'OS_PROCESSES_KEEPER'

The OS process keeper checks the existence of the microservice's process in the operating system (it knows the PID of the microservice). If it finds that the process doesn't exists and this state doesn't result from administrative tasks (ex. microservice stop) it automatically starts the microservice.

Parameter Description
isCheckOSProcessAlive The switch that determines whether OS process keeper is active.
howOftenCheckingProcessInMillis The checking period of OS process keeper, expressed in milliseconds.
logPath Location of log files from start, stop and restart process. The default value is: $JLUPIN_HOME/platform/logs/process_manager
restartDelayInMillis The delay expressed in milliseconds that process manager waits after it discovers that the microservice is missing in OS and before it tries to start it again.

Subsection 'JVM_MEMORY_ERRORS_KEEPER'

Memory process keeper is a process of controlling the occurrence of errors related to the JVM memory. It periodically checks if any error occurs, if it does the recovery actions are taken to restore the microservice availability, which are described in servlet microservice configuration and native microservice configuration.

Parameter Description
isCheckMemoryErrors The switch that determines whether memory process keeper is active.
howOftenCheckingProcessInMillis The checking period of memory process keeper, expressed in milliseconds.
heapDumpPath The location of the heap dump collected from the microservice during memory error handling. After the dump is finished, it is moved to the archive location. The default value is: $JLUPIN_HOME/platform/logs/memory_manager/errors
logPath The log file that contains the error stack trace which describes the class where memory error occurs. The default value is: $JLUPIN_HOME/platform/logs/memory_manager/restart
archiveLogPath The archive of data collected during memory errors handling (dumps, logs).
restartLogPath The location of log files collected from the restart process of the microservice during memory errors handling. After the process of memory handling is finished the log file is moved to archive location.

Subsection 'SERVICE_REPOSITORY_SETTINGS' and 'LOAD_BALANCER_SETTINGS'

This section defines the behavior of built-in service repository and load balancer. The detailed description is provided in chapter about Load Balancer/Service Repository.

Section 'TECHNICAL_PROCESS_MANAGER'

Technical OS process manager is responsible for availability of technical microservices, it periodically checks their processes, if they are not present or unresponsive the proper action are taken to roster the availability of technical microservice.

The default configuration:

TECHNICAL_PROCESS_MANAGER:
  isCheckOSProcessAlive: true
  howOftenCheckingProcessInMillis: 5000
  responseOSTimeToCheckProcessAliveInMillis: 30000
  startupOrder: 2
  restartDelayInMillis: 10000
Parameter Description
isCheckOSProcessAlive The switch that determines whether technical OS process keeper is active.
howOftenCheckingProcessInMillis The checking period of technical OS process keeper, expressed in milliseconds.
responseOSTimeToCheckProcessAliveInMillis The maximum response time of the technical process, beyond which the mechanism recognizes that the process is unavailable and performs its restart.
startupOrder The startup order index that determines the order between process manager and technical process manager. The higher value means higher priority in terms startup procedure. By default process manager has higher priority then technical process manager.
restartDelayInMillis The delay expressed in milliseconds that technical process manager waits after it discovers that the technical microservice is missing in OS and before it tries to start it again.