Concourse is configured through YAML files. The server reads its
configuration from concourse.yaml in the conf/ directory, and
the client drivers read connection settings from
concourse_client.yaml.
For local development, create a concourse.yaml.dev file in the
same directory. Settings in the .dev file override those in the
base concourse.yaml. The .dev file should be excluded from
version control.
Legacy Format
Concourse also supports the older .prefs format
(concourse.prefs). YAML files are preferred and take
precedence when both exist, with one exception:
concourse.prefs.dev takes precedence over
concourse.yaml to honor the convention that local
development overrides always win. Client configuration
(concourse_client.yaml vs concourse_client.prefs)
follows the same YAML-wins rule without the dev-overlay
exception.
The batch transporter processes large batches of data per pass and
indexes without blocking operations until merge time. This
provides higher overall throughput.
The streaming transporter processes smaller batches more
frequently. It provides consistent throughput but may cause
performance degradation under high concurrent load.
While Concourse Server builds a new data file, it holds the data
that it indexes for that file in memory until it writes the file.
Spilling moves that data to temporary files on disk when the Java
heap fills up, so building a large data file doesn’t run out of
memory. The data file is the same either way.
Setting
Default
Description
storage.spill.heap_usage_threshold
0
Share of the maximum heap, from 0 to 1, in use after a garbage collection that triggers a spill (0 = disabled outside of upgrades)
storage.spill.use_system_temp_dir
false
Put the temporary files in the system’s temporary directory instead of the database_directory
Every upgrade spills at a threshold of 0.8 or lower while it runs. A
storage.spill.heap_usage_threshold below 0.8 stays in effect; 0 or a value
above 0.8 becomes 0.8 for the upgrade. The temporary files go in a directory
named .spills. When Concourse Server starts, it deletes the files that were
left in the database_directory. It leaves the system’s temporary directory
alone, because other programs can share it.
When enabled, compaction automatically merges and reorganizes data
files in the background to improve read performance. This runs
continuously without disrupting reads or writes.
When enabled, Concourse uses multiple threads to read data from
disk concurrently. This is most beneficial for data that exceeds
the in-memory cache, especially search indexes.
The external bootstrapper allows plugins compiled against newer
Java versions to work with older servers (e.g., a Java 21 plugin
on a Java 8 server). See Plugins for details.
Client drivers read connection settings from
concourse_client.yaml (or concourse_client.prefs). This file
can be placed in the working directory or specified explicitly.
// Java// Connect using default config fileConcourseconcourse=Concourse.connect();// Connect using a specific config fileConcourseconcourse=Concourse.connect(Paths.get("/path/to/concourse_client.yaml"));// Or use a pre-loaded configuration handlerConcourseClientConfigurationconfig=ConcourseClientConfiguration.from(Paths.get("/path/to/concourse_client.yaml"));Concourseconcourse=Concourse.connect(config);