---
title:  System Properties
---

<!--
Licensed to the Apache Software Foundation (ASF) under one or more
contributor license agreements.  See the NOTICE file distributed with
this work for additional information regarding copyright ownership.
The ASF licenses this file to You under the Apache License, Version 2.0
(the "License"); you may not use this file except in compliance with
the License.  You may obtain a copy of the License at

     http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
-->

A variety of system properties can be specified when a client connects to a distributed system, either programmatically or in a `geode.properties` file.
See `Apache::Geode::Client::SystemProperties` in the [.NET API docs](dotnetdocs).

The following settings can be configured:

-   **[General Properties](#general_props)**<br />Basic information for the process, such as cache creation parameters.
-   **[Logging Properties](#attributes-gfcpp__table_logging_props)**<br />How and where to log system messages.
-   **[Statistics Archiving Properties](#attributes-gfcpp__table_statistic_props)**<br />How to collect and archive statistics information.
-   **[Durable Client Properties](#attributes-gfcpp__table_durable_client_props)**<br />Information about the durable clients connected to the system.
-   **[System Properties for Client Authentication and Authorization](#attributes-gfcpp__table_security_props)**<br /> Information about various security parameters.
-   **[System Properties for High Availability](#attributes-gfcpp__table_high_availability_props)**<br />System properties to configure periodic acknowledgment (ack).

The following tables list attributes that can be specified programmatically or stored in the `geode.properties` file to be read by a client.

### <a id="general_props" class="no-quick-link"></a>General Properties

<table>
<thead>
<tr class="header">
<th>Attribute</th>
<th>Description</th>
<th>Default</th>
</tr>
</thead>
<tbody>
<tr class="even">
<td>cache-xml-file</td>
<td>Name and path of the file whose contents are used by default to configure a cache if one is
created. If not specified, the client starts with an empty cache, which is populated at run time.
</td>
<td>no default</td>
</tr>
<tr class="odd">
<td>heap-lru-delta</td>
<td>
The percentage of entries the system will evict each time it detects that it has exceeded the heap-lru-limit.
This property is used only if <code class="ph codeph">heap-lru-limit</code> is greater than 0.</td>
<td>10 %</td>
</tr>
<tr class="even">
<td>heap-lru-limit</td>
<td>Maximum amount of memory, in megabytes, used by the cache for all regions. If this limit is exceeded by <code class="ph codeph">heap-lru-delta</code> percent, LRU reduces the memory footprint as necessary. If not specified, or set to 0, memory usage is governed by each region's LRU entries limit, if any.</td>
<td>0</td>
</tr>
<tr class="odd">
<td>conflate-events</td>
<td>Client side conflation setting, which is sent to the server.</td>
<td>server</td>
</tr>
<tr class="even">
<td>connect-timeout</td>
<td>Amount of time (in seconds) to wait for a response after a socket connection attempt.</td>
<td>59</td>
</tr>
<tr class="odd">
<td>connection-pool-size</td>
<td>Number of connections per endpoint</td>
<td>5</td>
</tr>
<tr class="odd">
<td>enable-chunk-handler-thread</td>
<td>If the chunk-handler-thread is operative (enable-chunk-handler=true), it processes the response for each application thread. 
When the chunk handler is not operative (enable-chunk-handler=false), each application thread processes its own response.</td>
<td>false</td>
</tr>
<tr class="even">
<td>disable-shuffling-of-endpoints</td>
<td>If true, prevents server endpoints that are configured in pools from being shuffled before use.</td>
<td>false</td>
</tr>
<tr class="even">
<td>max-fe-threads</td>
<td>Thread pool size for parallel function execution. An example of this is the GetAll operations.</td>
<td>2 * number of logical processors</td>
</tr>
<tr class="odd">
<td>max-socket-buffer-size</td>
<td>Maximum size of the socket buffers, in bytes, that the client will try to set for client-server connections.</td>
<td>65 * 1024</td>
</tr>
<tr class="even">
<td>notify-ack-interval</td>
<td>Interval, in seconds, in which client sends acknowledgments for subscription notifications.</td>
<td>1</td>
</tr>
<tr class="odd">
<td>notify-dupcheck-life</td>
<td>Amount of time, in seconds, the client tracks subscription notifications before dropping the duplicates.</td>
<td>300</td>
</tr>
<tr class="even">
<td>ping-interval</td>
<td>Interval, in seconds, between communication attempts with the server to show the client is alive. Pings are only sent when the <code class="ph codeph">ping-interval</code> elapses between normal client messages. This must be set lower than the server's <code class="ph codeph">maximum-time-between-pings</code>.</td>
<td>10</td>
</tr>
<tr class="odd">
<td>redundancy-monitor-interval</td>
<td>Interval, in seconds, at which the subscription HA maintenance thread checks for the configured redundancy of subscription servers.</td>
<td>10</td>
</tr>
<tr class="odd">
<td>tombstone-timeout</td>
<td>Time in milliseconds used to timeout tombstone entries when region consistency checking is enabled.
</td>
<td>480000</td>
</tr>
</tbody>
</table>


### <a id="attributes-gfcpp__table_logging_props" class="no-quick-link"></a>Logging Properties

<table>
<thead>
<tr class="header">
<th>Attribute</th>
<th>Description</th>
<th>Default</th>
</tr>
</thead>
<tbody>
<tr class="odd">
<td>log-disk-space-limit</td>
<td>Maximum amount of disk space, in megabytes, allowed for all log files, current, and rolled. If set to 0, the space is unlimited.</td>
<td>0</td>
</tr>
<tr class="even">
<td>log-file</td>
<td>Name and full path of the file where a running client writes log messages. If not specified, logging goes to <code class="ph codeph">stdout</code>.</td>
<td>no default file</td>
</tr>
<tr class="odd">
<td>log-file-size-limit</td>
<td>Maximum size, in megabytes, of a single log file. Once this limit is exceeded, a new log file is created and the current log file becomes inactive. If set to 0, the file size is unlimited.</td>
<td>0</td>
</tr>
<tr class="even">
<td>log-level</td>
<td>Controls the types of messages that are written to the application's log. These are the levels, in descending order of severity and the types of message they provide:
<ul>
<li><strong>Error</strong> (highest severity) is a serious failure that will probably prevent program execution.</li>
<li><strong>Warning</strong> is a potential problem in the system.</li>
<li><strong>Info</strong> is an informational message of interest to the end user and system administrator.</li>
<li><strong>Config</strong> is a static configuration message, often used to debug problems with particular configurations.</li>
<li><strong>Fine, Finer, Finest, and Debug</strong> provide tracing information. Only use these with guidance from technical support.</li>
</ul>
<p>Enabling logging at any level enables logging for all higher levels.</p></td>
<td>config</td>
</tr>
</tbody>
</table>


### <a id="attributes-gfcpp__table_statistic_props" class="no-quick-link"></a>Statistics Archiving Properties

<table>
<thead>
<tr class="header">
<th>Attribute</th>
<th>Description</th>
<th>Default</th>
</tr>
</thead>
<tbody>
<tr class="odd">
<td>statistic-sampling-enabled</td>
<td>Controls whether the process creates a statistic archive file.</td>
<td>true</td>
</tr>
<tr class="even">
<td>statistic-archive-file</td>
<td>Name and full path of the file where a running system member writes archives statistics. If <code class="ph codeph">archive-disk-space-limit</code> is not set, the client appends the process ID to the configured file name, like <code class="ph codeph">statArchive-PID.gfs</code>. If the space limit is set, the process ID is not appended but each rolled file name is renamed to statArchive-ID.gfs, where ID is the rolled number of the file.</td>
<td>./statArchive.gfs</td>
</tr>
<tr class="odd">
<td>archive-disk-space-limit</td>
<td>Maximum amount of disk space, in gigabytes, allowed for all archive files, current, and rolled. If set to 0, the space is unlimited.</td>
<td>0</td>
</tr>
<tr class="even">
<td>archive-file-size-limit</td>
<td>Maximum size, in megabytes, of a single statistic archive file. Once this limit is exceeded, a new statistic archive file is created and the current archive file becomes inactive. If set to 0, the file size is unlimited.</td>
<td>0</td>
</tr>
<tr class="odd">
<td>statistic-sample-rate</td>
<td>Rate, in seconds, that statistics are sampled. Operating system statistics are updated only when a sample is taken. If statistic archival is enabled, then these samples are written to the archive.
<p>Lowering the sample rate for statistics reduces system resource use while still providing some statistics for system tuning and failure analysis.</p>
</td>
<td>1</td>
</tr>
<tr class="even">
<td>enable-time-statistics</td>
<td>Enables time-based statistics for the distributed system and caching. For performance reasons, time-based statistics are disabled by default. See <a href="../system-statistics/chapter-overview.html#concept_3BE5237AF2D34371883453E6A9474A79">System Statistics</a>. </td>
<td>false</td>
</tr>
</tbody>
</table>


### <a id="attributes-gfcpp__table_durable_client_props" class="no-quick-link"></a>Durable Client Properties

| Attribute | Description                                                                                                                                                                                                                                                                    | Default |
|----------------------------|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|---------|
| auto-ready-for-events      | Whether client subscriptions automatically receive events when declaratively configured via XML. If set to `false`, event startup is not automatic and you need to call the `Cache.ReadyForEvents()` method API after subscriptions for the server to start delivering events. | true    |
| durable-client-id          | Identifier to specify if you want the client to be durable.                                                                                                                                                                                                                    | empty   |
| durable-timeout            | Time, in seconds, a durable client's subscription is maintained when it is not connected to the server before being dropped.                                                                                                                                                   | 300     |


### <a id="attributes-gfcpp__table_security_props" class="no-quick-link"></a>Security Properties

The table describes the security-related system properties for native client authentication and authorization.

See [SSL Client/Server Communication](../security/sslclientserver.html).

<table>
<caption><span class="tablecap">System Properties for Client Authentication and Authorization</span></caption>
<thead>
<tr class="header">
<th>Attribute</th>
<th>Description</th>
<th>Default</th>
</tr>
</thead>
<tbody>
<tr class="even">
<td><code class="ph codeph">security-client-kspath</code></td>
<td>Path to a .PEM file, which contains the public certificates for all Geode cache servers to which the client can connect through specified endpoints.</td>
<td>null</td>
</tr>
<tr class="odd">
<td><code class="ph codeph">ssl-enabled</code></td>
<td>True if SSL connection support is enabled.</td>
<td>empty</td>
</tr>
<tr class="even">
<td><code class="ph codeph">ssl-keystore</code></td>
<td>Name of the .PEM keystore file, containing the client’s private key. Not set by default. Required if <code class="ph codeph">ssl-enabled</code> is true.</td>
<td></td>
</tr>
<tr class="odd">
<td><code class="ph codeph">ssl-keystore-password</code></td>
<td>Sets the password for the private key .PEM file for SSL.</td>
<td>null</td>
</tr>
<tr class="even">
<td><code class="ph codeph">ssl-truststore</code></td>
<td><p>Name of the .PEM truststore file, containing the servers’ public certificate. Not set by default. Required if <code class="ph codeph">ssl-enabled</code> is true.</p></td>
<td></td>
</tr>
</tbody>
</table>

## <a id="attributes-gfcpp__table_high_availability_props" class="no-quick-link"></a>High Availability Properties

<table>
<thead>
<tr class="header">
<th>Attribute</th>
<th>Description</th>
<th>Default</th>
</tr>
</thead>
<tbody>
<tr class="odd">
<td><code class="ph codeph">notify-ack-interval</code></td>
<td>Minimum period, in seconds, between two consecutive acknowledgment messages sent from the client to the server.</td>
<td>10</td>
</tr>
<tr class="even">
<td><code class="ph codeph">notify-dupcheck-life</code></td>
<td>Minimum time, in seconds, a client continues to track a notification source for duplicates when no new notifications arrive before expiring it.</td>
<td>300</td>
</tr>
</tbody>
</table>
