<!doctype html>
<html>
<head>
  <meta charset="utf-8">
  <!-- Always force latest IE rendering engine or request Chrome Frame -->
  <meta content="IE=edge,chrome=1" http-equiv="X-UA-Compatible">

  
  <link href='https://fonts.googleapis.com/css?family=Source+Sans+Pro:300,300italic,400italic,400,600' rel='stylesheet' type='text/css'>
  <!-- Use title if it's in the page YAML frontmatter -->
  <title>
      System Properties |
    Geode Native C++ Docs
  </title>
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <link href="/stylesheets/all.css" rel="stylesheet" media="screen, print" />
  <link href="/stylesheets/print.css" rel="stylesheet" media="print" />
  <link href='/images/favicon.ico' rel='shortcut icon'>

  <script src="/javascripts/all.js"></script>
  
</head>

<body class="docs docs_geode-native docs_geode-native_cpp docs_geode-native_cpp_113 docs_geode-native_cpp_113_configuring docs_geode-native_cpp_113_configuring_sysprops has-subnav">

<div class="viewport">
  <div class='wrap'>
    <script type="text/javascript">
      document.domain = "apache.org";
    </script>

    <!--
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.
-->
<header class="header header-layout">
  <h1 class="logo">
    <a href="/">
        <img src="/images/Apache_Geode_logo_symbol_white.png" style="width:30px;">
      Apache Geode Native C++ Documentation
    </a>
  </h1>
  <div class="header-links js-bar-links">
    <div class="btn-menu" data-behavior="MenuMobile"></div>
    <div class="header-item"><a href="http://geode.apache.org">Back to Product Page</a></div>
    <div class="header-item">
      <a href="http://geode.apache.org/community" target="_blank">Community</a>
    </div>
  </div>
</header>


    <div class="container">

      <!--googleoff: index-->
      <!--
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.
-->
<div id="sub-nav" class="js-sidenav nav-container" role="navigation">
<a class="sidenav-title" data-behavior="SubMenuMobile">Doc Index</a>
  <div class="nav-content">
  <ul>
    <li>
      <a href="/docs/geode-native/cpp/113/about-client-users-guide.html">Apache Geode Native Documentation</a>
    </li>
    <li class="has_submenu">
      <a href="/docs/geode-native/cpp/113/getting-started/getting-started-nc-client.html">Getting Started with the Native Library</a>
      <ul>
        <li>
          <a href="/docs/geode-native/cpp/113/getting-started/getting-started-nc-client.html#set_up_dev_environment">Set Up Your Development Environment</a>
        </li>
        <li>
          <a href="/docs/geode-native/cpp/113/getting-started/getting-started-nc-client.html#establish_cluster_access">Establish Access to a Geode Cluster</a>
        </li>
        <li>
          <a href="/docs/geode-native/cpp/113/getting-started/getting-started-nc-client.html#app_dev_walkthroughs">Application Development Walkthroughs</a>
        </li>
        <li>
          <a href="/docs/geode-native/cpp/113/getting-started/getting-started-nc-client.html#programming_examples">Programming Examples</a>
        </li>
        <li>
          <a href="/docs/geode-native/cpp/113/getting-started/put-get-example.html">Put/Get/Remove Examples</a>
        </li>
      </ul>
    </li>
    <li class="has_submenu">
      <a href="/docs/geode-native/cpp/113/configuring/configuration.html">Configuring a Client Application</a>
      <ul>
        <li>
          <a href="/docs/geode-native/cpp/113/configuring/system-level-configuration.html">System Level Configuration</a>
        </li>
      </ul>
    </li>

    <li>
      <a href="/docs/geode-native/cpp/113/configuring/config-client-cache.html">Configuring the Client Cache</a>
    </li>
    <li class="has_submenu">
      <a href="/docs/geode-native/cpp/113/regions/regions.html">Configuring Regions</a>
      <ul>
        <li>
        <a href="/docs/geode-native/cpp/113/regions/registering-interest-for-entries.html">Registering Interest for Entries</a>
        </li>
        <li>
        <a href="/docs/geode-native/cpp/113/regions/region-attributes.html">Region Attributes</a>
        </li>
      </ul>
    </li>

    <li class="has_submenu">
        <a href="/docs/geode-native/cpp/113/connection-pools/configuring-pools.html">Configuring Pools</a>
        <ul>
            <li>
                <a href="/docs/geode-native/cpp/113/connection-pools/client-pool-api.html">Native Client Pool API</a>
            </li>
            <li>
                <a href="/docs/geode-native/cpp/113/connection-pools/configuring-pools-attributes-example.html">Pool Configuration Example and Settings</a>
            </li>
            <li>
                <a href="/docs/geode-native/cpp/113/connection-pools/subscription-properties.html">Subscription Properties</a>
            </li>
        </ul>
    </li>

    <li>
      <a href="/docs/geode-native/cpp/113/serialization/data-serialization.html">Serializing Data</a>
    </li>

    <li>
      <a href="/docs/geode-native/cpp/113/remote-queries.html">Remote Queries</a>
    </li>

    <li>
      <a href="/docs/geode-native/cpp/113/continuous-queries.html">Continuous Queries</a>
    </li>

    <li class="has_submenu">
      <a href="/docs/geode-native/cpp/113/security/security.html">Security: Authentication and Encryption</a>
      <ul>
        <li>
        <a href="/docs/geode-native/cpp/113/security/authentication.html">Authentication</a>
        </li>
        <li>
        <a href="/docs/geode-native/cpp/113/security/sslclientserver.html">TLS/SSL Client-Server Communication Encryption</a>
        </li>
      </ul>
    </li>

    <li>
      <a href="/docs/geode-native/cpp/113/function-execution.html">Function Execution</a>
    </li>

    <li>
      <a href="/docs/geode-native/cpp/113/transactions.html">Transactions</a>
    </li>
    <li>
      <a href="/docs/geode-native/cpp/113/configuring/sysprops.html">System Properties</a>
    </li>
    <li>
      <a href="/docs/geode-native/cpp/113/client-cache-ref.html">Client Cache XML Reference</a>
    </li>
  </ul>
  </div>
</div>

      <!--googleon: index-->

      <main class="content content-layout" id="js-content" role="main">
        <a id="top"></a>
        <!--
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.
-->
<span style="font-weight:200;font-size:31px;" style="float:left;">
    <img src="/images/Apache_Geode_logo_symbol.png" style="height:26px;">
  Apache Geode Native C++
</span>
  <span class="local-header version-info" style="float:right;">
    <a href="https://cwiki.apache.org/confluence/display/GEODE/Release+Notes">CHANGELOG</a>
  </span>

        <!--
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.
-->
  <h1 class="title-container" >
    System Properties
  </h1>

          <div id="js-quick-links" >
            
          </div>
        <div class="to-top" id="js-to-top">
          <a href="#top" title="back to top"></a>
        </div>
        <!--
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.
-->

<p>A variety of system properties can be specified when a client connects to a distributed system, either programmatically or in a <code>geode.properties</code> file.
See <code>apache::geode::client::SystemProperties</code> in the <a href="cppdocs">C++ API docs</a>.</p>

<p>The following settings can be configured:</p>

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

<p>The following tables list attributes that can be specified programmatically or stored in the <code>geode.properties</code> file to be read by a client.</p>

<h3 id="general-properties"><a id="general_props" class="no-quick-link"></a>General Properties</h3>

<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&rsquo;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&rsquo;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>

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

<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&rsquo;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>

<h3 id="statistics-archiving-properties"><a id="attributes-gfcpp__table_statistic_props" class="no-quick-link"></a>Statistics Archiving Properties</h3>

<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>

<h3 id="durable-client-properties"><a id="attributes-gfcpp__table_durable_client_props" class="no-quick-link"></a>Durable Client Properties</h3>

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

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

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

<p>See <a href="/docs/geode-native/cpp/113/security/sslclientserver.html">SSL Client/Server Communication</a>.</p>

<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="odd">
<td><code class="ph codeph">security-client-auth-factory</code></td>
<td>Sets the key for the <code class="ph codeph">AuthInitialize</code> factory function.</td>
<td>empty</td>
</tr>
<tr class="even">
<td><code class="ph codeph">security-client-auth-library</code></td>
<td>Registers the path to the <code class="ph codeph">securityImpl.dll</code> library.</td>
<td>empty</td>
</tr>
<tr class="odd">
<td><code class="ph codeph">security-client-dhalgo</code></td>
<td>Diffie-Hellman based credentials encryption is not supported.</td>
<td>null</td>
</tr>
<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>

<h2 id="high-availability-properties"><a id="attributes-gfcpp__table_high_availability_props" class="no-quick-link"></a>High Availability Properties</h2>

<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>

        

      </main>
    </div>
  </div>
</div>

<div id="scrim"></div>

<div class="container">
  <footer class="site-footer-links">
    <!--
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.
-->
<div class="copyright">
  <a href='/'>Apache Geode Documentation</a>
  &copy; 2020 <a href='http://www.apache.org/'>The Apache Software Foundation</a>.
</div>
<div class="support">
  Need help? <a href="http://geode.apache.org/community" target="_blank">Visit the Community</a>
</div>

  </footer>
</div><!--end of container-->

</body>
</html>
