You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@uima.apache.org by de...@apache.org on 2016/08/10 19:49:38 UTC
svn commit: r1755815 -
/uima/uima-ducc/trunk/src/main/resources/default.ducc.properties
Author: degenaro
Date: Wed Aug 10 19:49:38 2016
New Revision: 1755815
URL: http://svn.apache.org/viewvc?rev=1755815&view=rev
Log:
UIMA-4795 DUCC ducc.properties itself should comprise its DUCC Book documentation
Modified:
uima/uima-ducc/trunk/src/main/resources/default.ducc.properties
Modified: uima/uima-ducc/trunk/src/main/resources/default.ducc.properties
URL: http://svn.apache.org/viewvc/uima/uima-ducc/trunk/src/main/resources/default.ducc.properties?rev=1755815&r1=1755814&r2=1755815&view=diff
==============================================================================
--- uima/uima-ducc/trunk/src/main/resources/default.ducc.properties (original)
+++ uima/uima-ducc/trunk/src/main/resources/default.ducc.properties Wed Aug 10 19:49:38 2016
@@ -38,13 +38,27 @@
#
# ====================================================================================
+# +==================================================================================================+
+# | General |
+# +==================================================================================================+
+
# The name of the node where DUCC runs.
+# This property declares the node where the DUCC administrative processes run (Orchestrator,
+# Resource Manager, Process Manager, Service Manager). This property is required and MUST be
+# configured in new installation. The installation script ducc_post_install initializes this
+# property to the node the script is executed on.
ducc.head = <head-node>
# The full name of the Java command.
+# This specifies the full path to the JVM to be used by the DUCC processes. This MUST be
+# configured. The installation script ducc_post_install initializes this property to
+# full path to java in the installer's environment. (If the java command cannot be found,
+# ducc_post_install exits with error.)
ducc.jvm = <full-path-to-java-command>
# The name of the cluster as shown by the Web Server.
+# This is a string used in the Web Server banner to identify the local cluster. It is used
+# for informational purposes only and may be set to anything desired.
ducc.cluster.name=Apache UIMA-DUCC
# Specify location of private resources directory. UIMA-3892
@@ -54,99 +68,130 @@ ducc.private.resources = ${DUCC_HOME}/re
# default of <user.home> as the location of the keys used in request validation.
ducc.security.home =
-# Name any site-local jars
+# Name any site-local jars.
+# This may be used to list site-specific jars that are required by local
+# customizations, e.g. authentication. The value must be a blank-delimited list of jars
+# relative to the DUCC_HOME/lib directory.
#ducc.local.jars =
-# Declare which components to load into the jvm on process startup.
+# Declare the type of middleware providing the JMS service used by DUCC.
ducc.jms.provider=activemq
-# ---------------------------------------------------
-# ---------------------------------------------------
-# Define the ActivemQ broker configuration.
-# ducc.broker.protocol - Ddefine broker protocol. Should typically be
-# tcp. *** Dont specify : or // ***
-# ducc.broker.hostname - The name of the host where the broker is running.
-# ducc.broker.port - The broker's connection port
-# ducc.broker.url.decoration - The broker *client* url decoration.
-# recoveryInterval=30000 - Specifies an interval between recovery attempts,
-# i.e when a connection is being refreshed,
-# in milliseconds
-# jms.useCompression=true - Compress message body
-# ducc.broker.name - the broker name - must match the actual broker name
-# in the broker config. THIS IS NOT THE BROKER HOSTNAME
-# WHICH IS CONFIGURED IN ducc.broker.hostname.
-# ducc.broker.jmx.port - the Broker's jmx port
-#
+
+# +==================================================================================================+
+# | Broker |
+# +==================================================================================================+
+
+#Declare the wire protocol used to communicate with ActiveMQ.
ducc.broker.protocol=tcp
+
+# This declares the node where the ActiveMQ broker resides. It MUST be updated to
+# the actual node where the broker is running as part of DUCC installation.
+# The default value will not work.
ducc.broker.hostname=${ducc.head}
+
+# This declares the port on which the ActiveMQ broker is listening for messages.
ducc.broker.port=61617
-# Broker decorations:
-# useCompression: true, compress JMS cargo
+# The broker *client* url decoration (ie - DUCC daemons).
ducc.broker.url.decoration=jms.useCompression=true
+# The Broker's name must match the actual broker name in the broker config.
+# THIS IS NOT THE BROKER HOSTNAME WHICH IS CONFIGURED IN ducc.broker.hostname.
+# This is the internal name of the broker, used to locate Broker's MBean in
+# JMX Registry. It is NOT related to any node name. When using the ActiveMQ
+# distribution supplied with DUCC it should always be set to localhost.
ducc.broker.name=localhost
-ducc.broker.jmx.port=1100
-#
-# ActiveMQ credentials file used to authenticate DUCC daemons with the broker.
-#
-ducc.broker.credentials.file=${ducc.private.resources}/ducc-broker-credentials.properties
-# ActiveMQ Auto-management configuration
-# docc.broker.automanage - if true, DUCC will start and stop the broker as needed.
-# Otherwise, the installation is responsible for
-# managing ActiveMQ
-# ducc.broker.memor.options - If automanaged, the memory configuration passed to the JVM
-# ducc.broker.configuration - If automanaged, the location of the ActiveMQ broker configuration
-# ducc.broker.home - If automanaged, the location of the ActiveMQ installation
-# ducc.broker.server.url.decoration - If automanaged, the broker URL decoration
-#
+# The Broker's jmx port.
+# This is the port used to make JMX connections to the broker. This should only
+# be changed by administrators familiar with ActiveMQ configuration.
+ducc.broker.jmx.port=1100
+# If set to true, DUCC will start and stop the ActiveMQ broker as part of its normal
+# start/stop scripting.
ducc.broker.automanage = true
+
+# This is the ActiveMQ credentials file used to authenticate DUCC daemons with the
+# broker.
+ducc.broker.credentials.file=${ducc.private.resources}/ducc-broker-credentials.properties
+
+# This sets the heap size for the broker.
ducc.broker.memory.options = -Xmx1G
+# This is the ActiveMQ configuration file to use. The path
+# must be specified relative to the ActiveMQ installation directory.
ducc.broker.configuration = conf/activemq-ducc.xml
+
+# This names the location where ActiveMQ is installed.
ducc.broker.home = ${DUCC_HOME}/apache-uima/apache-activemq
-# transport.soWriteTimeout=45000, 45sec timeout on write operations to the socket.
+# The broker "server" URL decoration,
+# = 45 second timeout on write operations to the socket.
ducc.broker.server.url.decoration = transport.soWriteTimeout=45000
+
+# +==================================================================================================+
+# | Transport |
+# +==================================================================================================+
+
# To enable tracing of RM messages arriving in OR and NodeMetrics arriving in WS.
#ducc.transport.trace = orchestrator:RmStateDuccEvent webserver:NodeMetricsUpdateDuccEvent
-# By default, use Linux OS authentication (via PAM)
+
+# +==================================================================================================+
+# | Authentication |
+# +==================================================================================================+
+
+# This specifies the class used for Web Server session authentication.
+# If unconfigured, the Web Server enforces no authentication.
#ducc.authentication.implementer=org.apache.uima.ducc.ws.authentication.LinuxAuthenticationManager
-# Specify users allowed to login (default is all users can login)
+
+# Specify users allowed to log in to the web server.
#ducc.authentication.users.include = user1 user2
-# Specify users not allowed to login (default is all users can login; if user is in both include and exclude lists, then exclude is enforced)
+
+# Specify users not allowed to login (default is all users can login; if user is in
+# both include and exclude lists, then exclude is enforced)
#ducc.authentication.users.exclude = user1 user3
+
# Specify groups allowed to login (default is all groups can login)
#ducc.authentication.groups.include = groupA groupB
-# Specify groups not allowed to login (default is all groups can login; if group is in both include and exclude lists, then exclude is enforced)
+
+# Specify groups not allowed to login (default is all groups can login; if group is in
+# both include and exclude lists, then exclude is enforced)
#ducc.authentication.groups.exclude = groupA groupC
-# Access UIMA message catalogs
+
+# +==================================================================================================+
+# | Language |
+# +==================================================================================================+
+
+# Establish the language for national language support of messages.
+# Currently only "en" is supported.
ducc.locale.language=en
+# Establish the country for National Language Support of messages.
+# Currently only "us" is supported.
ducc.locale.country=us
-# Specify a minimum amount of free swap space available on a node.
-# If an agent detects free swap space dipping below the value defined
-# below, it will find the fattest (in terms of memory) process in its
-# inventory and kill it. The value of the parameter below is expressed
-# in KB.
-# Initially disabled by setting the threshold at 0.
-# Set this to 1GB equiv
-ducc.node.min.swap.threshold=0
-# administrative endpoint for all ducc components
+# +==================================================================================================+
+# | Daemon Administration |
+# +==================================================================================================+
+
+# This is the JMS endpoint name used for DUCC administration messages.
ducc.admin.endpoint=ducc.admin.channel
-# endpoint type choices[topic]
-ducc.admin.endpoint.type=topic
+# This is the JMS message type used for DUCC administration messages.
+# Only "topic" is supported.
+ducc.admin.endpoint.type=topic
-# jmx port number for Ducc process. Each Ducc process will attempt
+# JMX port number for Ducc process. Each DUCC process will attempt
# to use this port for its JMX Connector. If the port is not available
# port+1 will be used until an available port is found.
+# Every process started by DUCC has JMX enabled by default.
+# The DUCC WebSever's System.Daemons page is used to find the JMX URL that gets assigned to
+# each of the DUCC management processes. The Web Server's Job.Details page for each job is
+# used to find the JMX URL that is assigned to each JP.
ducc.jmx.port=2099
ducc.agent.jvm.args = -Xmx500M
@@ -156,62 +201,109 @@ ducc.pm.jvm.args = -Xmx1G
ducc.sm.jvm.args = -Xmx1G
ducc.ws.jvm.args = -Xmx2G -Djava.util.Arrays.useLegacyMergeSort=true
-# ========== General Configuration block ==========
+
+# +==================================================================================================+
+# | Node Administration |
+# +==================================================================================================+
+
+# Specify a minimum amount of free swap space available on a node.
+# If an agent detects free swap space dipping below the value defined
+# below, it will find the fattest (in terms of memory) process in its
+# inventory and kill it. The value of the parameter below is expressed
+# in bytes.
+# Initially disabled by setting the threshold at 0.
+ducc.node.min.swap.threshold=0
+
+# +==================================================================================================+
+# | Job Administration |
+# +==================================================================================================+
# Max number of work-item CASes for each job (default is "unlimited")
# Note: formerly known as ducc.threads.limit
+# This enforces a maximum number of pipelines per job, over all its processes. No
+# job will have more active work-items than this dispatched.
+# The value is related to the size of the Job Driver heap and the real memory consumed by JD.
+# If the JD is consuming too much memory, try reducing this value.
ducc.job.max.pipelines.count = 5000
-# ========== CLI Configuration block ==========
+# +==================================================================================================+
+# | CLI Administration |
+# +==================================================================================================+
+
# These environment values are included on job/service/AP submissions
ducc.environment.propagated = USER HOME LANG DUCC_SERVICE_INSTANCE
# No timeout on CLI requests
ducc.cli.httpclient.sotimeout=0
#------------------------------------------------------------------------------
-# off, // CLI submit and cancel signature enforcement disabled
-# on, // CLI submit and cancel signature enforcement enabled (default)
+# When set, the CLI signs each request so the Orchestrator can be sure the
+# requestor is actually who he claims to be.
+# off, // CLI submit and cancel signature enforcement disabled
+# on, // CLI submit and cancel signature enforcement enabled (default)
ducc.signature.required=on
#------------------------------------------------------------------------------
-# ========== Web Server Configuration block ==========
+# +==================================================================================================+
+# | Web Server |
+# +==================================================================================================+
+
+# The name of the pluggable java class used to implement the Web Server.
ducc.ws.configuration.class=org.apache.uima.ducc.ws.config.WebServerConfiguration
-# This endpoint is used for webserver self test to determine viability of broker.
-# After 3 missed messages to self via broker, webserver considers broker to be down.
+# This endpoint is used for Web Server self test to determine viability of broker.
+# After 3 missed messages to self via broker, Web Server considers broker to be down.
ducc.ws.state.update.endpoint=ducc.ws.state
-# endpoint type choices[topic]
+
+# This is the JMS endpoint type used for the state messages sent by the Web Server.
ducc.ws.state.update.endpoint.type=topic
+
+# The interval in milliseconds between Web Server publications of its state.
ducc.ws.state.publish.rate=5000
-# Optionally configure the webserver to run on a non-head node
+# Optionally configure the Web Server to run on a non-head node
+# This is the name of the node the web server is started on. If not specified,
+# the web server is started on ${ducc.head}.
# ducc.ws.node = my.node.com
-# Optionally configure the webserver IP address
+
+# Optionally configure the Web Server IP address
+# In multi-homed systems it may be necessary to specify to which of the multiple addresses
+# the Web Server listens for requests. This property is an IP address that specifies to which
+# address the Web Server listens.
# ducc.ws.ipaddress = <fill in an IP address>
-# Optionally configure the webserver IP port for HTTP requests, default is 42133
+
+# Optionally configure the Web Server IP port for HTTP requests, default is 42133
ducc.ws.port = 42133
-# Optionally configure the webserver IP port for HTTPS requests, default is 42155
+
+# Optionally configure the Web Server IP port for HTTPS requests, default is 42155
ducc.ws.port.ssl = 42155
-# Optionally configure the webserver ssl pw for HTTPS requests, default is quackquack
-# See private/ducc.private.properties
-# Optionally configure the webserver login session timeout, in minutes, default is 60
+
+# Optionally configure the Web Server login session timeout, in minutes, default is 60
+# @Deprecated
ducc.ws.session.minutes = 60
-# Optionally configure the webserver job automatic cancel timeout, default is 10. To disable feature specify 0.
-# Employed when user specifies --wait_for_completion flag on job submission, in which case the job monitor
-# program must visit http://<host>:<port>/ducc-servlet/proxy-job-status?id=<job-id> within this expiry time
-# else the job will be automatically canceled (unless feature disabled) by the webserver acting as the
-# administrator ducc (which must be specified in the ducc.administrators file).
+
+# Optionally configure the Web Server job automatic cancel timeout, default is 10. To disable
+# feature specify 0. Employed when user specifies --wait_for_completion flag on job submission,
+# in which case the job monitor program must visit
+# http://<host>:<port>/ducc-servlet/proxy-job-status?id=<job-id> within this expiry time
+# else the job will be automatically canceled (unless feature disabled) by the Web Server
+# acting as the administrator ducc (which must be specified in the ducc.administrators file).
ducc.ws.automatic.cancel.minutes = 5
-# Optionally configure the webserver max history entries for each of Jobs/Reservations/Services
+
+# Optionally configure the Web Server max cached (and thus available for display)
+# history entries for each of Jobs/Reservations/Services
ducc.ws.max.history.entries = 4096
-# Specify the ducc webserver jsp compilation directory
-# Note: This directory is removed then recreated on each webserver restart
+
+# Specify the ducc Web Server jsp compilation directory
+# Note: This directory is removed then recreated on each Web Server restart
ducc.ws.jsp.compilation.directory = /tmp/ducc/jsp
+
# Specify login enabled (default is true)
ducc.ws.login.enabled = false
-# For node visualization - if true,strip domain names from labels for cleaner visuals
+
+# For node visualization - if true, strip domain names from labels for cleaner visuals
ducc.ws.visualization.strip.domain = true
-# Optionally configure the webserver request log, default is 0 (meaning no request logging)
+
+# Optionally configure the Web Server request log, default is 0 (meaning no request logging)
# Logs are written to DUCC_HOME/logs/webserver
ducc.ws.requestLog.RetainDays = 30
@@ -222,49 +314,82 @@ ducc.ws.requestLog.RetainDays = 30
# change: effective immediately
#ducc.ws.banner.message = Do not adjust your set. This is a message from your DUCC administrator.
-# ========== Web Server Configuration block ==========
+# +==================================================================================================+
+# | Job Driver |
+# +==================================================================================================+
-# ========== Job Driver Configuration block ==========
+# The name of the pluggable java class used to implement the Job Driver (JD).
ducc.jd.configuration.class=org.apache.uima.ducc.transport.configuration.jd.JobDriverConfiguration
+
+# This is the JMS endpoint name by the Job Driver to send state to the Orchestrator.
ducc.jd.state.update.endpoint=ducc.jd.state
-# endpoint type choices[topic]
+
+# This is the JMS message type used to send state to the Orchestrator.
ducc.jd.state.update.endpoint.type=topic
+
+# The interval in milliseconds between JD state publications to the Orchestrator.
+# A higher rate (smaller number) may slightly increase system response but will
+# increase network load. A lower rate will somewhat decrease system response and
+# lower network load.
ducc.jd.state.publish.rate=15000
+
# This is a human-readable string used to form queue names for the JMS queues used to pass
# CASs from the Job Driver to the Job Processes. The completed queue named comprises the prefix
# concatenated with the DUCC assigned Job number.
ducc.jd.queue.prefix=ducc.jd.queue.
-# After dispatching a work item to UIMA-AS client for processing, the number of minutes that the Job Driver will
-# wait for two callbacks (queued and assigned) before considering the work item lost. The elapsed time for the
-# callbacks is normally sub-second. Intermittent network problems may cause unusual spikes.
-# If not specified, default value is 5 minutes.
+
+# After dispatching a work item to UIMA-AS client for processing, the number of minutes that the
+# Job Driver will wait for two callbacks (queued and assigned) before considering the work item
+# lost. The elapsed time for the callbacks is normally sub-second. Intermittent network problems
+# may cause unusual spikes. If not specified, default value is 5 minutes.
ducc.jd.queue.timeout.minutes=5
+
# If not specified, default value is 24 hrs (24*60 minutes)
+# This property specifies the default value for the time, in minutes, that the JD should
+# wait for a work-item to be processed. If processing has not completed in this time the
+# process is terminated and the job's error handler decides whether to retry the
+# work-item or not.
ducc.default.process.per.item.time.max = 1440
+
# If not specified, default max time in minutes allowed for AE initialization.
+# This property specifies the default value for the time, in minutes, that the agent should
+# wait for a JP to complete initialization. If initialization is not completed in this time
+# the process is terminated and and InitializationTimeout status is sent to the JD
+# which decides whether to retry the process or terminate the job.
ducc.default.process.init.time.max = 120
-# The following 5 values comprise the specification used by the DUCC Orchestrator daemon to request an
-# allocation from the DUCC Resource Manager for Job Driver use. The values given below are the defaults.
+
+# The following 5 values comprise the specification used by the DUCC Orchestrator daemon to
+# request an allocation from the DUCC Resource Manager for Job Driver use. The values given
+# below are the defaults.
ducc.jd.host.class=JobDriver
ducc.jd.host.description=Job Driver
ducc.jd.host.memory.size=2GB
ducc.jd.host.number.of.machines=1
ducc.jd.host.user=System
-# For a newly started Job, the number of JP UIMA initialization failures
-# allowed until at least one JP succeeds - otherwise, the Job self-destructs.
-# Default is 1.
+
+# For a newly started Job, the number of JP UIMA initialization failures
+# allowed until at least one JP succeeds - otherwise, the Job self-destructs.
+# Default is 1.
ducc.jd.startup.initialization.error.limit=1
-# The next 4 values are related - each JD is assigned a piece of the Job Driver host memory which,
-# along with the size of the CR's type system, limits the number of active work-item CASes in a job.
-# To avoid swapping the max heap size should also be restricted.
+
+# The next 4 values are related - each JD is assigned a piece of the Job Driver host memory
+# which, # along with the size of the CR's type system, limits the number of active work-item
+# CASes in a job. To avoid swapping the max heap size should also be restricted.
+
# Memory size in MB allocated for each JD (default 300)
+# When CGroups are enabled, this is the RSS, in MB, that is reserved for each JD process,
+# and enforced by the CGroup support. Larger JDs are permitted, but the CGroup support will
+# force the excess RSS onto swap. This potentially slows the performance of that JD, but
+# preserves the resources for other, better-behaved, JDs.
ducc.jd.share.quantum = 400
+
# The number of "slices" of size "jd.share.quantum" kept in reserve.
# The Orchestrator makes Reservation requests to RM to get Reservations
# (Job Driver hosts) each of which is then subdivided into "slices", one
# per JD. This number specifies the number of unused "slices" that should
# be kept on-hand in anticipation of newly submitted jobs (default 2)
ducc.jd.share.quantum.reserve.count = 3
+
# The maximum length of a work-item name returned by CAS.getDocumentText().
# Truncation is enforced beyond this limit.
# If not specified, there is no limit.
@@ -288,9 +413,11 @@ ducc.driver.jvm.args = -Xmx300M
# Max number of threads in Jetty thread pool servicing incoming
# HTTP requests
# ducc.driver.jetty.max.threads = 100
+
# Max idle time for jetty threads (in millis). When a thread exceeds
# its idle time it will be terminated.
# ducc.driver.jetty.thread.idletime = 60000
+
# Extra JVM args to be appended to any user-supplied "process_jvm_args"
# Dynamic: changes to this property immediately affect new submitted work
# ducc.process.jvm.args=-XX:+HeapDumpOnOutOfMemoryError
@@ -307,6 +434,9 @@ ducc.jd.communications.scheme=https
# purpose: specify error handler
# default: org.apache.uima.ducc.ErrorHandler
# change: effective immediately for new jobs
+# details: The error handler class is employed when work items fail or time-out in order
+# to determine what to do next in three dimensions:
+# job kill or continue, process kill or continue, work item kill or continue.
ducc.jd.error.handler.class = org.apache.uima.ducc.ErrorHandler
# --------------------------------------------------------------
@@ -314,52 +444,119 @@ ducc.jd.error.handler.class = org.apache
# purpose: configure error handler
# choices: max_job_errors=<e> max_timeout_retrys_per_workitem=<r>
# change: effective immediately for new jobs
+# details: The error handler args passed to the error handler class (see above).
+# These values, if any, are combined with any specified by the user.
+# Individual user specified --driver_exception_handler_arguments <args>
+# prevail.
ducc.jd.error.handler.args = max_job_errors=15 max_timeout_retrys_per_workitem=0
-# ========== Job Driver Configuration block ==========
-# ========== Service Manager Configuration block ==========
-# Class used to implement the SM - internals only, don't change.
+# +==================================================================================================+
+# | Service Manager |
+# +==================================================================================================+
+
+# This is the name of the pluggable java class used to implement the Service Manager.
ducc.sm.configuration.class=org.apache.uima.ducc.sm.config.ServiceManagerConfiguration
-# Name of the AMQ topic used to communicate with SM - internals, don't change
+
+# This is the JMS endpoint name used for state messages sent by the Service Manager.
ducc.sm.state.update.endpoint=ducc.sm.state
-# AMQ protocol to use - internals, don't change
+
+# This is the JMS message type used for state messages sent by the Service Manager.
ducc.sm.state.update.endpoint.type=topic
+
# Default pinger
+# This is the name of the default UIMA-AS ping/monitor class. The default class issues
+# get-meta to a service and uses JMX to fetch queue statistics for presentation in
+# the Web Server.
+# This name is either:
+# - The fully qualified name of the class to use as the default UIMA-AS pinger. It may
+# be necessary to include the class or jar file in the classpath used to start the SM.
+# (The recommended way to do this is add an entry to the ducc.local.jars property
+# in ducc.properties.
+# - The name of a pinger registration file. This is the recommended way to
+# provide installation-customized pingers. In short, it resides in ducc.properties
+# and contains the full set of ping-related properties needed to run a pinger.
ducc.sm.default.monitor.class = org.apache.uima.ducc.cli.UimaAsPing
-# max consecutive init failures or ping failures for ping-only services before we stop starting things
+
+# This is the maximum number of consecutive failures of service instance initialization
+# permitted before DUCC stops creating new instances. When this cap is hit the SM
+# will disable autostart for the service. It may be overridden by the service
+# registration's instance_failures_limit parameter.
ducc.sm.instance.failure.max 5
+
# backward compatibility
ducc.sm.instance.failure.limit ${ducc.sm.instance.failure.max}
-# failure window size in MINUTES.
+
+# This specifies a window of time in minutes over which some number of service instance
+# failures are tolerated. If the maximum number of tolerated failures is
+# exceeded within this time window the Service Manager ceases to restart
+# instances automatically. The maximum tolerated failures is defined in
+# ducc.sm.instance.failure.max.
+# This may be overridden by individual service pingers using the registration
+# property instance_failures_window.
ducc.sm.instance.failure.window 30
+
# max consecutive instance init failures before we stop trying to start things
ducc.sm.init.failure.limit 1
-# How often services are monitored to insure they're responding, in milliseconds
+
+# This is the time, in milliseconds, between pings by the Service Manager
+# to each known, running service.
ducc.sm.meta.ping.rate = 60000
-# How many consecutive missed pings are required to mark a service unresponsive
+
+# This is the number of consecutive pings that may be missed before a
+# service is considered unavailable.
ducc.sm.meta.ping.stability = 10
-# How long to wait for a ping to respond, in milliseconds
+
+# This is the time in milliseconds the SM waits for a response to a ping. If the service does
+# not respond within this time the ping is accounted for as a "missed" ping.
ducc.sm.meta.ping.timeout = 15000
-# Port the CLI uses to contact SM
+
+# This is the HTTP port used by the Service Manager to field requests from the CLI / API.
ducc.sm.http.port=19989
-# Node where SM resides
+
+# This is the node where the Service Manager runs. It MUST be configured as part of DUCC
+# setup. The ducc_post_install procedures initialize this to ${ducc.head}
ducc.sm.http.node=${ducc.head}
-# How long to keep a reference-started service alive after the last referencing job exits
+
+# This is the length of time, in milliseconds, that the SM allows a service to remain alive after
+# all jobs that reference it have exited. If no new job referencing it enters the system before this
+# time has expired, the SM stops the service.
ducc.sm.default.linger=300000
-# === END == Service Manager Configuration block ==========
-# ========== Orchestrator Configuration block ==========
+# +==================================================================================================+
+# | Orchestrator |
+# +==================================================================================================+
+
+# This is the name of the pluggable java class used to implement the DUCC Orchestrator.
ducc.orchestrator.configuration.class=org.apache.uima.ducc.orchestrator.config.OrchestratorConfiguration
+
+# This indicates the level of recovery to be taken on restarting a
+# system. There are two levels of startup:
+# [cold] All reservations are canceled, all currently running
+# jobs (if any) are terminated. All services are terminated. The
+# system starts with no jobs, reservations, or services active.
+# [warm] All unmanaged reservations are restored. All currently
+# running jobs (if any) are terminated. All services are started or
+# restarted as indicated by their state when the system went down.
+# The system starts with no jobs active, but unmanaged reservations
+# and services are preserved.
#------------------------------------------------------------------------------
# cold, // Recover: All is lost JD host: employ new
# warm, // Recover: Unmanaged Reservations only (default) JD host: employ new
ducc.orchestrator.start.type=warm
#------------------------------------------------------------------------------
+
+# This is the name of the JMS endpoint through which the Orchestrator broadcasts its
+# state messages. These messages include full job information and can be relatively
+# large, though they are now compressed.
ducc.orchestrator.state.update.endpoint=ducc.orchestrator.state
-# endpoint type choices[topic]
+
+# This is the JMS endpoint type used for the state messages sent by the Orchestrator.
ducc.orchestrator.state.update.endpoint.type=topic
+
+# The interval in milliseconds between Orchestrator publications of its state.
ducc.orchestrator.state.publish.rate=10000
+
#------------------------------------------------------------------------------
# How long between between maintenance cycles (in milliseconds)
# Each maintenance cycle the orchestrator removes obsolete JD queues (MqReaper)
@@ -367,118 +564,291 @@ ducc.orchestrator.state.publish.rate=100
# for a Jobs that have too many initialization failures and terminating Jobs whose
# JDs have failed.
ducc.orchestrator.maintenance.rate=60000
+
#------------------------------------------------------------------------------
-# orchestrator's jetty http port
+# This is the HTTP port used by the Orchestrator to field requests from the CLI / API.
ducc.orchestrator.http.port=19988
-# Node where OR is running. This is needed by CLI to compose a URL to access OR jetty server
+
+# Node where OR is running. This is needed by CLI to compose a URL to access OR jetty server.
+# This is the node where the Orchestrator runs. It MUST be configured as part of DUCC
+# setup. The ducc_post_install procedures initialize this to ${ducc.head}
ducc.orchestrator.http.node=${ducc.head}
+
#------------------------------------------------------------------------------
# Specify if reserving an entire machine is allowed
-# This could be a bad idea when a cluster has very few, very large machines.
+# Allowing could be a bad idea when a cluster has very few, very large machines.
ducc.orchestrator.unmanaged.reservations.accepted=true
-# ========== Orchestrator Configuration block ==========
-# Resource Manager Configuration block
+# +==================================================================================================+
+# | Resource Manager (aka Scheduler) |
+# +==================================================================================================+
+
+# This is the name of the pluggable java class used to implement the DUCC Resource
+# Manager.
ducc.rm.configuration.class=org.apache.uima.ducc.rm.config.ResourceManagerConfiguration
-# Queue name for broadcast RM state
+
+# This is the name of the JMS endpoint through which the Resource Manager broadcasts its
+# state.
ducc.rm.state.update.endpoint=ducc.rm.state
-# If enabled, RM tries to start as soon as it recovers state from an OR publication,
-# instead of waiting for init.stability for nodes to check in.
+
+# This is the JMS endpoint type used for state messages sent by the Resource Manager.
ducc.rm.state.update.endpoint.type=topic
-# the frequency, relative to or publications, at which RM runs a schedule
+
+# This specifies the frequency of RM schedules, relative to the number of Orchestrator publications.
+# If the value is set to 1, RM runs and publishes a schedule immediately on receipt of OR state.
+# If set to some number N, RM runs a schedule after receipt of every N Orchestrator publications.
ducc.rm.state.publish.ratio = 1
-# maximum allotment in GB for Non-preemptable shares - default is unlimited
+# This specifies the maximum non-preemptable shares any user may be awarded, in GB. If not configured,
+# there is no maximum enforced. This can be overridden on a per-user basis in the user registry.
#ducc.rm.global_allotment = 360
-# Base size of dram quantum in Gb
+# The share quantum is the smallest amount of RAM that is schedulable for jobs, in GB.
+# Jobs are scheduled based entirely on their memory requirements. Memory is allocated in
+# multiples of the share quantum.
ducc.rm.share.quantum = 1
-# Implementation class for actual scheduling algorithm
+
+# The component that implements the scheduling algorithm is pluggable. This specifies the
+# name of that class.
ducc.rm.scheduler = org.apache.uima.ducc.rm.scheduler.NodepoolScheduler
+
# File defining the scheduler classes - found in DUCC_HOME/resources
ducc.rm.class.definitions = ducc.classes
+
# File defining the user registry. Optional, need not exist. Found in DUCC_HOME/resources.
+# The registry is used only to override the global allotments. The registry entries may also
+# be placed in the ducc.classes file if desired.
ducc.rm.user.registry = ducc.users
+
# default memory, in GB, if not specified
ducc.rm.default.memory = 4
-# number of node metrics heartbeats to wait for before rm starts up
+
+# Number of node metrics heartbeats to wait for before rm starts up.
+# During DUCC initialization the Resource Manager must wait some period of time for
+# all the nodes in the cluster to check-in via their "heartbeats". If the RM were to start
+# scheduling too soon there would be a period of significant "churn" as the perceived cluster
+# configurations changes rapidly. As well, it would be impossible to recover work in a warm
+# or hot start if the affected nodes had not yet checked in.
+# The init.stability property indicates how many heartbeat intervals the RM must wait before
+# it starts scheduling after initialization.
ducc.rm.init.stability = 2
-# number of missed node metrics updates to consider node down
+
+# Number of missed node metrics updates to consider node down.
+# The RM receives regular "heartbeats" from the DUCC agents in order to know what
+# nodes are available for scheduling. The node.stability property configures the number of
+# consecutive heartbeats that may be missed before the Resource Manager considers the
+# node to be inoperative.
+# If a node becomes inoperative, the Resource Manager deallocates all processes on that
+# node and attempts to reallocate them on other nodes. The node is marked offline and is
+# unusable until its heartbeats start up again.
+# The default configuration declares the agent heartbeats to occur at 1 minute intervals.
+# Therefore heartbeats must be missed for five minutes before the Resource Manager takes
+# corrective action.
ducc.rm.node.stability = 5
-# which policy to use when shrinking/evicting shares - alternatively, SHRINK_BY_MACHINE
+
+# Which policy to use when shrinking/evicting shares - alternatively, SHRINK_BY_MACHINE.
+# The eviction.policy is a heuristic to choose which processes of a job to preempt because of
+# competition from other jobs.
+# The SHRINK_BY_INVESTMENT (default) policy attempts to preempt processes such that the
+# least amount of work is lost. It chooses candidates for eviction in order of:
+# - Processes still initializing, with the smallest time spent in the initializing step.
+# - Processes whose currently active work items have been executing for the shortest time.
+# The SHRINK_BY_MACHINE policy attempts to preempt processes so as to minimize
+# fragmentation on machines with large memories that can contain multiple job processes.
+# No consideration of execution time or initialization time is made.
ducc.rm.eviction.policy = SHRINK_BY_INVESTMENT
-# max nodes to initially allocate until init is complete
+
+# Max nodes to initially allocate until init is complete.
+# The type of jobs supported by DUCC generally have very long and often fragile
+# initialization periods. Errors in the applications and other problems such is missing or
+# errant services can cause processes to fail during this phase.
+# To avoid preempting running jobs and allocating a large number of resources to jobs only
+# to fail during initialization, the Resource Manager schedules a small number of processes
+# until it is determined that the initialization phase will succeed.
+# The initialization.cap determines the maximum number of processes allocated to a job
+# until at least one process successfully initializes. Once any process initializes the Resource
+# Manager will proceed to allocate the job its full fair share of processes.
+# The initialization cap can be overridden on a class basis by configuration via ducc.classes.
ducc.rm.initialization.cap = 1
+
# When true, jobs expand not all at once after init, but a bit slower, doubling each epoch
# until max fair-share is set. If false, jobs increase immediately to their fair share,
# at the cost of mass evictions.
+# Expand.by.doubling can be overridden on a class basis by configuration via ducc.classes.
ducc.rm.expand.by.doubling = true
-# Predict when a job will end and avoid expanding if not needed
+
+# Predict when a job will end and avoid expanding if not needed.
+# Because initialization time may be very long, it may be the case that a job that might be
+# eligible for expansion will be able to complete in the currently assigned shares before any
+# new processes are able to complete their initialization. In this case expansion results in
+# waste of resources and potential eviction of processes that need not be evicted.
+# The Resource Manager monitors the rate of task completion and attempts to predict the
+# maximum number of processes that will be needed at a time in the future based on the
+# known process initialization time. If it is determined that expansion is unnecessary then it
+# is not done for the job.
+# Prediction can be overridden on a class basis by configuration via ducc.classes.
ducc.rm.prediction = true
-# Add this fudge factor (milliseconds) to the expansion target when using prediction
+
+# Add this fudge factor (milliseconds) to the expansion target when using prediction.
+# When ducc.rm.prediction is enabled, the known initialization time of a job's processes plus
+# some "fudge" factor is used to predict the number of future resources needed. The "fudge"
+# is specified in milliseconds.
+# The default "fudge" is very conservative. Experience and site policy should be used to set a
+# more practical number.
+# Prediction.fudge can be overridden on a class basis by configuration via ducc.classes.
ducc.rm.prediction.fudge = 120000
-# What is minimum number of processes for a job before we do defrag? If a job has less than this amount
-# RM may attempt defragmentation to bring the processes up to this value.
+
+# What is minimum number of processes for a job before we do defrag? If a job has less than
+# this amount RM may attempt defragmentation to bring the processes up to this value.
+# If enabled, limited defragmentation of resources is performed by the Resource Manager to
+# create sufficient space to schedule work that has insufficient resources (new jobs, for
+# example.). The term "insufficient" is defined as "needing more processes than the
+# defragmentation # threshold, but currently having fewer processes than the defragmentation
+# threshold." These are called "needy" jobs. Additionally, the Resource Manager
+# will never evict processes from ``needy'' jobs for the purpose of defragmentation.
+# This property allows installations to customize the value used to determine if a
+# job is "needy". Jobs with fewer processes than this are potentially needed, and
+# jobs with more processes are never needy.
ducc.rm.fragmentation.threshold = 8
-# Endpoint for RM admin CLI
+
+# This JMS endpoint used for RM administrative requests.
ducc.rm.admin.endpoint = ducc.rm.admin.channel
+
+# This is the JMS endpoint type used for RM administrative requests.
ducc.rm.admin.endpoint.type = queue
-# Agent Configuration block
+# +==================================================================================================+
+# | Agents |
+# +==================================================================================================+
+
+# This is the name of the pluggable java class used to implement the DUCC Agents.
ducc.agent.configuration.class=org.apache.uima.ducc.agent.config.AgentConfiguration
+
+# This is the JMS endpoint through which agents receive state from the Process Manager.
ducc.agent.request.endpoint=ducc.agent
-# endpoint type choices[topic]
+
+# This is the JMS endpoint type used for state messages sent by the Process Manager.
ducc.agent.request.endpoint.type=topic
-# Endpoint where uima as service wrapper reports status
+# This is the JMS endpoint used to communicate
+# from the managed process to the Agent (Job Process).
ducc.agent.managed.process.state.update.endpoint=ducc.managed.process.state.update
-# endpoint type choices[socket]
+
+# This is the JMS endpoint type used to communicate
+# from the managed process (Job Process) to the Agent.
ducc.agent.managed.process.state.update.endpoint.type=socket
-# endpoint parameters which are transport specific. For socket
-# transport params are:
+
+# Endpoint parameters which are transport specific.
+# For socket transport params are:
# - transferExchange=true - include Camel Exchange wrapper in a message
# - synch=false - use socket transport for one-way messaging (no replies neeeded)
ducc.agent.managed.process.state.update.endpoint.params=transferExchange=true&sync=false
-# max UID reserved by OS. This is used to detect rogue processes and to report
+# ***** Note: the Resource Manager uses the data in the node metrics for scheduling.
+
+# Max UID reserved by OS. This is used to detect rogue processes and to report
# available memory on a node.
ducc.agent.node.metrics.sys.gid.max=500
-
+# The interval in milliseconds between node metric publications.
+# Every agent publishes its updates at this rate. On large clusters, a high rate (small
+# interval) can be a burden on the network.
ducc.agent.node.metrics.publish.rate=30000
+
+# This is the JMS endpoint used to send node metrics updates to listeners. Listeners
+# are usually the Resource Manager and Web Server. These messages serve as node
+# "heartbeats". As well, the node metrics heartbeats contain the amount of RAM on the node
+# and the number of processors.
ducc.agent.node.metrics.endpoint=ducc.node.metrics
-# endpoint type choices[topic]
+
+# This is the JMS endpoint type used to send node metrics updates from the agents.
ducc.agent.node.metrics.endpoint.type=topic
-# Rate at which an agent publishes its process inventory
-# The agent will only publish at this rate if there are
-# changes since the last publish.
+
+# The interval in milliseconds between node inventory publications.
+# If the inventory has not changed since the last update the agent bypasses sending the
+# update, up to a maximum of ducc.agent.node.inventory.publish.rate.skip times.
ducc.agent.node.inventory.publish.rate=10000
-# If no changes in inventory, publish every 3 intervals defined by ducc.agent.node.inventory.publish.rate
+
+# This is the number of times the agent will bypass publishing its node inventory if the
+# inventory has not changed.
ducc.agent.node.inventory.publish.rate.skip=3
+
+# This is the JMS endpoint used to send node inventory messages to listeners. Listeners are
+# usually the Orchestrator and Web Server. Information in these messages include a map of
+# processes being managed on the node.
ducc.agent.node.inventory.endpoint=ducc.node.inventory
-# endpoint type choices[topic]
+
+# This is the JMS endpoint type used to send node inventory updates from the agents.
ducc.agent.node.inventory.endpoint.type=topic
+
# ducc.agent.launcher.thread.pool.size - Deprecated
#ducc.agent.launcher.thread.pool.size=10
+
# enable/disable use of ducc_ling
# ducc.agent.launcher.use.ducc_spawn: true, use ducc_ling. Default: false
ducc.agent.launcher.use.ducc_spawn=true
-# specify location of ducc_ling in the filesystem
+
+# Specify location of ducc_ling in the filesystem.
+# This property specifies the full path to the ducc_ling utility. During installation ducc_ling
+# is normally moved to local disk and given setuid-root privileges. Use this property to tell
+# the DUCC agents the location of the installed ducc_ling. The default location is within
+# an architecture dependent subdiretory of DUCC_HOME/admin.
+# The arcitecture is derived from the JRE property os.arch. During DUCC installation
+# the ducc_ling utility is compiled for the architecture of the host where DUCC is installed.
+# In heterogeneous clusters, the system administrator should run the utility build_duccling
+# once on a machine of each architecture to insure this utility gets correctly installed.
ducc.agent.launcher.ducc_spawn_path=${DUCC_HOME}/admin/${os.arch}/ducc_ling
-# Max amount of time (in millis) agent allows the process to stop before issuing kill -9
+
+# Max amount of time (in millis) agent allows the process to stop before issuing kill -9.
+# This property specifies the time, in milliseconds, the agent should wait before forcibly
+# terminating a job process (JP) after an attempted graceful shutdown. If the child process
+# does not terminate in the specified time, it is forcibly terminated with kill -9.
+# This type of stop can occur because of preemption or system shutdown.
ducc.agent.launcher.process.stop.timeout=60000
+
# Max time in millis allowed for AE initialization. Default 2 hours 7200000. - Deprecated
#ducc.agent.launcher.process.init.timeout=7200000
-# exclude the following user ids while detecting rogue processes
+
+# Exclude the following user ids while detecting rogue processes
+# The DUCC Agents scan nodes for processes that should not be running; for example,
+# a job may have left a 'rogue' process alive when it exits, or a user may log in to a node
+# unexpectedly. These processes are reported to the administrators via the webserver for
+# possible action.
+# This configuration parameter enumerates userids which are ignored by the rogue-process scan.
+# default = root,posstfix,ntp,nobody,daemon,100
ducc.agent.rogue.process.user.exclusion.filter=
-#exclude the following processes while detecting rogue processes
+
+# Exclude the following processes while detecting rogue processes
+# The DUCC Agents scan nodes for processes that should not be running; for example,
+# a job may have left a 'rogue' process alive when it exits, or a user may log in to a node
+# unexpectedly. These processes are reported to the administrators via the webserver for
+# possible action.
+# This configuration parameter enumerates processes by name which are ignored by the
+# rogue process detector.
+# default = sshd:,-bash,-sh,/bin/sh,/bin/bash,grep,ps
ducc.agent.rogue.process.exclusion.filter=sshd:,-bash,-sh,/bin/sh,/bin/bash,grep,ps
+
# Fudge Factor (in terms of percantage) that agent uses to multiply a share size when
# determining if a JP exceeds its alloted memory, which is calculated as follows
# (fudge factor/100)*share size + share size. If this number exceeds JPs RSS, the agent
# kills the process.
+# The DUCC agent monitors the size of the resident memory of its spawned processes. If a
+# process exceeds its declared memory size by any significant amount it is terminated and
+# a ShareSizeExceeded message is sent. The Job Driver counts this towards the maximum
+# errors for the job and will eventually terminate the job if excessive such errors occur.
+# This property defines the percentage over the declared memory size that a process is
+# allowed to grow to before being terminated.
+# To disable this feature, set the value to -1.
ducc.agent.share.size.fudge.factor=5
+
# Enable/Disable CGroup support.
+# If CGroups are not installed on a specific machine, this is ignored.
+# With CGroups the RSS for a managed process (plus any children processes it may spawn) is
+# limited to the allocated share size. Additional memory use goes to swap space. DUCC
+# monitors and limits swap use to the same proportion of total swap space as allocated
+# share size is to total RAM. If a process exceeds its allowed swap space it is terminated
+# and a ShareSizeExceeded message is sent to the Job Driver.
+# Nodes not using CGroups fall back to the ducc.agent.share.size.fudge.factor.
ducc.agent.launcher.cgroups.enable=true
# Define location of cgroups utils like cgexec. For mixed clusters with different
@@ -486,48 +856,80 @@ ducc.agent.launcher.cgroups.enable=true
# a comma separated list of paths like this:
# ducc.agent.launcher.cgroups.utils.dir=/usr/bin,<OS 1 path>,<OS 2 path>
ducc.agent.launcher.cgroups.utils.dir=/usr/bin,/bin
+
# Set cgroup memory.swappiness
ducc.agent.launcher.cgroups.swappiness=10
-# number of retries to use when cgcreate fails
+
+# Number of retries to use when cgcreate fails
ducc.agent.launcher.cgroups.max.retry.count=1
-# amount by which to increase delay (in msecs) between each retry
+
+# Amount by which to increase delay (in msecs) between each retry
+# Defines a delay factor in millis an agent will use to determine how long it
+# should sleep between cgroup create retries. Each time cgcreate fails
+# an agent will increment the delay by adding the delay factor to a previous
+# delay. If the delay factor is 2000, on first cgcreate failure an agent will
+# wait 2000 ms, on second failure the wait time will be 4000, on third 6000, and
+# so on.
ducc.agent.launcher.cgroups.retry.delay.factor=2000
-# exclusion file to enable node based exclusion for cgroups and aps
+
+# Exclusion file to enable node based exclusion for cgroups and aps
# syntax: <node>=cgroups,ap
# the above will exclude node from using cgroups and/or prevent deployment of APs
ducc.agent.exclusion.file=${DUCC_HOME}/resources/exclusion.nodes
+
# Define cgroup control subsystems used to enforce fair share on a node
ducc.agent.launcher.cgroups.subsystems=memory,cpu
+
# Define script which will collect total swap used by a given process. This
# script is launched by an agent via duccling and running as the owner
# of the process.
ducc.agent.swap.usage.script=${DUCC_HOME}/bin/ducc_get_process_swap_usage.sh
-#
# Uncomment the following line to support auto reaping of rogue processes by Ducc's Agent
# ducc.agent.rogue.process.reaper.script=${DUCC_HOME}/admin/ducc_reap_rogues.sh
-#
-# Process Manager Configuration block
+
+# +==================================================================================================+
+# | Process Manager |
+# +==================================================================================================+
+
+# This is the name of the pluggable java class used to implement the DUCC Process Manager.
ducc.pm.configuration.class=org.apache.uima.ducc.pm.config.ProcessManagerConfiguration
+
+# This is the endpoint through which process manager receive state from the Orchestrator.
ducc.pm.request.endpoint=ducc.pm
-# endpoint type choices[queue]
+
+# This is the JMS endpoint type used for state messages sent by the Orchestrator.
ducc.pm.request.endpoint.type=queue
-#------------------------------------------------------------------------------
+
+# This is the endpoint through which process manager sends its heartbeat. The main receiver
+# is the Web Server for it's daemon status page.
ducc.pm.state.update.endpoint=ducc.pm.state
-# endpoint type choices[topic]
+
+# This is the JMS endpoint type used for process manager heartbeats. The primary receiver
+# is the Web Server for its daemon status page.
ducc.pm.state.update.endpoint.type=topic
+
+# The interval in milliseconds between process manager heartbeat publications.
ducc.pm.state.publish.rate=15000
-# New Configuration classes supporting the DUCC 2.0 isolation from user code.
+# +==================================================================================================+
+# | Job Process |
+# +==================================================================================================+
+
+# This is the name of the pluggable java class that implements
+# the shell for Agent launched user processes.
ducc.uima-as.configuration.class=org.apache.uima.ducc.transport.configuration.jp.JobProcessConfiguration
ducc.job-process.configuration.class=org.apache.uima.ducc.transport.configuration.jp.JobProcessConfiguration
ducc.service.configuration.class=org.apache.uima.ducc.transport.configuration.service.ServiceConfiguration
+# This is the endpoint through which job processes (JPs) receive messages from the Agents.
ducc.uima-as.endpoint=ducc.job.managed.service
-# endpoint type choices[socket]
+
+# This is the JMS endpoint type used for messages sent to the JPs from the Agents.
ducc.uima-as.endpoint.type=socket
-# endpoint parameters which are transport specific. For socket
-# transport params are:
+
+# Endpoint parameters which are transport specific.
+# For socket transport params are:
# - transferExchange=true - include Camel Exchange wrapper in a message
# - synch=false - use socket transport for one-way messaging (no replies neeeded)
ducc.uima-as.endpoint.params=transferExchange=true&sync=false
@@ -541,7 +943,7 @@ ducc.uima-as.saxon.jar.path=file:${DUCC_
# context file used to deploy UIMA-AS based service.
ducc.uima-as.dd2spring.xsl.path=${DUCC_HOME}/apache-uima/bin/dd2spring.xsl
-# maximum amount of time to wait for a response from the JD. This value
+# Maximum amount of time to wait for a response from the JD. This value
# is used by the JP when sending requests to the JD.
ducc.process.request.timeout=30000
@@ -555,7 +957,7 @@ ducc.process.uima.as.container.class = o
# The container is instantiated with classes from a System classloader.
ducc.process.uima.container.class = org.apache.uima.ducc.user.jp.UimaProcessContainer
-# define the sleep time (millis) for JP to use when JD sends empty CAS. In this case the
+# Define the sleep time (millis) for JP to use when JD sends empty CAS. In this case the
# JD's CR has processed its collection. The JP threads need to slow down sending
# requests
ducc.process.thread.sleep.time=60000
@@ -563,11 +965,16 @@ ducc.process.thread.sleep.time=60000
# Custom Flow Controller to use for Ducc Job Processes that don't provide a process_DD descriptor
ducc.flow-controller.specifier=org.apache.uima.ducc.FlowController
-
-# DATABASE PROPERTIES
+# +==================================================================================================+
+# | Database |
+# +==================================================================================================+
# Name of the database host - initially disabled until database is created.
# Overridden in site.ducc.properties by ducc_post_install or db_create.
+# This is the name of the host where the database is run. It usually defaults to the
+# same host as the ducc.head. Those knowledgable of the database can install the
+# database elsewhere. Use this parameter to specify that location.
+# To disable use of the database, set this parameter to the string --disabled--
ducc.database.host = --disabled--
# Database JMX host. Default is to allow only local JMX access. Specify the real name for remote access.
@@ -586,15 +993,22 @@ ducc.database.jmx.port = 7199
#
# IMPORTANT: if you set one of these you MUST set both, or cassandra will refuse to start.
#-----------------------------------
+
# Database xmx. If not set, cassandra will calculate it for you.
+# This is the value used to set {\em Xmx and Xms} when the database starts. The
+# Cassandra database makes an attempt to determine the best value of this. The
+# default is one-half of real memory, up to a maximum of 8G. It is recommended that
+# the default be used. However, small installations may reduce this to as little
+# as 512M. Note that both Xmx and Xms are set.
#ducc.database.mem.heap = 4G
-# Database setting for 'young' generation. If not set, cassandra will calculate it for you
+
+# Database setting for 'young' generation. If not set, cassandra will calculate it for you.
#ducc.database.mem.new = 100M
+
#-----------------------------------
k# END OF DATABASE MEMORY TUNING
#-----------------------------------
-
# This class implementes the persistence interface for the services registry
#ducc.service.persistence.impl = org.apache.uima.ducc.database.StateServicesDb
ducc.service.persistence.impl = org.apache.uima.ducc.common.persistence.services.StateServices