Deephaven process management

This document provides a comprehensive guide to managing Deephaven processes across all deployment types. It covers process supervision, startup and shutdown procedures, configuration, and monitoring.

For quick reference commands, see the Deephaven operations guide.

Deployment types

Deephaven process management varies by deployment type:

DeploymentProcess supervisionPrimary tools
Traditional (bare metal/VM)monit + systemddh_monit, iris
Podmanmonit (containerized)dh_monit, iris
KubernetesKubernetes controllerskubectl, Helm

Deephaven services

A Deephaven deployment consists of multiple services, each running as a separate process:

Process nameRun userDescription
configuration_serveririsadminProvides configuration to other services
authentication_serveririsadminHandles user authentication
iris_controlleririsadminManages Persistent Query lifecycle
db_query_serverdbqueryDispatcher for query workers
db_merge_serverdbmergeDispatcher for merge workers
web_api_servicedbqueryServes the Web IDE
log_aggregator_serviceirisadminAggregates binary log entries
db_disdbmergeData Import Server
tailer1irisadminStreams data from binary logs
db_tdcpdbqueryTable Data Cache Proxy
db_ltdsdbqueryLocal Table Data Server
db_acl_write_serveririsadminACL Write Server

Process dependencies

Services must start in a specific order due to dependencies:

The dh_monit wrapper automatically handles this sequencing.

System users

Deephaven processes run under specific system users for security and access control:

UserPurposeDefault name
Admin userInfrastructure services, administrationirisadmin
Query userQuery workers, web servicesdbquery
Merge userMerge workers, data importdbmerge
Monit userProcess supervision daemonirisadmin
etcd useretcd databaseetcd

You can override these defaults in cluster.cnf. See Cluster configuration files for details.

Traditional and Podman deployments

Process supervision architecture

Traditional and Podman deployments both use monit for process supervision, but differ in how monit itself is managed:

Traditional deployments (bare metal/VM):

Process supervision architecture

In traditional deployments, systemd manages the monit daemon. Use systemctl commands to start, stop, or check monit status.

Podman deployments:

In Podman deployments, the container entrypoint script starts monit directly — systemd is not involved. Do not use systemctl commands for monit management in Podman; instead, manage the container itself via podman commands.

The dh_monit wrapper

Deephaven provides dh_monit as a wrapper around monit that adds Deephaven-specific functionality:

  • Privilege handling — Runs commands as the appropriate user without requiring root.
  • Sequenced startup — Starts configuration_server and authentication_server first, waiting for each to be ready before continuing.
  • Blocking waits — Optionally waits for all services to reach their target state.

Basic commands

Starting and stopping services

Monitoring and unmonitoring

The iris script

The iris script is the actual process launcher invoked by monit. It handles:

  • Java environment setup (JAVA_HOME, JAVA_FLAGS)
  • Classpath construction
  • Workspace and log directory creation
  • Process user switching via sudo
  • PID file management

For advanced troubleshooting, you can invoke it directly:

Configuration files

monit configuration

LocationPurpose
/etc/monitrcMain monit configuration (override via DH_MONIT_RC)
/etc/sysconfig/illumon.d/monit/*.confPer-service configuration

Example service configuration (/etc/sysconfig/illumon.d/monit/configuration_server.conf):

Host configuration

Process launch parameters are configured in hostconfig files:

LocationPurpose
/etc/sysconfig/illumon.confs/hostconfig.systemSystem defaults (installer-managed)
/etc/sysconfig/illumonCustom overrides

See Java process launch configuration for details.

Enabling and disabling services

Temporarily disable

Permanently disable

Re-enable

Kubernetes deployments

In Kubernetes, process management is handled by Kubernetes itself rather than monit.

Pod-based architecture

Deephaven services run as Kubernetes deployments and StatefulSets:

Resource typeServices
Deploymentsconfiguration-server, authserver, controller, query-server, merge-server, webapi, dis, las
StatefulSetetcd cluster
Dynamic podsWorker pods (created by dispatchers)

Managing services

Check status

Restart services

View logs

Scale services

Configuration

Kubernetes deployments are configured through Helm values rather than file system access:

Apply configuration:

See Kubernetes process launch configuration for details.

Monitoring process status

Traditional/Podman

Kubernetes

Troubleshooting

Stale PID files

After an improper shutdown, stale PID files may prevent services from starting:

Interactive debugging

For services that fail to start, bypass monit for interactive debugging:

Monit won't start

If monit fails to start after an improper shutdown:

Traditional deployments:

Podman deployments:

Restart the container to restart monit. The container entrypoint automatically cleans stale PID files on startup.

Common issues

SymptomLikely causeSolution
Service cycles between "Initializing" and "Execution failed"Dependency not runningCheck configuration_server and authentication_server
"Address already in use"Port conflictFind conflicting process: lsof -i :<port>
"Permission denied"Wrong user or permissionsVerify file ownership and run user
Services won't start after rebootStale PID filesRemove /etc/deephaven/run/*.pid

See Process startup troubleshooting for more details.