<!DOCTYPE html>
<html>
  <head>
    <title>Apache BookKeeper&trade; - BookKeeper configuration</title>

<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1">

<link rel="stylesheet" href="/css/normalize.css">
<link rel="stylesheet" href="/css/tippy.css">
<link rel="stylesheet" href="/css/style.css">

<link rel="shortcut icon" href="/img/favicon.ico">

<script src="/js/tippy.min.js"></script>

<script type="text/javascript">
  var shiftWindow = function() { scrollBy(0, -25); };
  window.addEventListener("hashchange", shiftWindow);
  window.addEventListener("pageshow", shiftWindow);
  function load() { if (window.location.hash) shiftWindow(); }
</script>
  </head>
  <body class="body">
    <main class="main">
      
<nav class="navbar bk-topnav">
  <div class="navbar-brand">
    <a class="navbar-item bk-brand" href="/">
      Apache BookKeeper&trade;
    </a>

    <div class="navbar-burger burger" data-target="bkNav">
      <span></span>
      <span></span>
      <span></span>
    </div>
  </div>

  <div id="bkNav" class="navbar-menu">
    <div class="navbar-start">
      <div class="navbar-item has-dropdown is-hoverable">
        <a class="navbar-link">Documentation</a>
        <div class="navbar-dropdown is-boxed">
          <a class="navbar-item" href="/docs/latest/overview/overview">
            Version 4.15.0-SNAPSHOT
            <span class="tag is-warning">Development</span>
          </a>
          <a class="navbar-item" href="/docs/latest/api/javadoc">
            <span class="icon bk-javadoc-icon">
              <img src="/img/java-icon.svg">
            </span>
            Javadoc
          </a>
          <hr class="dropdown-divider">
          
          <a class="navbar-item" href="/docs/4.14.0/overview/overview">
            Release 4.14.0
            
          </a>
          
          <a class="navbar-item" href="/docs/4.13.0/overview/overview">
            Release 4.13.0
            
          </a>
          
          <a class="navbar-item" href="/docs/4.12.1/overview/overview">
            Release 4.12.1
            
          </a>
          
          <a class="navbar-item" href="/docs/4.12.0/overview/overview">
            Release 4.12.0
            
          </a>
          
          <a class="navbar-item" href="/docs/4.11.1/overview/overview">
            Release 4.11.1
            
              <span class="tag is-success">Stable</span>
            
          </a>
          
          <a class="navbar-item" href="/docs/4.11.0/overview/overview">
            Release 4.11.0
            
          </a>
          
          <a class="navbar-item" href="/docs/4.10.0/overview/overview">
            Release 4.10.0
            
          </a>
          
          
          <a class="navbar-item" href="/archives/docs/r4.9.2">
            Release 4.9.2
            
              <span class="tag is-warning">EOL</span>
            
          </a>
          
          <a class="navbar-item" href="/archives/docs/r4.9.1">
            Release 4.9.1
            
              <span class="tag is-warning">EOL</span>
            
          </a>
          
          <a class="navbar-item" href="/archives/docs/r4.9.0">
            Release 4.9.0
            
              <span class="tag is-warning">EOL</span>
            
          </a>
          
          <a class="navbar-item" href="/archives/docs/r4.8.2">
            Release 4.8.2
            
              <span class="tag is-warning">EOL</span>
            
          </a>
          
          <a class="navbar-item" href="/archives/docs/r4.8.1">
            Release 4.8.1
            
              <span class="tag is-warning">EOL</span>
            
          </a>
          
          <a class="navbar-item" href="/archives/docs/r4.8.0">
            Release 4.8.0
            
              <span class="tag is-warning">EOL</span>
            
          </a>
          
          <a class="navbar-item" href="/archives/docs/r4.7.3">
            Release 4.7.3
            
              <span class="tag is-warning">EOL</span>
            
          </a>
          
          <a class="navbar-item" href="/archives/docs/r4.7.2">
            Release 4.7.2
            
              <span class="tag is-warning">EOL</span>
            
          </a>
          
          <a class="navbar-item" href="/archives/docs/r4.7.1">
            Release 4.7.1
            
              <span class="tag is-warning">EOL</span>
            
          </a>
          
          <a class="navbar-item" href="/archives/docs/r4.7.0">
            Release 4.7.0
            
              <span class="tag is-warning">EOL</span>
            
          </a>
          
          <a class="navbar-item" href="/archives/docs/r4.6.2">
            Release 4.6.2
            
              <span class="tag is-warning">EOL</span>
            
          </a>
          
          <a class="navbar-item" href="/archives/docs/r4.6.1">
            Release 4.6.1
            
              <span class="tag is-warning">EOL</span>
            
          </a>
          
          <a class="navbar-item" href="/archives/docs/r4.6.0">
            Release 4.6.0
            
              <span class="tag is-warning">EOL</span>
            
          </a>
          
          <a class="navbar-item" href="/archives/docs/r4.5.1">
            Release 4.5.1
            
              <span class="tag is-warning">EOL</span>
            
          </a>
          
          <a class="navbar-item" href="/archives/docs/r4.5.0">
            Release 4.5.0
            
              <span class="tag is-warning">EOL</span>
            
          </a>
          
          <a class="navbar-item" href="/archives/docs/r4.4.0">
            Release 4.4.0
            
              <span class="tag is-warning">EOL</span>
            
          </a>
          
          <a class="navbar-item" href="/archives/docs/r4.3.2">
            Release 4.3.2
            
              <span class="tag is-warning">EOL</span>
            
          </a>
          
          <a class="navbar-item" href="/archives/docs/r4.3.1">
            Release 4.3.1
            
              <span class="tag is-warning">EOL</span>
            
          </a>
          
          <a class="navbar-item" href="/archives/docs/r4.3.0">
            Release 4.3.0
            
              <span class="tag is-warning">EOL</span>
            
          </a>
          
          <a class="navbar-item" href="/archives/docs/r4.2.4">
            Release 4.2.4
            
              <span class="tag is-warning">EOL</span>
            
          </a>
          
          <a class="navbar-item" href="/archives/docs/r4.2.3">
            Release 4.2.3
            
              <span class="tag is-warning">EOL</span>
            
          </a>
          
          <a class="navbar-item" href="/archives/docs/r4.2.2">
            Release 4.2.2
            
              <span class="tag is-warning">EOL</span>
            
          </a>
          
          <a class="navbar-item" href="/archives/docs/r4.2.1">
            Release 4.2.1
            
              <span class="tag is-warning">EOL</span>
            
          </a>
          
          <a class="navbar-item" href="/archives/docs/r4.2.0">
            Release 4.2.0
            
              <span class="tag is-warning">EOL</span>
            
          </a>
          
          <a class="navbar-item" href="/archives/docs/r4.1.0">
            Release 4.1.0
            
              <span class="tag is-warning">EOL</span>
            
          </a>
          
          <a class="navbar-item" href="/archives/docs/r4.0.0">
            Release 4.0.0
            
              <span class="tag is-warning">EOL</span>
            
          </a>
          
        </div>
      </div>

      <div class="navbar-item has-dropdown is-hoverable">
        <a class="navbar-link">Community</a>
        <div class="navbar-dropdown is-boxed">
          <a class="navbar-item" href="/community/mailing-lists">Mailing lists</a>
          <a class="navbar-item" href="/community/slack">Slack</a>
          <a class="navbar-item" href="https://github.com/apache/bookkeeper/issues">Github Issues</a>
          <a class="navbar-item" href="/community/releases">Release Management</a>
          <a class="navbar-item" href="/community/meeting">Community Meetings</a>
          <hr class="dropdown-divider">
          <a class="navbar-item" href="/community/contributing">Contribution Guide</a>
          <a class="navbar-item" href="/community/coding_guide">Coding Guide</a>
          <a class="navbar-item" href="/community/testing">Testing Guide</a>
          <a class="navbar-item" href="/community/issue-report">Issue Report Guide</a>
          <a class="navbar-item" href="/community/release_guide">Release Guide</a>
          <hr class="dropdown-divider">
          <a class="navbar-item" href="/community/presentations">Presentations</a>
          <a class="navbar-item" href="/community/bookkeeper_proposals">BookKeeper Proposals</a>
        </div>
      </div>

      <div class="navbar-item has-dropdown is-hoverable">
        <a class="navbar-link">Project</a>
        <div class="navbar-dropdown is-boxed">
          <a class="navbar-item" href="/project/who">Who are we?</a>
          <a class="navbar-item" href="/project/bylaws">Bylaws</a>
          <a class="navbar-item" href="http://www.apache.org/licenses/">License</a>
          <hr class="dropdown-divider">
          <a class="navbar-item" href="/project/privacy">Privacy policy</a>
          <a class="navbar-item" href="http://www.apache.org/foundation/sponsorship.html">Sponsorship</a>
          <a class="navbar-item" href="http://www.apache.org/foundation/thanks.html">Thanks</a>
        </div>
      </div>
    </div>

    <div class="navbar-end">
      <div class="navbar-item">
        <div class="field is-grouped">
          <p class="control">
            <a class="button bk-twitter" href="https://twitter.com/asfbookkeeper">
              <span class="icon">
                <i class="fa fa-twitter"></i>
              </span>
              <span>Twitter</span>
            </a>
          </p>
          <p class="control">
            <a class="button" href="https://github.com/apache/bookkeeper">
              <span class="icon">
                <i class="fa fa-github"></i>
              </span>
              <span>GitHub</span>
            </a>
          </p>
          <p class="control">
            <a class="button is-primary" href="/releases">
              <span class="icon">
                <i class="fa fa-download"></i>
              </span>
              <span>Download</span>
            </a>
          </p>
        </div>
      </div>
    </div>
  </div>
</nav>


      <div class="bk-docs-container">
  <div class="columns is-gapless">
    <div class="column is-2 is-hidden-mobile">
      <div class="container">
        
<aside class="sidebar">
  
  <a class="button is-info">
    Version: 4.8.1
  </a>
  <hr />
  
  <p>
    Getting started
  </p>
  <ul class="sidebar-items">
    
    
    <li>
      <a href="../../getting-started/installation">
      Installation
      </a>
    </li>
    
    
    <li>
      <a href="../../getting-started/run-locally">
      Run bookies locally
      </a>
    </li>
    
    
    <li>
      <a href="../../getting-started/concepts">
      Concepts and architecture
      </a>
    </li>
    
  </ul>
  
  <p>
    Deployment
  </p>
  <ul class="sidebar-items">
    
    
    <li>
      <a href="../../deployment/manual">
      Manual deployment
      </a>
    </li>
    
    
    <li>
      <a href="../../deployment/dcos">
      BookKeeper on DC/OS
      </a>
    </li>
    
    
    <li>
      <a href="../../deployment/kubernetes">
      BookKeeper on Kubernetes
      </a>
    </li>
    
  </ul>
  
  <p>
    Administration
  </p>
  <ul class="sidebar-items">
    
    
    <li>
      <a href="../../admin/bookies">
      BookKeeper administration
      </a>
    </li>
    
    
    <li>
      <a href="../../admin/autorecovery">
      AutoRecovery
      </a>
    </li>
    
    
    <li>
      <a href="../../admin/metrics">
      Metric collection
      </a>
    </li>
    
    
    <li>
      <a href="../../admin/upgrade">
      Upgrade
      </a>
    </li>
    
    
    <li>
      <a href="../../admin/http">
      BookKeeper Admin REST API
      </a>
    </li>
    
    
    <li>
      <a href="../../admin/decomission">
      Decommissioning Bookies
      </a>
    </li>
    
  </ul>
  
  <p>
    API
  </p>
  <ul class="sidebar-items">
    
    
    <li>
      <a href="../../api/overview">
      Overview
      </a>
    </li>
    
    
    <li>
      <a href="../../api/ledger-api">
      Ledger API
      </a>
    </li>
    
    
    <li>
      <a href="../../api/ledger-adv-api">
      Advanced Ledger API
      </a>
    </li>
    
    
    <li>
      <a href="../../api/distributedlog-api">
      DistributedLog
      </a>
    </li>
    
    
    <li>
      <a href="../../api/javadoc">
      Java API Docs
      </a>
    </li>
    
  </ul>
  
  <p>
    Security
  </p>
  <ul class="sidebar-items">
    
    
    <li>
      <a href="../../security/overview">
      Overview
      </a>
    </li>
    
    
    <li>
      <a href="../../security/tls">
      TLS Authentication
      </a>
    </li>
    
    
    <li>
      <a href="../../security/sasl">
      SASL Authentication
      </a>
    </li>
    
    
    <li>
      <a href="../../security/zookeeper">
      ZooKeeper Authentication
      </a>
    </li>
    
  </ul>
  
  <p>
    Development
  </p>
  <ul class="sidebar-items">
    
    
    <li>
      <a href="../../development/protocol">
      BookKeeper protocol
      </a>
    </li>
    
  </ul>
  
  <p>
    Reference
  </p>
  <ul class="sidebar-items">
    
    
    <li>
      <a href="../../reference/config">
      Configuration
      </a>
    </li>
    
    
    <li>
      <a href="../../reference/cli">
      Command-line tools
      </a>
    </li>
    
    
    <li>
      <a href="../../reference/metrics">
      Metrics
      </a>
    </li>
    
  </ul>
  
</aside>


      </div>
    </div>

    <div class="column is-8 bk-docs-block">
      <header class="docs-title">
        <nav class="level bk-level">
          <div class="level-left">
            <div class="level-item">
              <h1 class="title">BookKeeper configuration</h1>
            </div>
          </div>
          
        </nav>

        <h2 class="subtitle">A reference guide to all of BookKeeper's configurable parameters</h2>
      </header>

      <hr />

      <div class="content">
        <section class="bk-main-content">
          <p>The table below lists parameters that you can set to configure <span class="pop" id="bookie-popover">bookies</span>. All configuration takes place in the <code class="highlighter-rouge">bk_server.conf</code> file in the <code class="highlighter-rouge">bookkeeper-server/conf</code> directory of your <a href="../../getting-started/installing">BookKeeper installation</a>.</p>

<h2 id="server-parameters">Server parameters</h2>

<table>
  <thead>
    <tr>
      <th>Parameter</th>
      <th>Description</th>
      <th>Default</th>
    </tr>
  </thead>
  <tbody>
    
    <tr id="bookiePort">
      <td><code>bookiePort</code></td>
      <td><p>The port that the bookie server listens on.</p>
</td>
      <td><code>3181</code></td>
    </tr>
    
    <tr id="allowMultipleDirsUnderSameDiskPartition">
      <td><code>allowMultipleDirsUnderSameDiskPartition</code></td>
      <td><p>Configure the bookie to allow/disallow multiple ledger/index/journal directories in the same filesystem disk partition</p>
</td>
      <td></td>
    </tr>
    
    <tr id="listeningInterface">
      <td><code>listeningInterface</code></td>
      <td><p>The network interface that the bookie should listen on. If not set, the bookie will listen on all interfaces.</p>
</td>
      <td><code>eth0</code></td>
    </tr>
    
    <tr id="advertisedAddress">
      <td><code>advertisedAddress</code></td>
      <td><p>Configure a specific hostname or IP address that the bookie should use to advertise itself to
clients. If not set, bookie will advertised its own IP address or hostname, depending on the
<code class="highlighter-rouge">listeningInterface</code> and <code class="highlighter-rouge">useHostNameAsBookieID</code> settings.</p>
</td>
      <td><code>eth0</code></td>
    </tr>
    
    <tr id="allowLoopback">
      <td><code>allowLoopback</code></td>
      <td><p>Whether the bookie is allowed to use a loopback interface as its primary
interface (the interface it uses to establish its identity). By default, loopback interfaces are <em>not</em> allowed as the primary interface.</p>

<p>Using a loopback interface as the primary interface usually indicates a configuration error. It’s fairly common in some VPS setups, for example, to not configure a hostname or to have the hostname resolve to 127.0.0.1. If this is the case, then all bookies in the cluster will establish their identities as 127.0.0.1:3181, and only one will be able to join the cluster. For VPSs configured like this, you should explicitly set the listening interface.</p>
</td>
      <td><code>false</code></td>
    </tr>
    
    <tr id="useHostNameAsBookieID">
      <td><code>useHostNameAsBookieID</code></td>
      <td><p>Whether the bookie should use its hostname to register with the ZooKeeper coordination service. When <code class="highlighter-rouge">false</code>, the bookie will use its IP address for the registration.</p>
</td>
      <td><code>false</code></td>
    </tr>
    
    <tr id="useShortHostName">
      <td><code>useShortHostName</code></td>
      <td><p>Whether the bookie should use short hostname or <a href="https://en.wikipedia.org/wiki/Fully_qualified_domain_name">FQDN</a> hostname for registration and ledger metadata when <code class="highlighter-rouge">useHostNameAsBookieID</code> is enabled.</p>
</td>
      <td><code>false</code></td>
    </tr>
    
    <tr id="allowEphemeralPorts">
      <td><code>allowEphemeralPorts</code></td>
      <td><p>Whether the bookie is allowed to use an ephemeral port (port 0) as its server port. By default, an ephemeral port is not allowed. Using an ephemeral port as the service port usually indicates a configuration error. However, in unit tests, using an ephemeral port will address port conflict problems and allow running tests in parallel.</p>
</td>
      <td><code>false</code></td>
    </tr>
    
    <tr id="enableLocalTransport">
      <td><code>enableLocalTransport</code></td>
      <td><p>Whether allow the bookie to listen for BookKeeper clients executed on the local JVM.</p>
</td>
      <td><code>false</code></td>
    </tr>
    
    <tr id="disableServerSocketBind">
      <td><code>disableServerSocketBind</code></td>
      <td><p>Whether allow the bookie to disable bind on network interfaces, this bookie will be available only to BookKeeper clients executed on the local JVM.</p>
</td>
      <td><code>false</code></td>
    </tr>
    
    <tr id="bookieDeathWatchInterval">
      <td><code>bookieDeathWatchInterval</code></td>
      <td><p>Interval to watch whether bookie is dead or not, in milliseconds.</p>
</td>
      <td><code>1000</code></td>
    </tr>
    
    <tr id="extraServerComponents">
      <td><code>extraServerComponents</code></td>
      <td><p>Configure a list of extra server components to enable and load on a bookie server. This provides a plugin mechanism to run extra server components along with a bookie server.</p>
</td>
      <td><code></code></td>
    </tr>
    
    <tr id="ignoreExtraServerComponentsStartupFailures">
      <td><code>ignoreExtraServerComponentsStartupFailures</code></td>
      <td><p>Whether the bookie should ignore startup failures on loading server components specified by <code class="highlighter-rouge">extraServerComponents</code>.</p>
</td>
      <td><code>false</code></td>
    </tr>
     <!-- for param in group.params -->
  </tbody>
</table>

<h2 id="worker-thread-settings">Worker thread settings</h2>

<table>
  <thead>
    <tr>
      <th>Parameter</th>
      <th>Description</th>
      <th>Default</th>
    </tr>
  </thead>
  <tbody>
    
    <tr id="numAddWorkerThreads">
      <td><code>numAddWorkerThreads</code></td>
      <td><p>The number of threads that handle write requests. if zero, writes are handled by <a href="//netty.io/wiki/thread-model.html">Netty threads</a> directly.</p>
</td>
      <td><code>1</code></td>
    </tr>
    
    <tr id="numReadWorkerThreads">
      <td><code>numReadWorkerThreads</code></td>
      <td><p>The number of threads that handle read requests. If zero, reads are handled by <a href="//netty.io/wiki/thread-model.html">Netty threads</a> directly.</p>
</td>
      <td><code>8</code></td>
    </tr>
    
    <tr id="numLongPollWorkerThreads">
      <td><code>numLongPollWorkerThreads</code></td>
      <td><p>The number of threads that handle long poll requests. If zero, long poll requests are handled by <a href="//netty.io/wiki/thread-model.html">Netty threads</a> directly.</p>
</td>
      <td><code>0</code></td>
    </tr>
    
    <tr id="numJournalCallbackThreads">
      <td><code>numJournalCallbackThreads</code></td>
      <td><p>The number of threads that handle journal callbacks. If zero, journal callbacks are executed directly on force write threads.</p>
</td>
      <td><code>1</code></td>
    </tr>
    
    <tr id="numHighPriorityWorkerThreads">
      <td><code>numHighPriorityWorkerThreads</code></td>
      <td><p>The number of threads that should be used for high priority requests (i.e. recovery reads and adds, and fencing). If zero, reads are handled by <a href="//netty.io/wiki/thread-model.html">Netty threads</a> directly.</p>
</td>
      <td><code>8</code></td>
    </tr>
    
    <tr id="maxPendingAddRequestsPerThread">
      <td><code>maxPendingAddRequestsPerThread</code></td>
      <td><p>If read worker threads are enabled, limit the number of pending requests, to avoid the executor queue to grow indefinitely. If zero or negative, the number of pending requests is unlimited.</p>
</td>
      <td><code>10000</code></td>
    </tr>
    
    <tr id="maxPendingReadRequestsPerThread">
      <td><code>maxPendingReadRequestsPerThread</code></td>
      <td><p>If add worker threads are enabled, limit the number of pending requests, to avoid the executor queue to grow indefinitely. If zero or negative, the number of pending requests is unlimited.</p>
</td>
      <td><code>10000</code></td>
    </tr>
    
    <tr id="enableBusyWait">
      <td><code>enableBusyWait</code></td>
      <td><p>Option to enable busy-wait settings. Default is false.
WARNING: This option will enable spin-waiting on executors and IO threads in order to reduce latency during
context switches. The spinning will consume 100% CPU even when bookie is not doing any work. It is recommended to
reduce the number of threads in the main workers pool and Netty event loop to only have few CPU cores busy.</p>
</td>
      <td></td>
    </tr>
     <!-- for param in group.params -->
  </tbody>
</table>

<h2 id="long-poll-settings">Long poll settings</h2>

<table>
  <thead>
    <tr>
      <th>Parameter</th>
      <th>Description</th>
      <th>Default</th>
    </tr>
  </thead>
  <tbody>
    
    <tr id="requestTimerTickDurationMs">
      <td><code>requestTimerTickDurationMs</code></td>
      <td><p>The tick duration for long poll request timer, in milliseconds. See <a href="//netty.io/4.1/api/io/netty/util/HashedWheelTimer.html">HashedWheelTimer</a> for more details.</p>
</td>
      <td><code>10</code></td>
    </tr>
    
    <tr id="requestTimerNumTicks">
      <td><code>requestTimerNumTicks</code></td>
      <td><p>The number of ticks per wheel for long poll request timer. See <a href="//netty.io/4.1/api/io/netty/util/HashedWheelTimer.html">HashedWheelTimer</a> for more details.</p>
</td>
      <td><code>1024</code></td>
    </tr>
     <!-- for param in group.params -->
  </tbody>
</table>

<h2 id="read-only-mode-support">Read-only mode support</h2>

<table>
  <thead>
    <tr>
      <th>Parameter</th>
      <th>Description</th>
      <th>Default</th>
    </tr>
  </thead>
  <tbody>
    
    <tr id="readOnlyModeEnabled">
      <td><code>readOnlyModeEnabled</code></td>
      <td><p>If all ledger directories configured are full, then support only read requests for clients. If “readOnlyModeEnabled=true” then on all ledger disks full, bookie will be converted to read-only mode and serve only read requests. Otherwise the bookie will be shutdown. By default this will be disabled.</p>
</td>
      <td><code>true</code></td>
    </tr>
    
    <tr id="forceReadOnlyBookie">
      <td><code>forceReadOnlyBookie</code></td>
      <td><p>Whether the bookie is force started in read only mode or not.</p>
</td>
      <td><code>false</code></td>
    </tr>
    
    <tr id="persistBookieStatusEnabled">
      <td><code>persistBookieStatusEnabled</code></td>
      <td><p>Persist the bookie status locally on the disks. So the bookies can keep their status upon restarts.</p>
</td>
      <td><code>false</code></td>
    </tr>
     <!-- for param in group.params -->
  </tbody>
</table>

<h2 id="netty-server-settings">Netty server settings</h2>

<table>
  <thead>
    <tr>
      <th>Parameter</th>
      <th>Description</th>
      <th>Default</th>
    </tr>
  </thead>
  <tbody>
    
    <tr id="serverTcpNoDelay">
      <td><code>serverTcpNoDelay</code></td>
      <td><p>This settings is used to enabled/disabled Nagle’s algorithm, which is a means of improving the efficiency of TCP/IP networks by reducing the number of packets that need to be sent over the network.</p>

<p>If you are sending many small messages, such that more than one can fit in a single IP packet, setting server.tcpnodelay to false to enable Nagle algorithm can provide better performance.</p>
</td>
      <td><code>true</code></td>
    </tr>
    
    <tr id="serverSockKeepalive">
      <td><code>serverSockKeepalive</code></td>
      <td><p>This setting is used to send keep-alive messages on connection-oriented sockets.</p>
</td>
      <td><code>true</code></td>
    </tr>
    
    <tr id="serverTcpLinger">
      <td><code>serverTcpLinger</code></td>
      <td><p>The socket linger timeout on close. When enabled, a close or shutdown will not return until all queued messages for the socket have been successfully sent or the linger timeout has been reached. Otherwise, the call returns immediately and the closing is done in the background.</p>
</td>
      <td><code>0</code></td>
    </tr>
    
    <tr id="byteBufAllocatorSizeInitial">
      <td><code>byteBufAllocatorSizeInitial</code></td>
      <td><p>The Recv ByteBuf allocator initial buf size.</p>
</td>
      <td><code>65536</code></td>
    </tr>
    
    <tr id="byteBufAllocatorSizeMin">
      <td><code>byteBufAllocatorSizeMin</code></td>
      <td><p>The Recv ByteBuf allocator min buf size.</p>
</td>
      <td><code>65536</code></td>
    </tr>
    
    <tr id="byteBufAllocatorSizeMax">
      <td><code>byteBufAllocatorSizeMax</code></td>
      <td><p>The Recv ByteBuf allocator max buf size.</p>
</td>
      <td><code>1048576</code></td>
    </tr>
    
    <tr id="nettyMaxFrameSizeBytes">
      <td><code>nettyMaxFrameSizeBytes</code></td>
      <td><p>The maximum netty frame size in bytes. Any message received larger than this will be rejected, so when the client-side attempt to send more than the default size bytes, it should set up the corresponding parameter <code class="highlighter-rouge">setNettyMaxFrameSizeBytes(int maxSize)</code>, pay attention to the parameter should be less than the value of server-side.</p>
</td>
      <td><code>5242880</code></td>
    </tr>
     <!-- for param in group.params -->
  </tbody>
</table>

<h2 id="http-server-settings">Http server settings</h2>

<table>
  <thead>
    <tr>
      <th>Parameter</th>
      <th>Description</th>
      <th>Default</th>
    </tr>
  </thead>
  <tbody>
    
    <tr id="httpServerEnabled">
      <td><code>httpServerEnabled</code></td>
      <td><p>The flag enables/disables starting the admin http server.</p>
</td>
      <td><code>false</code></td>
    </tr>
    
    <tr id="httpServerPort">
      <td><code>httpServerPort</code></td>
      <td><p>The http server port to listen on if <code class="highlighter-rouge">httpServerEnabled</code> is set to true.</p>
</td>
      <td><code>8080</code></td>
    </tr>
     <!-- for param in group.params -->
  </tbody>
</table>

<h2 id="security-settings">Security settings</h2>

<table>
  <thead>
    <tr>
      <th>Parameter</th>
      <th>Description</th>
      <th>Default</th>
    </tr>
  </thead>
  <tbody>
    
    <tr id="bookieAuthProviderFactoryClass">
      <td><code>bookieAuthProviderFactoryClass</code></td>
      <td><p>The bookie authentication provider factory class name. If this is null, no authentication will take place.</p>
</td>
      <td></td>
    </tr>
    
    <tr id="permittedStartupUsers">
      <td><code>permittedStartupUsers</code></td>
      <td><p>The list of users are permitted to run the bookie process. Any users can run the bookie process if it is not set.</p>

<p>Example settings - “permittedStartupUsers=user1,user2,user3”</p>
</td>
      <td></td>
    </tr>
     <!-- for param in group.params -->
  </tbody>
</table>

<h2 id="tls-settings">TLS settings</h2>

<table>
  <thead>
    <tr>
      <th>Parameter</th>
      <th>Description</th>
      <th>Default</th>
    </tr>
  </thead>
  <tbody>
    
    <tr id="tslProvider">
      <td><code>tslProvider</code></td>
      <td><p>TLS Provider (JDK or OpenSSL)</p>
</td>
      <td><code>OpenSSL</code></td>
    </tr>
    
    <tr id="tlsProviderFactoryClass">
      <td><code>tlsProviderFactoryClass</code></td>
      <td><p>The path to the class that provides security.</p>
</td>
      <td><code>org.apache.bookkeeper.tls.TLSContextFactory</code></td>
    </tr>
    
    <tr id="tlsClientAuthentication">
      <td><code>tlsClientAuthentication</code></td>
      <td><p>Type of security used by server.</p>
</td>
      <td><code>true</code></td>
    </tr>
    
    <tr id="tlsKeyStoreType">
      <td><code>tlsKeyStoreType</code></td>
      <td><p>Bookie Keystore type.</p>
</td>
      <td><code>JKS</code></td>
    </tr>
    
    <tr id="tlsKeyStore">
      <td><code>tlsKeyStore</code></td>
      <td><p>Bookie Keystore location (path).</p>
</td>
      <td></td>
    </tr>
    
    <tr id="tlsKeyStore">
      <td><code>tlsKeyStore</code></td>
      <td><p>Bookie Keystore location (path).</p>
</td>
      <td></td>
    </tr>
    
    <tr id="tlsKeyStorePasswordPath">
      <td><code>tlsKeyStorePasswordPath</code></td>
      <td><p>Bookie Keystore password path, if the keystore is protected by a password.</p>
</td>
      <td></td>
    </tr>
    
    <tr id="tlsTrustStoreType">
      <td><code>tlsTrustStoreType</code></td>
      <td><p>Bookie Truststore type.</p>
</td>
      <td></td>
    </tr>
    
    <tr id="tlsTrustStore">
      <td><code>tlsTrustStore</code></td>
      <td><p>Bookie Truststore location (path).</p>
</td>
      <td></td>
    </tr>
    
    <tr id="tlsTrustStorePasswordPath">
      <td><code>tlsTrustStorePasswordPath</code></td>
      <td><p>Bookie Truststore password path, if the truststore is protected by a password.</p>
</td>
      <td></td>
    </tr>
     <!-- for param in group.params -->
  </tbody>
</table>

<h2 id="journal-settings">Journal settings</h2>

<table>
  <thead>
    <tr>
      <th>Parameter</th>
      <th>Description</th>
      <th>Default</th>
    </tr>
  </thead>
  <tbody>
    
    <tr id="journalDirectories">
      <td><code>journalDirectories</code></td>
      <td><p>The directories to which Bookkeeper outputs its write-ahead log (WAL).  Could define multi directories to store write head logs, separated by ‘,’.
For example:
  journalDirectories=/tmp/bk-journal1,/tmp/bk-journal2
If journalDirectories is set, bookies will skip journalDirectory and use this setting directory.</p>
</td>
      <td><code>/tmp/bk-journal</code></td>
    </tr>
    
    <tr id="journalDirectory">
      <td><code>journalDirectory</code></td>
      <td><p>@Deprecated since 4.5.0, in favor of using <code class="highlighter-rouge">journalDirectories</code>.</p>

<p>The directory to which Bookkeeper outputs its write-ahead log (WAL).</p>
</td>
      <td><code>/tmp/bk-txn</code></td>
    </tr>
    
    <tr id="journalFormatVersionToWrite">
      <td><code>journalFormatVersionToWrite</code></td>
      <td><p>The journal format version to write.
Available formats are 1-5:
 1: no header
 2: a header section was added
 3: ledger key was introduced
 4: fencing key was introduced
 5: expanding header to 512 and padding writes to align sector size configured by <code class="highlighter-rouge">journalAlignmentSize</code>
 6: persisting explicitLac is introduced</p>

<p>By default, it is <code class="highlighter-rouge">6</code>.
If you’d like to disable persisting ExplicitLac, you can set this config to &lt; <code class="highlighter-rouge">6</code> and also fileInfoFormatVersionToWrite should be set to 0. If there is mismatch then the serverconfig is considered invalid.
You can disable <code class="highlighter-rouge">padding-writes</code> by setting journal version back to <code class="highlighter-rouge">4</code>. This feature is available in 4.5.0 and onward versions.</p>
</td>
      <td><code>6</code></td>
    </tr>
    
    <tr id="journalMaxSizeMB">
      <td><code>journalMaxSizeMB</code></td>
      <td><p>Max file size of journal file, in mega bytes. A new journal file will be created when the old one reaches the file size limitation.</p>
</td>
      <td><code>2048</code></td>
    </tr>
    
    <tr id="journalMaxBackups">
      <td><code>journalMaxBackups</code></td>
      <td><p>Max number of old journal file to kept. Keep a number of old journal files would help data recovery in specia case.</p>
</td>
      <td><code>5</code></td>
    </tr>
    
    <tr id="journalPreAllocSizeMB">
      <td><code>journalPreAllocSizeMB</code></td>
      <td><p>How much space should we pre-allocate at a time in the journal.</p>
</td>
      <td><code>16</code></td>
    </tr>
    
    <tr id="journalWriteBufferSizeKB">
      <td><code>journalWriteBufferSizeKB</code></td>
      <td><p>Size of the write buffers used for the journal.</p>
</td>
      <td><code>64</code></td>
    </tr>
    
    <tr id="journalRemoveFromPageCache">
      <td><code>journalRemoveFromPageCache</code></td>
      <td><p>Should we remove pages from page cache after force write</p>
</td>
      <td><code>true</code></td>
    </tr>
    
    <tr id="journalSyncData">
      <td><code>journalSyncData</code></td>
      <td><p>Should the data be fsynced on journal before acknowledgment.
By default, data sync is enabled to guarantee durability of writes. Beware - when disabling data sync in the bookie journal
might improve the bookie write performance, it will also introduce the possibility of data loss. With no fsync, the journal
entries are written in the OS page cache but not flushed to disk. In case of power failure, the affected bookie might lose
the unflushed data. If the ledger is replicated to multiple bookies, the chances of data loss are reduced though still present.</p>
</td>
      <td><code>true</code></td>
    </tr>
    
    <tr id="journalAdaptiveGroupWrites">
      <td><code>journalAdaptiveGroupWrites</code></td>
      <td><p>Should we group journal force writes, which optimize group commit for higher throughput.</p>
</td>
      <td><code>true</code></td>
    </tr>
    
    <tr id="journalMaxGroupWaitMSec">
      <td><code>journalMaxGroupWaitMSec</code></td>
      <td><p>Maximum latency to impose on a journal write to achieve grouping.</p>
</td>
      <td><code>2</code></td>
    </tr>
    
    <tr id="journalBufferedWritesThreshold">
      <td><code>journalBufferedWritesThreshold</code></td>
      <td><p>Maximum writes to buffer to achieve grouping.</p>
</td>
      <td><code>524288</code></td>
    </tr>
    
    <tr id="journalFlushWhenQueueEmpty">
      <td><code>journalFlushWhenQueueEmpty</code></td>
      <td><p>If we should flush the journal when journal queue is empty.</p>
</td>
      <td><code>false</code></td>
    </tr>
    
    <tr id="journalAlignmentSize">
      <td><code>journalAlignmentSize</code></td>
      <td><p>All the journal writes and commits should be aligned to given size. If not, zeros will be padded to align to given size.</p>
</td>
      <td><code>512</code></td>
    </tr>
    
    <tr id="journalBufferedEntriesThreshold">
      <td><code>journalBufferedEntriesThreshold</code></td>
      <td><p>Maximum entries to buffer to impose on a journal write to achieve grouping.</p>
</td>
      <td><code>0</code></td>
    </tr>
    
    <tr id="journalFlushWhenQueueEmpty">
      <td><code>journalFlushWhenQueueEmpty</code></td>
      <td><p>If we should flush the journal when journal queue is empty.</p>
</td>
      <td><code>false</code></td>
    </tr>
    
    <tr id="journalQueueSize">
      <td><code>journalQueueSize</code></td>
      <td><p>Set the size of the journal queue.</p>
</td>
      <td><code>10000</code></td>
    </tr>
     <!-- for param in group.params -->
  </tbody>
</table>

<h2 id="ledger-storage-settings">Ledger storage settings</h2>

<table>
  <thead>
    <tr>
      <th>Parameter</th>
      <th>Description</th>
      <th>Default</th>
    </tr>
  </thead>
  <tbody>
    
    <tr id="ledgerStorageClass">
      <td><code>ledgerStorageClass</code></td>
      <td><p>Ledger storage implementation class</p>

<p>Options:</p>
<ul>
  <li>org.apache.bookkeeper.bookie.InterleavedLedgerStorage</li>
  <li>org.apache.bookkeeper.bookie.SortedLedgerStorage</li>
  <li>org.apache.bookkeeper.bookie.storage.ldb.DbLedgerStorage</li>
</ul>
</td>
      <td><code>org.apache.bookkeeper.bookie.SortedLedgerStorage</code></td>
    </tr>
    
    <tr id="sortedLedgerStorageEnabled">
      <td><code>sortedLedgerStorageEnabled</code></td>
      <td><p>@Deprecated in favor of using <code class="highlighter-rouge">ledgerStorageClass</code></p>

<p>Whether sorted-ledger storage enabled (default true)</p>
</td>
      <td><code>true</code></td>
    </tr>
    
    <tr id="ledgerDirectories">
      <td><code>ledgerDirectories</code></td>
      <td><p>The directory to which Bookkeeper outputs ledger snapshots. You can define multiple directories to store snapshots separated by a comma, for example <code class="highlighter-rouge">/tmp/data-dir1,/tmp/data-dir2</code>.</p>
</td>
      <td><code>/tmp/bk-data</code></td>
    </tr>
    
    <tr id="indexDirectories">
      <td><code>indexDirectories</code></td>
      <td><p>The directories in which index files are stored. If not specified, the value of <a href="#ledgerDirectories"><code class="highlighter-rouge">ledgerDirectories</code></a> will be used.</p>
</td>
      <td><code>/tmp/bk-data</code></td>
    </tr>
    
    <tr id="minUsableSizeForIndexFileCreation">
      <td><code>minUsableSizeForIndexFileCreation</code></td>
      <td><p>Minimum safe usable size to be available in index directory for bookie to create index file while replaying journal at the time of bookie start in readonly mode (in bytes)</p>
</td>
      <td><code>1073741824</code></td>
    </tr>
    
    <tr id="minUsableSizeForEntryLogCreation">
      <td><code>minUsableSizeForEntryLogCreation</code></td>
      <td><p>Minimum safe usable size to be available in ledger directory for bookie to create entry log files (in bytes).
This parameter allows creating entry log files when there are enough disk spaces, even when
the bookie is running at readonly mode because of the disk usage is exceeding <code class="highlighter-rouge">diskUsageThreshold</code>.
Because compaction, journal replays can still write data to disks when a bookie is readonly.</p>
</td>
      <td><code>1.2 * `logSizeLimit`</code></td>
    </tr>
    
    <tr id="minUsableSizeForHighPriorityWrites">
      <td><code>minUsableSizeForHighPriorityWrites</code></td>
      <td><p>Minimum safe usable size to be available in ledger directory for bookie to accept high priority writes even it is in readonly mode.</p>
</td>
      <td><code>1.2 * `logSizeLimit`</code></td>
    </tr>
    
    <tr id="flushInterval">
      <td><code>flushInterval</code></td>
      <td><p>When entryLogPerLedgerEnabled is enabled, checkpoint doesn’t happens when a new active entrylog is created / previous one is rolled over. Instead SyncThread checkpoints periodically with ‘flushInterval’ delay (in milliseconds) in between executions. Checkpoint flushes both ledger entryLogs and ledger index pages to disk.  Flushing entrylog and index files will introduce much random disk I/O. If separating journal dir and ledger dirs each on different devices, flushing would not affect performance. But if putting journal dir and ledger dirs on same device, performance degrade significantly on too frequent flushing. You can consider increment flush interval to get better performance, but you need to pay more time on bookie server restart after failure. This config is used only when entryLogPerLedgerEnabled is enabled.</p>
</td>
      <td><code>10000</code></td>
    </tr>
    
    <tr id="allowStorageExpansion">
      <td><code>allowStorageExpansion</code></td>
      <td><p>Allow the expansion of bookie storage capacity. Newly added ledger and index directories must be empty.</p>
</td>
      <td><code>false</code></td>
    </tr>
     <!-- for param in group.params -->
  </tbody>
</table>

<h2 id="entry-log-settings">Entry log settings</h2>

<table>
  <thead>
    <tr>
      <th>Parameter</th>
      <th>Description</th>
      <th>Default</th>
    </tr>
  </thead>
  <tbody>
    
    <tr id="logSizeLimit">
      <td><code>logSizeLimit</code></td>
      <td><p>Max file size of entry logger, in bytes. A new entry log file will be created when the old one reaches the file size limitation.</p>
</td>
      <td><code>2147483648</code></td>
    </tr>
    
    <tr id="entryLogFilePreallocationEnabled">
      <td><code>entryLogFilePreallocationEnabled</code></td>
      <td><p>Enable/Disable entry logger preallocation</p>
</td>
      <td><code>true</code></td>
    </tr>
    
    <tr id="flushEntrylogBytes">
      <td><code>flushEntrylogBytes</code></td>
      <td><p>Entry log flush interval, in bytes. Setting this to 0 or less disables this feature and makes flush happen on log rotation. Flushing in smaller chunks but more frequently reduces spikes in disk I/O. Flushing too frequently may negatively affect performance.</p>
</td>
      <td><code>0</code></td>
    </tr>
    
    <tr id="readBufferSizeBytes">
      <td><code>readBufferSizeBytes</code></td>
      <td><p>The capacity allocated for <a href="/api/org/apache/bookkeeper/bookie/BufferedReadChannel"><code class="highlighter-rouge">BufferedReadChannel</code></a>s, in bytes.</p>
</td>
      <td><code>512</code></td>
    </tr>
    
    <tr id="writeBufferSizeBytes">
      <td><code>writeBufferSizeBytes</code></td>
      <td><p>The number of bytes used as capacity for the write buffer.</p>
</td>
      <td><code>65536</code></td>
    </tr>
    
    <tr id="entryLogPerLedgerEnabled">
      <td><code>entryLogPerLedgerEnabled</code></td>
      <td><p>Specifies if entryLog per ledger is enabled/disabled. If it is enabled, then there would be a active entrylog for each ledger. It would be ideal to enable this feature if the underlying storage device has multiple DiskPartitions or SSD and if in a given moment, entries of fewer number of active ledgers are written to the bookie.</p>
</td>
      <td></td>
    </tr>
    
    <tr id="entrylogMapAccessExpiryTimeInSeconds">
      <td><code>entrylogMapAccessExpiryTimeInSeconds</code></td>
      <td><p>config specifying if the entrylog per ledger is enabled, then the amount of time EntryLogManagerForEntryLogPerLedger should wait for closing the entrylog file after the last addEntry call for that ledger, if explicit writeclose for that ledger is not received.</p>
</td>
      <td><code>300</code></td>
    </tr>
    
    <tr id="maximumNumberOfActiveEntryLogs">
      <td><code>maximumNumberOfActiveEntryLogs</code></td>
      <td><p>in entryLogPerLedger feature, this specifies the maximum number of entrylogs that can be active at a given point in time. If there are more number of active entryLogs then the maximumNumberOfActiveEntryLogs then the entrylog will be evicted from the cache.</p>
</td>
      <td><code>500</code></td>
    </tr>
    
    <tr id="entryLogPerLedgerCounterLimitsMultFactor">
      <td><code>entryLogPerLedgerCounterLimitsMultFactor</code></td>
      <td><p>in EntryLogManagerForEntryLogPerLedger, this config value specifies the metrics cache size limits in multiples of entrylogMap cache size limits.</p>
</td>
      <td><code>10</code></td>
    </tr>
     <!-- for param in group.params -->
  </tbody>
</table>

<h2 id="entry-log-compaction-settings">Entry log compaction settings</h2>

<table>
  <thead>
    <tr>
      <th>Parameter</th>
      <th>Description</th>
      <th>Default</th>
    </tr>
  </thead>
  <tbody>
    
    <tr id="compactionRate">
      <td><code>compactionRate</code></td>
      <td><p>The rate at which compaction will read entries. The unit is adds per second.</p>
</td>
      <td><code>1000</code></td>
    </tr>
    
    <tr id="minorCompactionThreshold">
      <td><code>minorCompactionThreshold</code></td>
      <td><p>Threshold of minor compaction. For those entry log files whose remaining size percentage reaches below this threshold will be compacted in a minor compaction. If it is set to less than zero, the minor compaction is disabled.</p>
</td>
      <td><code>0.2</code></td>
    </tr>
    
    <tr id="minorCompactionInterval">
      <td><code>minorCompactionInterval</code></td>
      <td><p>Interval to run minor compaction, in seconds. If it is set to less than zero, the minor compaction is disabled.</p>
</td>
      <td><code>3600</code></td>
    </tr>
    
    <tr id="compactionMaxOutstandingRequests">
      <td><code>compactionMaxOutstandingRequests</code></td>
      <td><p>Set the maximum number of entries which can be compacted without flushing. When compacting, the entries are written to the entrylog and the new offsets are cached in memory. Once the entrylog is flushed the index is updated with the new offsets. This parameter controls the number of entries added to the entrylog before a flush is forced. A higher value for this parameter means  more memory will be used for offsets. Each offset consists of 3 longs. This parameter should <em>not</em> be modified unless you know what you’re doing.</p>
</td>
      <td><code>100000</code></td>
    </tr>
    
    <tr id="majorCompactionThreshold">
      <td><code>majorCompactionThreshold</code></td>
      <td><p>Threshold of major compaction. For those entry log files whose remaining size percentage reaches below  this threshold will be compacted in a major compaction.  Those entry log files whose remaining size percentage is still higher than the threshold will never be compacted. If it is set to less than zero, the minor compaction is disabled.</p>
</td>
      <td><code>0.8</code></td>
    </tr>
    
    <tr id="majorCompactionInterval">
      <td><code>majorCompactionInterval</code></td>
      <td><p>Interval to run major compaction, in seconds. If it is set to less than zero, the major compaction is disabled.</p>
</td>
      <td><code>86400</code></td>
    </tr>
    
    <tr id="isThrottleByBytes">
      <td><code>isThrottleByBytes</code></td>
      <td><p>Throttle compaction by bytes or by entries.</p>
</td>
      <td><code>false</code></td>
    </tr>
    
    <tr id="compactionRateByEntries">
      <td><code>compactionRateByEntries</code></td>
      <td><p>Set the rate at which compaction will read entries. The unit is adds per second.</p>
</td>
      <td><code>1000</code></td>
    </tr>
    
    <tr id="compactionRateByBytes">
      <td><code>compactionRateByBytes</code></td>
      <td><p>Set the rate at which compaction will read entries. The unit is bytes added per second.</p>
</td>
      <td><code>1000000</code></td>
    </tr>
    
    <tr id="useTransactionalCompaction">
      <td><code>useTransactionalCompaction</code></td>
      <td><p>Flag to enable/disable transactional compaction. If it is set to true, it will use transactional compaction, which uses
new entry log files to store entries after compaction; otherwise, it will use normal compaction, which shares same entry
log file with normal add operations.</p>
</td>
      <td><code>false</code></td>
    </tr>
     <!-- for param in group.params -->
  </tbody>
</table>

<h2 id="garbage-collection-settings">Garbage collection settings</h2>

<table>
  <thead>
    <tr>
      <th>Parameter</th>
      <th>Description</th>
      <th>Default</th>
    </tr>
  </thead>
  <tbody>
    
    <tr id="gcWaitTime">
      <td><code>gcWaitTime</code></td>
      <td><p>How long the interval to trigger next garbage collection, in milliseconds. Since garbage collection is running in background, too frequent gc will heart performance. It is better to give a higher number of gc interval if there is enough disk capacity.</p>
</td>
      <td><code>1000</code></td>
    </tr>
    
    <tr id="gcOverreplicatedLedgerWaitTime">
      <td><code>gcOverreplicatedLedgerWaitTime</code></td>
      <td><p>How long the interval to trigger next garbage collection of overreplicated ledgers, in milliseconds. This should not be run very frequently since we read the metadata for all the ledgers on the bookie from zk.</p>
</td>
      <td><code>86400000</code></td>
    </tr>
    
    <tr id="isForceGCAllowWhenNoSpace">
      <td><code>isForceGCAllowWhenNoSpace</code></td>
      <td><p>Whether force compaction is allowed when the disk is full or almost full. Forcing GC may get some space back, but may also fill up disk space more quickly. This is because new log files are created before GC, while old garbage log files are deleted after GC.</p>
</td>
      <td><code>false</code></td>
    </tr>
    
    <tr id="verifyMetadataOnGC">
      <td><code>verifyMetadataOnGC</code></td>
      <td><p>Whether the bookie should double check if a ledger exists in metadata service prior to gc.</p>
</td>
      <td><code>false</code></td>
    </tr>
     <!-- for param in group.params -->
  </tbody>
</table>

<h2 id="disk-utilization">Disk utilization</h2>

<table>
  <thead>
    <tr>
      <th>Parameter</th>
      <th>Description</th>
      <th>Default</th>
    </tr>
  </thead>
  <tbody>
    
    <tr id="diskUsageThreshold">
      <td><code>diskUsageThreshold</code></td>
      <td><p>For each ledger dir, maximum disk space which can be used. Default is 0.95f. i.e. 95% of disk can be used at most after which nothing will be written to that partition. If all ledger dir partions are full, then bookie will turn to readonly mode if ‘readOnlyModeEnabled=true’ is set, else it will shutdown. Valid values should be in between 0 and 1 (exclusive).</p>
</td>
      <td><code>0.95</code></td>
    </tr>
    
    <tr id="diskUsageWarnThreshold">
      <td><code>diskUsageWarnThreshold</code></td>
      <td><p>The disk free space low water mark threshold. Disk is considered full when usage threshold is exceeded. Disk returns back to non-full state when usage is below low water mark threshold. This prevents it from going back and forth between these states frequently when concurrent writes and compaction are happening. This also prevent bookie from switching frequently between read-only and read-writes states in the same cases.</p>
</td>
      <td><code>0.95</code></td>
    </tr>
    
    <tr id="diskUsageLwmThreshold">
      <td><code>diskUsageLwmThreshold</code></td>
      <td><p>Set the disk free space low water mark threshold. Disk is considered full when usage threshold is exceeded. Disk returns back to non-full state when usage is  below low water mark threshold. This prevents it from going back and forth between these states frequently when concurrent writes and compaction are happening. This also prevent bookie from switching frequently between read-only and read-writes states in the same cases.</p>
</td>
      <td><code>0.9</code></td>
    </tr>
    
    <tr id="diskCheckInterval">
      <td><code>diskCheckInterval</code></td>
      <td><p>Disk check interval in milliseconds. Interval to check the ledger dirs usage.</p>
</td>
      <td><code>10000</code></td>
    </tr>
     <!-- for param in group.params -->
  </tbody>
</table>

<h2 id="sorted-ledger-storage-settings">Sorted Ledger Storage Settings</h2>

<table>
  <thead>
    <tr>
      <th>Parameter</th>
      <th>Description</th>
      <th>Default</th>
    </tr>
  </thead>
  <tbody>
    
    <tr id="skipListSizeLimit">
      <td><code>skipListSizeLimit</code></td>
      <td><p>The skip list data size limitation (default 64MB) in EntryMemTable</p>
</td>
      <td><code>67108864</code></td>
    </tr>
    
    <tr id="skipListArenaChunkSize">
      <td><code>skipListArenaChunkSize</code></td>
      <td><p>The number of bytes we should use as chunk allocation for org.apache.bookkeeper.bookie.SkipListArena</p>
</td>
      <td><code>4194304</code></td>
    </tr>
    
    <tr id="skipListArenaMaxAllocSize">
      <td><code>skipListArenaMaxAllocSize</code></td>
      <td><p>The max size we should allocate from the skiplist arena. Allocations larger than this should be allocated directly by the VM to avoid fragmentation.</p>
</td>
      <td><code>131072</code></td>
    </tr>
    
    <tr id="openFileLimit">
      <td><code>openFileLimit</code></td>
      <td><p>Max number of ledger index files could be opened in bookie server. If number of ledger index files reaches this limitation, bookie server started to swap some ledgers from memory to disk. Too frequent swap will affect performance. You can tune this number to gain performance according your requirements.</p>
</td>
      <td><code>20000</code></td>
    </tr>
    
    <tr id="fileInfoCacheInitialCapacity">
      <td><code>fileInfoCacheInitialCapacity</code></td>
      <td><p>The minimum total size of the internal file info cache table. Providing a large enough estimate at construction time avoids the need for expensive resizing operations later,
but setting this value unnecessarily high wastes memory. The default value is <code class="highlighter-rouge">1/4</code> of <code class="highlighter-rouge">openFileLimit</code> if openFileLimit is positive, otherwise it is 64.</p>
</td>
      <td></td>
    </tr>
    
    <tr id="fileInfoMaxIdleTime">
      <td><code>fileInfoMaxIdleTime</code></td>
      <td><p>The max idle time allowed for an open file info existed in the file info cache. If the file info is idle for a long time, exceed the given time period. The file info will be
evicted and closed. If the value is zero or negative, the file info is evicted only when opened files reached <code class="highlighter-rouge">openFileLimit</code>.</p>
</td>
      <td><code>0</code></td>
    </tr>
    
    <tr id="fileInfoFormatVersionToWrite">
      <td><code>fileInfoFormatVersionToWrite</code></td>
      <td><p>The fileinfo format version to write.
Available formats are 0-1:
 0: Initial version
 1: persisting explicitLac is introduced</p>

<p>By default, it is <code class="highlighter-rouge">1</code>. If you’d like to disable persisting ExplicitLac, you can set this config to 0 and also journalFormatVersionToWrite should be set to &lt; 6. If there is mismatch then the serverconfig is considered invalid.</p>
</td>
      <td><code>1</code></td>
    </tr>
    
    <tr id="pageSize">
      <td><code>pageSize</code></td>
      <td><p>Size of a index page in ledger cache, in bytes. A larger index page can improve performance writing page to disk, which is efficent when you have small number of ledgers and these ledgers have similar number of entries. If you have large number of ledgers and each ledger has fewer entries, smaller index page would improve memory usage.</p>
</td>
      <td><code>8192</code></td>
    </tr>
    
    <tr id="pageLimit">
      <td><code>pageLimit</code></td>
      <td><p>How many index pages provided in ledger cache. If number of index pages reaches this limitation, bookie server starts to swap some ledgers from memory to disk. You can increment this value when you found swap became more frequent. But make sure pageLimit*pageSize should not more than JVM max memory limitation, otherwise you would got OutOfMemoryException. In general, incrementing pageLimit, using smaller index page would gain bettern performance in lager number of ledgers with fewer entries case. If pageLimit is -1, bookie server will use 1/3 of JVM memory to compute the limitation of number of index pages.</p>
</td>
      <td><code>-1</code></td>
    </tr>
    
    <tr id="numOfMemtableFlushThreads">
      <td><code>numOfMemtableFlushThreads</code></td>
      <td><p>When entryLogPerLedger is enabled SortedLedgerStorage flushes entries from memTable using OrderedExecutor having numOfMemtableFlushThreads number of threads.</p>
</td>
      <td><code>8</code></td>
    </tr>
     <!-- for param in group.params -->
  </tbody>
</table>

<h2 id="db-ledger-storage-settings">DB Ledger Storage Settings</h2>

<table>
  <thead>
    <tr>
      <th>Parameter</th>
      <th>Description</th>
      <th>Default</th>
    </tr>
  </thead>
  <tbody>
    
    <tr id="dbStorage_writeCacheMaxSizeMb">
      <td><code>dbStorage_writeCacheMaxSizeMb</code></td>
      <td><p>Size of write cache. Memory is allocated from JVM direct memory. Write cache is used for buffer entries before flushing into the entry log. For good performance, it should be big enough to hold a substantial amount of entries in the flush interval.</p>
</td>
      <td><code>25% of the available direct memory</code></td>
    </tr>
    
    <tr id="dbStorage_readAheadCacheMaxSizeMb">
      <td><code>dbStorage_readAheadCacheMaxSizeMb</code></td>
      <td><p>Size of read cache. Memory is allocated from JVM direct memory. The read cache is pre-filled doing read-ahead whenever a cache miss happens.</p>
</td>
      <td><code>25% of the available direct memroy</code></td>
    </tr>
    
    <tr id="dbStorage_readAheadCacheBatchSize">
      <td><code>dbStorage_readAheadCacheBatchSize</code></td>
      <td><p>How many entries to pre-fill in cache after a read cache miss</p>
</td>
      <td><code>100</code></td>
    </tr>
    
    <tr id="dbStorage_rocksDB_blockSize">
      <td><code>dbStorage_rocksDB_blockSize</code></td>
      <td><p>Size of RocksDB block-cache. RocksDB is used for storing ledger indexes.
For best performance, this cache should be big enough to hold a significant portion of the index database which can reach ~2GB in some cases.</p>
</td>
      <td><code>268435456</code></td>
    </tr>
    
    <tr id="dbStorage_rocksDB_writeBufferSizeMB">
      <td><code>dbStorage_rocksDB_writeBufferSizeMB</code></td>
      <td><p>Size of RocksDB write buffer. RocksDB is used for storing ledger indexes.</p>
</td>
      <td><code>64</code></td>
    </tr>
    
    <tr id="dbStorage_rocksDB_sstSizeInMB">
      <td><code>dbStorage_rocksDB_sstSizeInMB</code></td>
      <td><p>Size of RocksDB sst file size in MB. RocksDB is used for storing ledger indexes.</p>
</td>
      <td><code>64</code></td>
    </tr>
    
    <tr id="dbStorage_rocksDB_blockSize">
      <td><code>dbStorage_rocksDB_blockSize</code></td>
      <td>
</td>
      <td><code>65536</code></td>
    </tr>
    
    <tr id="dbStorage_rocksDB_bloomFilterBitsPerKey">
      <td><code>dbStorage_rocksDB_bloomFilterBitsPerKey</code></td>
      <td>
</td>
      <td><code>10</code></td>
    </tr>
    
    <tr id="dbStorage_rocksDB_numLevels">
      <td><code>dbStorage_rocksDB_numLevels</code></td>
      <td>
</td>
      <td><code>-1</code></td>
    </tr>
    
    <tr id="dbStorage_rocksDB_numFilesInLevel0">
      <td><code>dbStorage_rocksDB_numFilesInLevel0</code></td>
      <td>
</td>
      <td><code>10</code></td>
    </tr>
    
    <tr id="dbStorage_rocksDB_maxSizeInLevel1MB">
      <td><code>dbStorage_rocksDB_maxSizeInLevel1MB</code></td>
      <td>
</td>
      <td><code>256</code></td>
    </tr>
     <!-- for param in group.params -->
  </tbody>
</table>

<h2 id="metadata-service-settings">Metadata Service Settings</h2>

<table>
  <thead>
    <tr>
      <th>Parameter</th>
      <th>Description</th>
      <th>Default</th>
    </tr>
  </thead>
  <tbody>
    
    <tr id="metadataServiceUri">
      <td><code>metadataServiceUri</code></td>
      <td><p>metadata service uri that bookkeeper is used for loading corresponding metadata driver and resolving its metadata service location.</p>
</td>
      <td><code>zk+hierarchical://localhost:2181/ledgers</code></td>
    </tr>
    
    <tr id="ledgerManagerFactoryClass">
      <td><code>ledgerManagerFactoryClass</code></td>
      <td><p>@Deprecated in favor of using <code class="highlighter-rouge">metadataServiceUri</code></p>

<p>The ledger manager factory class, which defines how ledgers are stored, managed, and garbage collected. See the <a href="../../getting-started/concepts#ledger-manager">Ledger Manager</a> guide for more details.</p>
</td>
      <td><code>hierarchical</code></td>
    </tr>
    
    <tr id="allowShadedLedgerManagerFactoryClass">
      <td><code>allowShadedLedgerManagerFactoryClass</code></td>
      <td><p>Sometimes the bookkeeper server classes are shaded. The ledger manager factory classes might be relocated to be under other packages.
This would fail the clients using shaded factory classes since the factory classes are stored in cookies and used for verification.
Users can enable this flag to allow using shaded ledger manager factory classes to connect to a bookkeeper cluster.</p>
</td>
      <td><code>false</code></td>
    </tr>
    
    <tr id="shadedLedgerManagerFactoryClassPrefix">
      <td><code>shadedLedgerManagerFactoryClassPrefix</code></td>
      <td><p>The shaded ledger manager factory prefix. This is used when <code class="highlighter-rouge">allowShadedLedgerManagerFactoryClass</code> is set to true.</p>
</td>
      <td><code>dlshade.</code></td>
    </tr>
     <!-- for param in group.params -->
  </tbody>
</table>

<h2 id="zookeeper-metadata-service-settings">ZooKeeper Metadata Service Settings</h2>

<table>
  <thead>
    <tr>
      <th>Parameter</th>
      <th>Description</th>
      <th>Default</th>
    </tr>
  </thead>
  <tbody>
    
    <tr id="zkLedgersRootPath">
      <td><code>zkLedgersRootPath</code></td>
      <td><p>@Deprecated in favor of using <code class="highlighter-rouge">metadataServiceUri</code></p>

<p>Root Zookeeper path to store ledger metadata. This parameter is used by zookeeper-based ledger manager as a root znode to store all ledgers.</p>
</td>
      <td><code>/ledgers</code></td>
    </tr>
    
    <tr id="zkServers">
      <td><code>zkServers</code></td>
      <td><p>@Deprecated in favor of using <code class="highlighter-rouge">metadataServiceUri</code></p>

<p>A list of one of more servers on which Zookeeper is running. The server list can be comma separated values, for example <code class="highlighter-rouge">zkServers=zk1:2181,zk2:2181,zk3:2181</code>.</p>
</td>
      <td><code>localhost:2181</code></td>
    </tr>
    
    <tr id="zkTimeout">
      <td><code>zkTimeout</code></td>
      <td><p>ZooKeeper client session timeout in milliseconds. Bookie server will exit if it received SESSION_EXPIRED because it was partitioned off from ZooKeeper for more than the session timeout  JVM garbage collection, disk I/O will cause SESSION_EXPIRED. Increment this value could help avoiding this issue.</p>
</td>
      <td><code>10000</code></td>
    </tr>
    
    <tr id="zkRetryBackoffStartMs">
      <td><code>zkRetryBackoffStartMs</code></td>
      <td><p>The Zookeeper client backoff retry start time in millis.</p>
</td>
      <td><code>1000</code></td>
    </tr>
    
    <tr id="zkRetryBackoffMaxMs">
      <td><code>zkRetryBackoffMaxMs</code></td>
      <td><p>The Zookeeper client backoff retry max time in millis.</p>
</td>
      <td><code>10000</code></td>
    </tr>
    
    <tr id="zkRequestRateLimit">
      <td><code>zkRequestRateLimit</code></td>
      <td><p>The Zookeeper request limit. It is only enabled when setting a postivie value.</p>
</td>
      <td><code>0</code></td>
    </tr>
    
    <tr id="zkEnableSecurity">
      <td><code>zkEnableSecurity</code></td>
      <td><p>Set ACLs on every node written on ZooKeeper, this way only allowed users will be able to read and write BookKeeper metadata stored on ZooKeeper. In order to make ACLs work you need to setup ZooKeeper JAAS authentication all the bookies and Client need to share the same user, and this is usually done using Kerberos authentication. See ZooKeeper documentation</p>
</td>
      <td><code>false</code></td>
    </tr>
     <!-- for param in group.params -->
  </tbody>
</table>

<h2 id="statistics">Statistics</h2>

<table>
  <thead>
    <tr>
      <th>Parameter</th>
      <th>Description</th>
      <th>Default</th>
    </tr>
  </thead>
  <tbody>
    
    <tr id="enableStatistics">
      <td><code>enableStatistics</code></td>
      <td><p>Whether statistics are enabled for the bookie.</p>
</td>
      <td><code>true</code></td>
    </tr>
    
    <tr id="statsProviderClass">
      <td><code>statsProviderClass</code></td>
      <td><p>Stats provider class.
Options:</p>
<ul>
  <li>Prometheus        : org.apache.bookkeeper.stats.prometheus.PrometheusMetricsProvider</li>
  <li>Codahale          : org.apache.bookkeeper.stats.codahale.CodahaleMetricsProvider</li>
  <li>Twitter Finagle   : org.apache.bookkeeper.stats.twitter.finagle.FinagleStatsProvider</li>
  <li>Twitter Ostrich   : org.apache.bookkeeper.stats.twitter.ostrich.OstrichProvider</li>
  <li>Twitter Science   : org.apache.bookkeeper.stats.twitter.science.TwitterStatsProvider</li>
</ul>
</td>
      <td><code>org.apache.bookkeeper.stats.prometheus.PrometheusMetricsProvider</code></td>
    </tr>
    
    <tr id="limitStatsLogging">
      <td><code>limitStatsLogging</code></td>
      <td><p>option to limit stats logging</p>
</td>
      <td><code>false</code></td>
    </tr>
     <!-- for param in group.params -->
  </tbody>
</table>

<h2 id="prometheus-metrics-provider-settings">Prometheus Metrics Provider Settings</h2>

<table>
  <thead>
    <tr>
      <th>Parameter</th>
      <th>Description</th>
      <th>Default</th>
    </tr>
  </thead>
  <tbody>
    
    <tr id="prometheusStatsHttpAddress">
      <td><code>prometheusStatsHttpAddress</code></td>
      <td><p>default bind address for Prometheus metrics exporter</p>
</td>
      <td><code>0.0.0.0</code></td>
    </tr>
    
    <tr id="prometheusStatsHttpPort">
      <td><code>prometheusStatsHttpPort</code></td>
      <td><p>default port for prometheus metrics exporter</p>
</td>
      <td><code>8000</code></td>
    </tr>
    
    <tr id="prometheusStatsLatencyRolloverSeconds">
      <td><code>prometheusStatsLatencyRolloverSeconds</code></td>
      <td><p>latency stats rollover interval, in seconds</p>
</td>
      <td><code>60</code></td>
    </tr>
     <!-- for param in group.params -->
  </tbody>
</table>

<h2 id="codahale-metrics-provider-settings">Codahale Metrics Provider Settings</h2>

<table>
  <thead>
    <tr>
      <th>Parameter</th>
      <th>Description</th>
      <th>Default</th>
    </tr>
  </thead>
  <tbody>
    
    <tr id="codahaleStatsPrefix">
      <td><code>codahaleStatsPrefix</code></td>
      <td><p>metric name prefix, default is empty.</p>
</td>
      <td><code></code></td>
    </tr>
    
    <tr id="codahaleStatsOutputFrequencySeconds">
      <td><code>codahaleStatsOutputFrequencySeconds</code></td>
      <td><p>the frequency that stats reporters report stats, in seconds.</p>
</td>
      <td><code>60</code></td>
    </tr>
    
    <tr id="codahaleStatsGraphiteEndpoint">
      <td><code>codahaleStatsGraphiteEndpoint</code></td>
      <td><p>the graphite endpoint for reporting stats. see <a href="//metrics.dropwizard.io/3.1.0/manual/graphite/">graphite reporter</a> for more details.</p>
</td>
      <td><code>null</code></td>
    </tr>
    
    <tr id="codahaleStatsCSVEndpoint">
      <td><code>codahaleStatsCSVEndpoint</code></td>
      <td><p>the directory for reporting stats in csv format. see <a href="//metrics.dropwizard.io/3.1.0/manual/core/#csv">csv reporter</a> for more details.</p>
</td>
      <td><code>null</code></td>
    </tr>
    
    <tr id="codahaleStatsSlf4jEndpoint">
      <td><code>codahaleStatsSlf4jEndpoint</code></td>
      <td><p>the slf4j endpoint for reporting stats. see <a href="//metrics.dropwizard.io/3.1.0/manual/core/#slf4j">slf4j reporter</a> for more details.</p>
</td>
      <td><code>null</code></td>
    </tr>
    
    <tr id="codahaleStatsJmxEndpoint">
      <td><code>codahaleStatsJmxEndpoint</code></td>
      <td><p>the jmx endpoint for reporting stats. see <a href="//metrics.dropwizard.io/3.1.0/manual/core/#jmx">jmx reporter</a> for more details.</p>
</td>
      <td></td>
    </tr>
     <!-- for param in group.params -->
  </tbody>
</table>

<h2 id="twitter-ostrich-metrics-provider">Twitter Ostrich Metrics Provider</h2>

<table>
  <thead>
    <tr>
      <th>Parameter</th>
      <th>Description</th>
      <th>Default</th>
    </tr>
  </thead>
  <tbody>
    
    <tr id="statsExport">
      <td><code>statsExport</code></td>
      <td><p>Flag to control whether to expose ostrich metrics via a http endpoint configured by <code class="highlighter-rouge">statsHttpPort</code>.</p>
</td>
      <td><code>false</code></td>
    </tr>
    
    <tr id="statsHttpPort">
      <td><code>statsHttpPort</code></td>
      <td><p>The http port of exposing ostrich stats if <code class="highlighter-rouge">statsExport</code> is set to true</p>
</td>
      <td><code>9002</code></td>
    </tr>
     <!-- for param in group.params -->
  </tbody>
</table>

<h2 id="twitter-science-metrics-provider">Twitter Science Metrics Provider</h2>

<table>
  <thead>
    <tr>
      <th>Parameter</th>
      <th>Description</th>
      <th>Default</th>
    </tr>
  </thead>
  <tbody>
    
    <tr id="statsExport">
      <td><code>statsExport</code></td>
      <td><p>Flag to control whether to expose metrics via a http endpoint configured by <code class="highlighter-rouge">statsHttpPort</code>.</p>
</td>
      <td><code>false</code></td>
    </tr>
    
    <tr id="statsHttpPort">
      <td><code>statsHttpPort</code></td>
      <td><p>The http port of exposing stats if <code class="highlighter-rouge">statsExport</code> is set to true</p>
</td>
      <td><code>9002</code></td>
    </tr>
     <!-- for param in group.params -->
  </tbody>
</table>

<h2 id="autorecovery-general-settings">AutoRecovery general settings</h2>

<table>
  <thead>
    <tr>
      <th>Parameter</th>
      <th>Description</th>
      <th>Default</th>
    </tr>
  </thead>
  <tbody>
    
    <tr id="autoRecoveryDaemonEnabled">
      <td><code>autoRecoveryDaemonEnabled</code></td>
      <td><p>Whether the bookie itself can start auto-recovery service also or not.</p>
</td>
      <td></td>
    </tr>
    
    <tr id="digestType">
      <td><code>digestType</code></td>
      <td><p>The default digest type used for opening ledgers.</p>
</td>
      <td><code>CRC32</code></td>
    </tr>
    
    <tr id="passwd">
      <td><code>passwd</code></td>
      <td><p>The default password used for opening ledgers. Default value is empty string.</p>
</td>
      <td><code></code></td>
    </tr>
    
    <tr id="enableDigestTypeAutodetection">
      <td><code>enableDigestTypeAutodetection</code></td>
      <td><p>The flag to enable/disable digest type auto-detection. If it is enabled, the bookkeeper client will ignore the provided digest type provided at <code class="highlighter-rouge">digestType</code> and the provided passwd provided at <code class="highlighter-rouge">passwd</code>.</p>
</td>
      <td><code>true</code></td>
    </tr>
     <!-- for param in group.params -->
  </tbody>
</table>

<h2 id="autorecovery-placement-settings">AutoRecovery placement settings</h2>

<table>
  <thead>
    <tr>
      <th>Parameter</th>
      <th>Description</th>
      <th>Default</th>
    </tr>
  </thead>
  <tbody>
    
    <tr id="ensemblePlacementPolicy">
      <td><code>ensemblePlacementPolicy</code></td>
      <td><p>The ensemble placement policy used for finding bookie for re-replicating entries.</p>

<p>Options:</p>
<ul>
  <li>org.apache.bookkeeper.client.RackawareEnsemblePlacementPolicy</li>
  <li>org.apache.bookkeeper.client.RegionAwareEnsemblePlacementPolicy</li>
</ul>
</td>
      <td><code>org.apache.bookkeeper.client.RackawareEnsemblePlacementPolicy</code></td>
    </tr>
    
    <tr id="reppDnsResolverClass">
      <td><code>reppDnsResolverClass</code></td>
      <td><p>The DNS resolver class used for resolving network locations for bookies. The setting is used
when using either RackawareEnsemblePlacementPolicy and RegionAwareEnsemblePlacementPolicy.</p>
</td>
      <td><code>org.apache.bookkeeper.net.ScriptBasedMapping</code></td>
    </tr>
    
    <tr id="networkTopologyScriptFileName">
      <td><code>networkTopologyScriptFileName</code></td>
      <td><p>The bash script used by <code class="highlighter-rouge">ScriptBasedMapping</code> DNS resolver for resolving bookies’ network locations.</p>
</td>
      <td></td>
    </tr>
    
    <tr id="networkTopologyScriptNumberArgs">
      <td><code>networkTopologyScriptNumberArgs</code></td>
      <td><p>The max number of args used in the script provided at <code class="highlighter-rouge">networkTopologyScriptFileName</code>.</p>
</td>
      <td></td>
    </tr>
    
    <tr id="minNumRacksPerWriteQuorum">
      <td><code>minNumRacksPerWriteQuorum</code></td>
      <td><p>minimum number of racks per write quorum. RackawareEnsemblePlacementPolicy will try to get bookies from atleast ‘minNumRacksPerWriteQuorum’ racks for a writeQuorum.</p>
</td>
      <td></td>
    </tr>
    
    <tr id="enforceMinNumRacksPerWriteQuorum">
      <td><code>enforceMinNumRacksPerWriteQuorum</code></td>
      <td><p>‘enforceMinNumRacksPerWriteQuorum’ enforces RackawareEnsemblePlacementPolicy to pick bookies from ‘minNumRacksPerWriteQuorum’ racks for a writeQuorum. If it cann’t find bookie then it would throw BKNotEnoughBookiesException instead of picking random one.</p>
</td>
      <td></td>
    </tr>
    
    <tr id="ignoreLocalNodeInPlacementPolicy">
      <td><code>ignoreLocalNodeInPlacementPolicy</code></td>
      <td><p>‘ignoreLocalNodeInPlacementPolicy’ specifies whether to ignore localnode in the internal logic of placement policy. If it is not possible or useful to use Bookkeeper client node’s (or AutoReplicator) rack/region info. for placement policy then it is better to ignore localnode instead of false alarming with log lines and metrics.</p>
</td>
      <td></td>
    </tr>
    
    <tr id="enforceMinNumFaultDomainsForWrite">
      <td><code>enforceMinNumFaultDomainsForWrite</code></td>
      <td><p>‘enforceMinNumFaultDomainsForWrite’ enforces EnsemblePlacementPolicy to check if a write has made it to bookies in ‘minNumRacksPerWriteQuorum’ number of fault domains, before acknowledging the write back.</p>
</td>
      <td></td>
    </tr>
    
    <tr id="minNumZonesPerWriteQuorum">
      <td><code>minNumZonesPerWriteQuorum</code></td>
      <td><p>minimum number of zones per write quorum in ZoneawareEnsemblePlacementPolicy. ZoneawareEnsemblePlacementPolicy would get bookies from atleast ‘minNumZonesPerWriteQuorum’ racks for a writeQuorum.</p>
</td>
      <td><code>2</code></td>
    </tr>
    
    <tr id="desiredNumZonesPerWriteQuorum">
      <td><code>desiredNumZonesPerWriteQuorum</code></td>
      <td><p>desired number of zones per write quorum in ZoneawareEnsemblePlacementPolicy. ZoneawareEnsemblePlacementPolicy will try to get bookies from ‘desiredNumZonesPerWriteQuorum’ zones for a writeQuorum.</p>
</td>
      <td><code>3</code></td>
    </tr>
    
    <tr id="enforceStrictZoneawarePlacement">
      <td><code>enforceStrictZoneawarePlacement</code></td>
      <td><p>in ZoneawareEnsemblePlacementPolicy if strict placement is enabled then minZones/desiredZones in writeQuorum would be maintained otherwise it will pick nodes randomly.</p>
</td>
      <td><code>true</code></td>
    </tr>
     <!-- for param in group.params -->
  </tbody>
</table>

<h2 id="autorecovery-auditor-settings">AutoRecovery auditor settings</h2>

<table>
  <thead>
    <tr>
      <th>Parameter</th>
      <th>Description</th>
      <th>Default</th>
    </tr>
  </thead>
  <tbody>
    
    <tr id="auditorPeriodicBookieCheckInterval">
      <td><code>auditorPeriodicBookieCheckInterval</code></td>
      <td><p>The time interval between auditor bookie checks, in seconds. The auditor bookie check checks ledger metadata to see which bookies should contain entries for each ledger. If a bookie that should contain entries is unavailable, then the ledger containing that entry is marked for recovery. Setting this to 0 disables the periodic check. Bookie checks will still run when a bookie fails. The default is once per day.</p>
</td>
      <td><code>86400</code></td>
    </tr>
    
    <tr id="auditorPeriodicCheckInterval">
      <td><code>auditorPeriodicCheckInterval</code></td>
      <td><p>The time interval, in seconds, at which the auditor will check all ledgers in the cluster. By default this runs once a week.</p>

<p>Set this to 0 to disable the periodic check completely. Note that periodic checking will put extra load on the cluster, so it should not be run more frequently than once a day.</p>
</td>
      <td><code>604800</code></td>
    </tr>
    
    <tr id="auditorPeriodicPlacementPolicyCheckInterval">
      <td><code>auditorPeriodicPlacementPolicyCheckInterval</code></td>
      <td><p>The time interval between auditor placement policy checks, in seconds. The auditor placement policy check validates if the ensemble of segments of all the closed ledgers is adhering to the placement policy. It is just monitoring scrutiny but doesn’t take any corrective measure other than logging error and reporting metrics. By default it is disabled.</p>
</td>
      <td><code>0</code></td>
    </tr>
    
    <tr id="auditorLedgerVerificationPercentage">
      <td><code>auditorLedgerVerificationPercentage</code></td>
      <td><p>The percentage of a ledger (fragment)’s entries will be verified before claiming a fragment as missing. If it is 0, it only verifies the first and last entries of a given fragment.</p>
</td>
      <td><code>0</code></td>
    </tr>
    
    <tr id="lostBookieRecoveryDelay">
      <td><code>lostBookieRecoveryDelay</code></td>
      <td><p>How long to wait, in seconds, before starting autorecovery of a lost bookie.</p>
</td>
      <td><code>0</code></td>
    </tr>
    
    <tr id="storeSystemTimeAsLedgerUnderreplicatedMarkTime">
      <td><code>storeSystemTimeAsLedgerUnderreplicatedMarkTime</code></td>
      <td><p>Enable the Auditor to use system time as underreplicated ledger mark time. If this is enabled, Auditor will write a ctime field into the underreplicated ledger znode.</p>
</td>
      <td><code>true</code></td>
    </tr>
    
    <tr id="underreplicatedLedgerRecoveryGracePeriod">
      <td><code>underreplicatedLedgerRecoveryGracePeriod</code></td>
      <td><p>The grace period (in seconds) for underreplicated ledgers recovery. If ledger is marked underreplicated for more than this period then it will be reported by placementPolicyCheck in Auditor. Setting this to 0 will disable this check.</p>
</td>
      <td><code>0</code></td>
    </tr>
    
    <tr id="auditorReplicasCheckInterval">
      <td><code>auditorReplicasCheckInterval</code></td>
      <td><p>Sets the regularity/interval at which the auditor will run a replicas check of all ledgers, which are closed. This should not be run very often since it validates availability of replicas of all ledgers by querying bookies. Setting this to 0 will completely disable the periodic replicas check. By default it is disabled.</p>
</td>
      <td><code>0</code></td>
    </tr>
     <!-- for param in group.params -->
  </tbody>
</table>

<h2 id="autorecovery-replication-worker-settings">AutoRecovery replication worker settings</h2>

<table>
  <thead>
    <tr>
      <th>Parameter</th>
      <th>Description</th>
      <th>Default</th>
    </tr>
  </thead>
  <tbody>
    
    <tr id="rereplicationEntryBatchSize">
      <td><code>rereplicationEntryBatchSize</code></td>
      <td><p>The number of entries that a replication will rereplicate in parallel.</p>
</td>
      <td><code>10</code></td>
    </tr>
    
    <tr id="openLedgerRereplicationGracePeriod">
      <td><code>openLedgerRereplicationGracePeriod</code></td>
      <td><p>The grace period, in milliseconds, that the replication worker waits before fencing and replicating a ledger fragment that’s still being written to upon bookie failure.</p>
</td>
      <td><code>30000</code></td>
    </tr>
    
    <tr id="lockReleaseOfFailedLedgerGracePeriod">
      <td><code>lockReleaseOfFailedLedgerGracePeriod</code></td>
      <td><p>Set the grace period, in milliseconds, which the replication worker has to wait before releasing the lock after it failed to replicate a ledger. For the first ReplicationWorker.NUM_OF_EXPONENTIAL_BACKOFF_RETRIALS failures it will do exponential backoff then it will bound at lockReleaseOfFailedLedgerGracePeriod.</p>
</td>
      <td><code>300000</code></td>
    </tr>
    
    <tr id="rwRereplicateBackoffMs">
      <td><code>rwRereplicateBackoffMs</code></td>
      <td><p>The time to backoff when replication worker encounters exceptions on replicating a ledger, in milliseconds.</p>
</td>
      <td><code>5000</code></td>
    </tr>
     <!-- for param in group.params -->
  </tbody>
</table>

<h2 id="memory-allocator-settings">Memory allocator settings</h2>

<table>
  <thead>
    <tr>
      <th>Parameter</th>
      <th>Description</th>
      <th>Default</th>
    </tr>
  </thead>
  <tbody>
    
    <tr id="allocatorPoolingPolicy">
      <td><code>allocatorPoolingPolicy</code></td>
      <td><p>Define the memory pooling policy.</p>

<p>Available options are:</p>
<ul>
  <li>PooledDirect: Use Direct memory for all buffers and pool the memory.
              Direct memory will avoid the overhead of JVM GC and most
              memory copies when reading and writing to socket channel.
              Pooling will add memory space overhead due to the fact that
              there will be fragmentation in the allocator and that threads
              will keep a portion of memory as thread-local to avoid
              contention when possible.</li>
  <li>UnpooledHeap: Allocate memory from JVM heap without any pooling.
              This option has the least overhead in terms of memory usage
              since the memory will be automatically reclaimed by the
              JVM GC but might impose a performance penalty at high
              throughput.</li>
</ul>
</td>
      <td><code>PooledDirect</code></td>
    </tr>
    
    <tr id="allocatorPoolingConcurrency">
      <td><code>allocatorPoolingConcurrency</code></td>
      <td><p>Controls the amount of concurrency for the memory pool.
Default is to have a number of allocator arenas equals to 2 * CPUS.
Decreasing this number will reduce the amount of memory overhead, at the
expense of increased allocation contention.</p>
</td>
      <td><code>2 * CPUS</code></td>
    </tr>
    
    <tr id="allocatorOutOfMemoryPolicy">
      <td><code>allocatorOutOfMemoryPolicy</code></td>
      <td><p>Define the memory allocator out of memory policy.</p>

<p>Available options are:</p>
<ul>
  <li>FallbackToHeap: If it’s not possible to allocate a buffer from direct memory,
                fallback to allocate an unpooled buffer from JVM heap.
                This will help absorb memory allocation spikes because the heap
                allocations will naturally slow down the process and will result
                if full GC cleanup if the Heap itself is full.</li>
  <li>ThrowException: Throw regular OOM exception without taking addition actions.</li>
</ul>
</td>
      <td><code>FallbackToHeap</code></td>
    </tr>
    
    <tr id="allocatorLeakDetectionPolicy">
      <td><code>allocatorLeakDetectionPolicy</code></td>
      <td><p>Define the memory allocator leak detection policy.</p>

<p>Available options are:</p>
<ul>
  <li>Disabled: No leak detection and no overhead.</li>
  <li>Simple: Instruments 1% of the allocated buffer to track for leaks.</li>
  <li>Advanced: Instruments 1% of the allocated buffer to track for leaks, reporting
          stack traces of places where the buffer was used.</li>
  <li>Paranoid: Instruments 100% of the allocated buffer to track for leaks, reporting
          stack traces of places where the buffer was used. Introduce very
          significant overhead.</li>
</ul>
</td>
      <td><code>Disabled</code></td>
    </tr>
     <!-- for param in group.params -->
  </tbody>
</table>
<p><!-- for group in configs.groups --></p>


        </section>

        
      </div>
    </div>

    <div class="column is-2 is-hidden-mobile">
      
      
<div class="toc">
  <h2 class="title">BookKeeper configuration</h2>
  <ul class="section-nav">
<li class="toc-entry toc-h2"><a href="#server-parameters">Server parameters</a></li>
<li class="toc-entry toc-h2"><a href="#worker-thread-settings">Worker thread settings</a></li>
<li class="toc-entry toc-h2"><a href="#long-poll-settings">Long poll settings</a></li>
<li class="toc-entry toc-h2"><a href="#read-only-mode-support">Read-only mode support</a></li>
<li class="toc-entry toc-h2"><a href="#netty-server-settings">Netty server settings</a></li>
<li class="toc-entry toc-h2"><a href="#http-server-settings">Http server settings</a></li>
<li class="toc-entry toc-h2"><a href="#security-settings">Security settings</a></li>
<li class="toc-entry toc-h2"><a href="#tls-settings">TLS settings</a></li>
<li class="toc-entry toc-h2"><a href="#journal-settings">Journal settings</a></li>
<li class="toc-entry toc-h2"><a href="#ledger-storage-settings">Ledger storage settings</a></li>
<li class="toc-entry toc-h2"><a href="#entry-log-settings">Entry log settings</a></li>
<li class="toc-entry toc-h2"><a href="#entry-log-compaction-settings">Entry log compaction settings</a></li>
<li class="toc-entry toc-h2"><a href="#garbage-collection-settings">Garbage collection settings</a></li>
<li class="toc-entry toc-h2"><a href="#disk-utilization">Disk utilization</a></li>
<li class="toc-entry toc-h2"><a href="#sorted-ledger-storage-settings">Sorted Ledger Storage Settings</a></li>
<li class="toc-entry toc-h2"><a href="#db-ledger-storage-settings">DB Ledger Storage Settings</a></li>
<li class="toc-entry toc-h2"><a href="#metadata-service-settings">Metadata Service Settings</a></li>
<li class="toc-entry toc-h2"><a href="#zookeeper-metadata-service-settings">ZooKeeper Metadata Service Settings</a></li>
<li class="toc-entry toc-h2"><a href="#statistics">Statistics</a></li>
<li class="toc-entry toc-h2"><a href="#prometheus-metrics-provider-settings">Prometheus Metrics Provider Settings</a></li>
<li class="toc-entry toc-h2"><a href="#codahale-metrics-provider-settings">Codahale Metrics Provider Settings</a></li>
<li class="toc-entry toc-h2"><a href="#twitter-ostrich-metrics-provider">Twitter Ostrich Metrics Provider</a></li>
<li class="toc-entry toc-h2"><a href="#twitter-science-metrics-provider">Twitter Science Metrics Provider</a></li>
<li class="toc-entry toc-h2"><a href="#autorecovery-general-settings">AutoRecovery general settings</a></li>
<li class="toc-entry toc-h2"><a href="#autorecovery-placement-settings">AutoRecovery placement settings</a></li>
<li class="toc-entry toc-h2"><a href="#autorecovery-auditor-settings">AutoRecovery auditor settings</a></li>
<li class="toc-entry toc-h2"><a href="#autorecovery-replication-worker-settings">AutoRecovery replication worker settings</a></li>
<li class="toc-entry toc-h2"><a href="#memory-allocator-settings">Memory allocator settings</a></li>
</ul>
</div>


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



<div id="entry-popover-html" class="popover-template">
  <p>An entry is a sequence of bytes (plus some metadata) written to a BookKeeper ledger. Entries are also known as records.</p>

</div>

<div id="ledger-popover-html" class="popover-template">
  <p>A ledger is a sequence of entries written to BookKeeper. Entries are written sequentially to ledgers and at most once, giving ledgers append-only semantics.</p>

</div>

<div id="bookie-popover-html" class="popover-template">
  <p>A bookie is an individual BookKeeper storage server.</p>

<p>Bookies store the content of ledgers and act as a distributed ensemble.</p>

</div>

<div id="rereplication-popover-html" class="popover-template">
  <p>A subsystem that runs in the background on bookies to ensure that ledgers are fully replicated even if one bookie from the ensemble is down.</p>

</div>

<div id="striping-popover-html" class="popover-template">
  <p>Striping is the process of distributing BookKeeper ledgers to sub-groups of bookies rather than to all bookies in a BookKeeper ensemble.</p>

<p>Striping is essential to ensuring fast performance.</p>

</div>

<div id="striped-popover-html" class="popover-template">
  <p>Striping is the process of distributing BookKeeper ledgers to sub-groups of bookies rather than to all bookies in a BookKeeper ensemble.</p>

<p>Striping is essential to ensuring fast performance.</p>

</div>

<div id="journal-popover-html" class="popover-template">
  <p>A journal file stores BookKeeper transaction logs.</p>

</div>

<div id="fencing-popover-html" class="popover-template">
  <p>When a reader forces a ledger to close, preventing any further entries from being written to the ledger.</p>

</div>

<div id="record-popover-html" class="popover-template">
  <p>A record is a sequence of bytes (plus some metadata) written to a BookKeeper ledger. Records are also known as entries.</p>

</div>


<script type="text/javascript">

tippy('#entry-popover', {
  html: '#entry-popover-html',
  arrow: true,
  animation: 'fade'
});

tippy('#ledger-popover', {
  html: '#ledger-popover-html',
  arrow: true,
  animation: 'fade'
});

tippy('#bookie-popover', {
  html: '#bookie-popover-html',
  arrow: true,
  animation: 'fade'
});

tippy('#rereplication-popover', {
  html: '#rereplication-popover-html',
  arrow: true,
  animation: 'fade'
});

tippy('#striping-popover', {
  html: '#striping-popover-html',
  arrow: true,
  animation: 'fade'
});

tippy('#striped-popover', {
  html: '#striped-popover-html',
  arrow: true,
  animation: 'fade'
});

tippy('#journal-popover', {
  html: '#journal-popover-html',
  arrow: true,
  animation: 'fade'
});

tippy('#fencing-popover', {
  html: '#fencing-popover-html',
  arrow: true,
  animation: 'fade'
});

tippy('#record-popover', {
  html: '#record-popover-html',
  arrow: true,
  animation: 'fade'
});

</script>

    </main>

    <footer class="footer">
  <div class="container">
    <div class="content has-text-centered">
      <p>
        Copyright &copy; 2016 - 2021 <a href="https://www.apache.org/">The Apache Software Foundation</a>,<br /> licensed under the <a href="http://www.apache.org/licenses/LICENSE-2.0">Apache License, version 2.0</a>.
      </p>
      <p>
        Apache BookKeeper, BookKeeper®, Apache®, the Apache feature logo, and the Apache BookKeeper logo are either registered trademarks or trademarks of The Apache Software Foundation.
      </p>
    </div>
  </div>
</footer>

  </body>

  <script src="/js/app.js"></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.
-->
<script>
  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
  })(window,document,'script','https://www.google-analytics.com/analytics.js','ga');

  ga('create', 'UA-104419626-1', 'auto');
  ga('send', 'pageview');

</script>

  
</html>
