<!-- CANARY: REQ=REQ-DOCS-001; FEATURE="Docs"; ASPECT=Documentation; STATUS=TESTED; OWNER=docs; UPDATED=2026-01-15 -->
<h2 id="server-configuration" class="position-relative d-flex align-items-center group">
<span>Server Configuration</span>
<button type="button"
class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1"
data-share-target="server-configuration"
aria-haspopup="dialog"
aria-label="Share link: Server Configuration">
<i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i>
<span class="visually-hidden">Share link</span>
</button>
</h2><div id="headingShareModal" class="heading-share-modal" role="dialog" aria-modal="true" aria-labelledby="headingShareTitle" hidden>
<div class="hsm-dialog" role="document">
<div class="hsm-header">
<h2 id="headingShareTitle" class="h6 mb-0 fw-bold">Share this section</h2>
<button type="button" class="hsm-close" aria-label="Close">
<i class="fa-solid fa-xmark"></i>
</button>
</div>
<div class="hsm-body">
<label for="headingShareInput" class="form-label small text-muted mb-1 text-uppercase fw-bold" style="font-size: 0.7rem; letter-spacing: 0.5px;">Permalink</label>
<div class="input-group mb-4 hsm-url-group">
<input id="headingShareInput" type="text" class="form-control font-monospace" readonly aria-readonly="true" style="font-size: 0.85rem;" />
<button class="btn btn-primary hsm-copy" type="button" aria-label="Copy" title="Copy">
<i class="fa-duotone fa-clipboard" aria-hidden="true"></i>
</button>
</div>
<div class="small fw-bold mb-2 text-muted text-uppercase" style="font-size: 0.7rem; letter-spacing: 0.5px;">Share via</div>
<div class="hsm-share-grid">
<a id="share-twitter" class="btn btn-outline-secondary w-100" target="_blank" rel="noopener noreferrer">
<i class="fa-brands fa-twitter me-2"></i>Twitter
</a>
<a id="share-linkedin" class="btn btn-outline-secondary w-100" target="_blank" rel="noopener noreferrer">
<i class="fa-brands fa-linkedin me-2"></i>LinkedIn
</a>
<a id="share-facebook" class="btn btn-outline-secondary w-100" target="_blank" rel="noopener noreferrer">
<i class="fa-brands fa-facebook me-2"></i>Facebook
</a>
</div>
</div>
</div>
</div>
<style>
.heading-share-modal {
position: fixed;
inset: 0;
display: flex;
justify-content: center;
align-items: center;
background: rgba(0, 0, 0, 0.6);
z-index: 1050;
padding: 1rem;
backdrop-filter: blur(4px);
-webkit-backdrop-filter: blur(4px);
}
.heading-share-modal[hidden] { display: none !important; }
.hsm-dialog {
max-width: 420px;
width: 100%;
background: var(--bs-body-bg, #fff);
color: var(--bs-body-color, #212529);
border: 1px solid var(--bs-border-color, rgba(0,0,0,0.1));
border-radius: 1rem;
box-shadow: 0 25px 50px -12px rgba(0, 0, 0, 0.25);
overflow: hidden;
animation: hsm-fade-in 0.2s ease-out;
}
@keyframes hsm-fade-in {
from { opacity: 0; transform: scale(0.95); }
to { opacity: 1; transform: scale(1); }
}
[data-bs-theme="dark"] .hsm-dialog {
background: #1e293b;
border-color: rgba(255,255,255,0.1);
color: #f8f9fa;
}
.hsm-header {
display: flex;
justify-content: space-between;
align-items: center;
padding: 1rem 1.5rem;
border-bottom: 1px solid var(--bs-border-color, rgba(0,0,0,0.1));
background: rgba(0,0,0,0.02);
}
[data-bs-theme="dark"] .hsm-header {
background: rgba(255,255,255,0.02);
border-color: rgba(255,255,255,0.1);
}
.hsm-close {
background: transparent;
border: none;
color: inherit;
opacity: 0.5;
padding: 0.25rem 0.5rem;
border-radius: 0.25rem;
font-size: 1.2rem;
line-height: 1;
transition: opacity 0.2s;
}
.hsm-close:hover {
opacity: 1;
}
.hsm-body {
padding: 1.5rem;
}
.hsm-url-group {
display: flex !important;
align-items: stretch;
}
.hsm-url-group .form-control {
flex: 1;
min-width: 0;
margin: 0;
background: var(--bs-secondary-bg, #f8f9fa);
border-color: var(--bs-border-color, #dee2e6);
border-top-right-radius: 0;
border-bottom-right-radius: 0;
height: 42px;
}
.hsm-url-group .btn {
flex: 0 0 auto;
margin: 0;
margin-left: -1px;
border-top-left-radius: 0;
border-bottom-left-radius: 0;
height: 42px;
display: flex;
align-items: center;
justify-content: center;
padding: 0 1.25rem;
z-index: 2;
}
[data-bs-theme="dark"] .hsm-url-group .form-control {
background: #0f172a;
border-color: #334155;
color: #e2e8f0;
}
.hsm-share-grid {
display: flex;
flex-direction: column;
gap: 0.5rem;
}
.hsm-share-grid .btn {
display: flex;
align-items: center;
justify-content: center;
font-size: 0.9rem;
padding: 0.6rem;
border-color: var(--bs-border-color);
width: 100%;
}
[data-bs-theme="dark"] .hsm-share-grid .btn {
color: #e2e8f0;
border-color: #475569;
}
[data-bs-theme="dark"] .hsm-share-grid .btn:hover {
background: #334155;
border-color: #cbd5e1;
}
</style>
<script>
(function(){
const modal = document.getElementById('headingShareModal');
if(!modal) return;
const input = modal.querySelector('#headingShareInput');
const copyBtn = modal.querySelector('.hsm-copy');
const twitter = modal.querySelector('#share-twitter');
const linkedin = modal.querySelector('#share-linkedin');
const facebook = modal.querySelector('#share-facebook');
const closeBtn = modal.querySelector('.hsm-close');
let lastFocus=null;
let trapBound=false;
function buildUrl(id){ return window.location.origin + window.location.pathname + '#' + id; }
function isOpen(){ return !modal.hasAttribute('hidden'); }
function hydrate(id){
const url=buildUrl(id);
input.value=url;
const enc=encodeURIComponent(url);
const text=encodeURIComponent(document.title);
if(twitter) twitter.href=`https://twitter.com/intent/tweet?url=${enc}&text=${text}`;
if(linkedin) linkedin.href=`https://www.linkedin.com/sharing/share-offsite/?url=${enc}`;
if(facebook) facebook.href=`https://www.facebook.com/sharer/sharer.php?u=${enc}`;
}
function openModal(id){
lastFocus=document.activeElement;
hydrate(id);
if(!isOpen()){
modal.removeAttribute('hidden');
}
requestAnimationFrame(()=>{ input.focus(); });
trapFocus();
}
function closeModal(){
if(!isOpen()) return;
modal.setAttribute('hidden','');
if(lastFocus && typeof lastFocus.focus==='function') lastFocus.focus();
}
function copyCurrent(){
try{ navigator.clipboard.writeText(input.value).then(()=>feedback(true),()=>fallback()); }
catch(e){ fallback(); }
}
function fallback(){ input.select(); try{ document.execCommand('copy'); feedback(true);}catch(e){ feedback(false);} }
function feedback(ok){ if(!copyBtn) return; const icon=copyBtn.querySelector('i'); if(!icon) return; const prev=copyBtn.getAttribute('data-prev')||icon.className; if(!copyBtn.getAttribute('data-prev')) copyBtn.setAttribute('data-prev',prev); icon.className= ok ? 'fa-duotone fa-clipboard-check':'fa-duotone fa-circle-exclamation'; setTimeout(()=>{ icon.className=prev; },1800); }
function handleShareClick(e){ e.preventDefault(); const btn=e.currentTarget; const id=btn.getAttribute('data-share-target'); if(id) openModal(id); }
function bindShareButtons(){
document.querySelectorAll('.h-share').forEach(btn=>{
if(!btn.dataset.hShareBound){ btn.addEventListener('click', handleShareClick); btn.dataset.hShareBound='1'; }
});
}
bindShareButtons();
if(document.readyState==='loading'){
document.addEventListener('DOMContentLoaded', bindShareButtons);
} else {
requestAnimationFrame(bindShareButtons);
}
document.addEventListener('click', function(e){
const shareBtn=e.target.closest && e.target.closest('.h-share');
if(shareBtn && !shareBtn.dataset.hShareBound){ handleShareClick.call(shareBtn, e); }
}, true);
document.addEventListener('click', e=>{
if(e.target===modal) closeModal();
if(e.target.closest && e.target.closest('.hsm-close')){ e.preventDefault(); closeModal(); }
if(copyBtn && (e.target===copyBtn || (e.target.closest && e.target.closest('.hsm-copy')))) { e.preventDefault(); copyCurrent(); }
});
document.addEventListener('keydown', e=>{ if(e.key==='Escape' && isOpen()) closeModal(); });
function trapFocus(){
if(trapBound) return;
trapBound=true;
modal.addEventListener('keydown', f=>{ if(f.key==='Tab' && isOpen()){ const focusable=[...modal.querySelectorAll('a[href],button,input,textarea,select,[tabindex]:not([tabindex="-1"])')].filter(el=>!el.hasAttribute('disabled')); if(!focusable.length) return; const first=focusable[0]; const last=focusable[focusable.length-1]; if(f.shiftKey && document.activeElement===first){ f.preventDefault(); last.focus(); } else if(!f.shiftKey && document.activeElement===last){ f.preventDefault(); first.focus(); } } });
}
if(closeBtn) closeBtn.addEventListener('click', e=>{ e.preventDefault(); closeModal(); });
})();
</script><p>Geode server configuration encompasses all aspects of running, managing, and optimizing the database server for production workloads. From basic startup parameters to advanced performance tuning, proper server configuration is essential for reliability, performance, and maintainability.</p>
<h3 id="introduction-to-geode-server" class="position-relative d-flex align-items-center group">
<span>Introduction to Geode Server</span>
<button type="button"
class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1"
data-share-target="introduction-to-geode-server"
aria-haspopup="dialog"
aria-label="Share link: Introduction to Geode Server">
<i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i>
<span class="visually-hidden">Share link</span>
</button>
</h3><p>The Geode server is a single-binary application written in Zig that combines the database engine, query processor, network layer, and management interfaces. The server architecture emphasizes simplicity with zero external dependencies (no JVM, no runtime required), high performance through native code compilation, low resource usage with efficient memory management, and easy deployment with a single executable file.</p>
<p>The server supports multiple deployment modes including standalone single-node deployment, clustered multi-node configurations (planned), containerized deployment with Docker/Kubernetes, and embedded mode for testing and development.</p>
<h3 id="basic-server-configuration" class="position-relative d-flex align-items-center group">
<span>Basic Server Configuration</span>
<button type="button"
class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1"
data-share-target="basic-server-configuration"
aria-haspopup="dialog"
aria-label="Share link: Basic Server Configuration">
<i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i>
<span class="visually-hidden">Share link</span>
</button>
</h3>
<h4 id="configuration-file" class="position-relative d-flex align-items-center group">
<span>Configuration File</span>
<button type="button"
class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1"
data-share-target="configuration-file"
aria-haspopup="dialog"
aria-label="Share link: Configuration File">
<i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i>
<span class="visually-hidden">Share link</span>
</button>
</h4><p>Geode uses TOML format for configuration (<code>/etc/geode/geode.conf</code>):</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-toml" data-lang="toml"><span class="line"><span class="cl"><span class="c"># Server identification</span>
</span></span><span class="line"><span class="cl"><span class="p">[</span><span class="nx">server</span><span class="p">]</span>
</span></span><span class="line"><span class="cl"><span class="nx">id</span> <span class="p">=</span> <span class="s2">"geode-01"</span>
</span></span><span class="line"><span class="cl"><span class="nx">name</span> <span class="p">=</span> <span class="s2">"Production Geode Server"</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="c"># Data directory</span>
</span></span><span class="line"><span class="cl"><span class="nx">data_dir</span> <span class="p">=</span> <span class="s2">"/var/lib/geode"</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="c"># Listen address and port</span>
</span></span><span class="line"><span class="cl"><span class="p">[</span><span class="nx">network</span><span class="p">]</span>
</span></span><span class="line"><span class="cl"><span class="nx">listen_address</span> <span class="p">=</span> <span class="s2">"0.0.0.0"</span>
</span></span><span class="line"><span class="cl"><span class="nx">port</span> <span class="p">=</span> <span class="mi">3141</span>
</span></span><span class="line"><span class="cl"><span class="nx">enable_ipv6</span> <span class="p">=</span> <span class="kc">true</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="c"># TLS configuration</span>
</span></span><span class="line"><span class="cl"><span class="p">[</span><span class="nx">network</span><span class="p">.</span><span class="nx">tls</span><span class="p">]</span>
</span></span><span class="line"><span class="cl"><span class="nx">cert_file</span> <span class="p">=</span> <span class="s2">"/etc/geode/tls/server.crt"</span>
</span></span><span class="line"><span class="cl"><span class="nx">key_file</span> <span class="p">=</span> <span class="s2">"/etc/geode/tls/server.key"</span>
</span></span><span class="line"><span class="cl"><span class="nx">require_client_cert</span> <span class="p">=</span> <span class="kc">false</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="c"># Resource limits</span>
</span></span><span class="line"><span class="cl"><span class="p">[</span><span class="nx">resources</span><span class="p">]</span>
</span></span><span class="line"><span class="cl"><span class="nx">max_memory</span> <span class="p">=</span> <span class="s2">"16GB"</span>
</span></span><span class="line"><span class="cl"><span class="nx">max_connections</span> <span class="p">=</span> <span class="mi">10000</span>
</span></span><span class="line"><span class="cl"><span class="nx">worker_threads</span> <span class="p">=</span> <span class="mi">8</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="c"># Logging</span>
</span></span><span class="line"><span class="cl"><span class="p">[</span><span class="nx">logging</span><span class="p">]</span>
</span></span><span class="line"><span class="cl"><span class="nx">level</span> <span class="p">=</span> <span class="s2">"info"</span>
</span></span><span class="line"><span class="cl"><span class="nx">output</span> <span class="p">=</span> <span class="s2">"/var/log/geode/server.log"</span>
</span></span><span class="line"><span class="cl"><span class="nx">rotation</span> <span class="p">=</span> <span class="s2">"daily"</span>
</span></span><span class="line"><span class="cl"><span class="nx">max_size</span> <span class="p">=</span> <span class="s2">"100MB"</span>
</span></span><span class="line"><span class="cl"><span class="nx">max_files</span> <span class="p">=</span> <span class="mi">30</span>
</span></span></code></pre></div>
<h4 id="command-line-options" class="position-relative d-flex align-items-center group">
<span>Command-Line Options</span>
<button type="button"
class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1"
data-share-target="command-line-options"
aria-haspopup="dialog"
aria-label="Share link: Command-Line Options">
<i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i>
<span class="visually-hidden">Share link</span>
</button>
</h4><p>Start server with command-line overrides:</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl"><span class="c1"># Basic startup</span>
</span></span><span class="line"><span class="cl">geode serve --listen 0.0.0.0:3141
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="c1"># With configuration file</span>
</span></span><span class="line"><span class="cl">geode serve --config /etc/geode/geode.conf
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="c1"># Override specific settings</span>
</span></span><span class="line"><span class="cl">geode serve <span class="se">\
</span></span></span><span class="line"><span class="cl"><span class="se"></span> --config /etc/geode/geode.conf <span class="se">\
</span></span></span><span class="line"><span class="cl"><span class="se"></span> --data-dir /data/geode <span class="se">\
</span></span></span><span class="line"><span class="cl"><span class="se"></span> --log-level debug
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="c1"># Daemon mode</span>
</span></span><span class="line"><span class="cl">geode serve --daemon --pid-file /var/run/geode.pid
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="c1"># Development mode (relaxed security)</span>
</span></span><span class="line"><span class="cl">geode serve --dev --listen localhost:3141
</span></span></code></pre></div>
<h4 id="environment-variables" class="position-relative d-flex align-items-center group">
<span>Environment Variables</span>
<button type="button"
class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1"
data-share-target="environment-variables"
aria-haspopup="dialog"
aria-label="Share link: Environment Variables">
<i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i>
<span class="visually-hidden">Share link</span>
</button>
</h4><p>Configure via environment variables:</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl"><span class="c1"># Data directory</span>
</span></span><span class="line"><span class="cl"><span class="nb">export</span> <span class="nv">GEODE_DATA_DIR</span><span class="o">=</span>/var/lib/geode
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="c1"># Listen address</span>
</span></span><span class="line"><span class="cl"><span class="nb">export</span> <span class="nv">GEODE_LISTEN</span><span class="o">=</span>0.0.0.0:3141
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="c1"># Log level</span>
</span></span><span class="line"><span class="cl"><span class="nb">export</span> <span class="nv">GEODE_LOG_LEVEL</span><span class="o">=</span>info
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="c1"># TLS certificates</span>
</span></span><span class="line"><span class="cl"><span class="nb">export</span> <span class="nv">GEODE_TLS_CERT</span><span class="o">=</span>/etc/geode/tls/server.crt
</span></span><span class="line"><span class="cl"><span class="nb">export</span> <span class="nv">GEODE_TLS_KEY</span><span class="o">=</span>/etc/geode/tls/server.key
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="c1"># Start server</span>
</span></span><span class="line"><span class="cl">geode serve
</span></span></code></pre></div>
<h3 id="performance-configuration" class="position-relative d-flex align-items-center group">
<span>Performance Configuration</span>
<button type="button"
class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1"
data-share-target="performance-configuration"
aria-haspopup="dialog"
aria-label="Share link: Performance Configuration">
<i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i>
<span class="visually-hidden">Share link</span>
</button>
</h3>
<h4 id="memory-management" class="position-relative d-flex align-items-center group">
<span>Memory Management</span>
<button type="button"
class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1"
data-share-target="memory-management"
aria-haspopup="dialog"
aria-label="Share link: Memory Management">
<i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i>
<span class="visually-hidden">Share link</span>
</button>
</h4><p>Configure memory allocation and caching:</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-toml" data-lang="toml"><span class="line"><span class="cl"><span class="p">[</span><span class="nx">memory</span><span class="p">]</span>
</span></span><span class="line"><span class="cl"><span class="c"># Maximum heap size</span>
</span></span><span class="line"><span class="cl"><span class="nx">max_heap</span> <span class="p">=</span> <span class="s2">"16GB"</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="c"># Page cache size (for graph storage)</span>
</span></span><span class="line"><span class="cl"><span class="nx">page_cache_size</span> <span class="p">=</span> <span class="s2">"8GB"</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="c"># Query result cache</span>
</span></span><span class="line"><span class="cl"><span class="nx">result_cache_size</span> <span class="p">=</span> <span class="s2">"2GB"</span>
</span></span><span class="line"><span class="cl"><span class="nx">result_cache_ttl</span> <span class="p">=</span> <span class="mi">300</span> <span class="c"># seconds</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="c"># Connection buffer sizes</span>
</span></span><span class="line"><span class="cl"><span class="nx">connection_buffer_size</span> <span class="p">=</span> <span class="s2">"1MB"</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="c"># Memory allocator (system, jemalloc, mimalloc)</span>
</span></span><span class="line"><span class="cl"><span class="nx">allocator</span> <span class="p">=</span> <span class="s2">"jemalloc"</span>
</span></span></code></pre></div>
<h4 id="thread-configuration" class="position-relative d-flex align-items-center group">
<span>Thread Configuration</span>
<button type="button"
class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1"
data-share-target="thread-configuration"
aria-haspopup="dialog"
aria-label="Share link: Thread Configuration">
<i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i>
<span class="visually-hidden">Share link</span>
</button>
</h4><p>Optimize thread pool settings:</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-toml" data-lang="toml"><span class="line"><span class="cl"><span class="p">[</span><span class="nx">threading</span><span class="p">]</span>
</span></span><span class="line"><span class="cl"><span class="c"># Query worker threads (0 = auto-detect CPU cores)</span>
</span></span><span class="line"><span class="cl"><span class="nx">worker_threads</span> <span class="p">=</span> <span class="mi">0</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="c"># IO threads for network operations</span>
</span></span><span class="line"><span class="cl"><span class="nx">io_threads</span> <span class="p">=</span> <span class="mi">4</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="c"># Background tasks (checkpoints, compaction, etc.)</span>
</span></span><span class="line"><span class="cl"><span class="nx">background_threads</span> <span class="p">=</span> <span class="mi">2</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="c"># Thread stack size</span>
</span></span><span class="line"><span class="cl"><span class="nx">stack_size</span> <span class="p">=</span> <span class="s2">"2MB"</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="c"># Thread priority (normal, high, realtime)</span>
</span></span><span class="line"><span class="cl"><span class="nx">priority</span> <span class="p">=</span> <span class="s2">"high"</span>
</span></span></code></pre></div>
<h4 id="query-execution" class="position-relative d-flex align-items-center group">
<span>Query Execution</span>
<button type="button"
class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1"
data-share-target="query-execution"
aria-haspopup="dialog"
aria-label="Share link: Query Execution">
<i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i>
<span class="visually-hidden">Share link</span>
</button>
</h4><p>Configure query processing:</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-toml" data-lang="toml"><span class="line"><span class="cl"><span class="p">[</span><span class="nx">query</span><span class="p">]</span>
</span></span><span class="line"><span class="cl"><span class="c"># Maximum query execution time (milliseconds)</span>
</span></span><span class="line"><span class="cl"><span class="nx">max_execution_time</span> <span class="p">=</span> <span class="mi">300000</span> <span class="c"># 5 minutes</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="c"># Maximum memory per query</span>
</span></span><span class="line"><span class="cl"><span class="nx">max_query_memory</span> <span class="p">=</span> <span class="s2">"1GB"</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="c"># Query result page size</span>
</span></span><span class="line"><span class="cl"><span class="nx">result_page_size</span> <span class="p">=</span> <span class="mi">1000</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="c"># Enable query caching</span>
</span></span><span class="line"><span class="cl"><span class="nx">enable_query_cache</span> <span class="p">=</span> <span class="kc">true</span>
</span></span><span class="line"><span class="cl"><span class="nx">query_cache_size</span> <span class="p">=</span> <span class="s2">"512MB"</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="c"># Parallel query execution</span>
</span></span><span class="line"><span class="cl"><span class="nx">enable_parallel_execution</span> <span class="p">=</span> <span class="kc">true</span>
</span></span><span class="line"><span class="cl"><span class="nx">max_parallel_workers</span> <span class="p">=</span> <span class="mi">4</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="c"># Query timeout for network operations</span>
</span></span><span class="line"><span class="cl"><span class="nx">network_timeout</span> <span class="p">=</span> <span class="mi">30000</span> <span class="c"># 30 seconds</span>
</span></span></code></pre></div>
<h4 id="storage-configuration" class="position-relative d-flex align-items-center group">
<span>Storage Configuration</span>
<button type="button"
class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1"
data-share-target="storage-configuration"
aria-haspopup="dialog"
aria-label="Share link: Storage Configuration">
<i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i>
<span class="visually-hidden">Share link</span>
</button>
</h4><p>Configure storage engine settings:</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-toml" data-lang="toml"><span class="line"><span class="cl"><span class="p">[</span><span class="nx">storage</span><span class="p">]</span>
</span></span><span class="line"><span class="cl"><span class="c"># Storage engine (btree, lsm)</span>
</span></span><span class="line"><span class="cl"><span class="nx">engine</span> <span class="p">=</span> <span class="s2">"btree"</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="c"># Write-Ahead Log settings</span>
</span></span><span class="line"><span class="cl"><span class="p">[</span><span class="nx">storage</span><span class="p">.</span><span class="nx">wal</span><span class="p">]</span>
</span></span><span class="line"><span class="cl"><span class="nx">enabled</span> <span class="p">=</span> <span class="kc">true</span>
</span></span><span class="line"><span class="cl"><span class="nx">dir</span> <span class="p">=</span> <span class="s2">"/var/lib/geode/wal"</span>
</span></span><span class="line"><span class="cl"><span class="nx">segment_size</span> <span class="p">=</span> <span class="s2">"64MB"</span>
</span></span><span class="line"><span class="cl"><span class="nx">fsync_mode</span> <span class="p">=</span> <span class="s2">"everysec"</span> <span class="c"># never, everysec, always</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="c"># Checkpoint frequency</span>
</span></span><span class="line"><span class="cl"><span class="nx">checkpoint_interval</span> <span class="p">=</span> <span class="mi">300</span> <span class="c"># seconds</span>
</span></span><span class="line"><span class="cl"><span class="nx">checkpoint_threshold</span> <span class="p">=</span> <span class="s2">"1GB"</span> <span class="c"># WAL size</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="c"># Compaction</span>
</span></span><span class="line"><span class="cl"><span class="p">[</span><span class="nx">storage</span><span class="p">.</span><span class="nx">compaction</span><span class="p">]</span>
</span></span><span class="line"><span class="cl"><span class="nx">enabled</span> <span class="p">=</span> <span class="kc">true</span>
</span></span><span class="line"><span class="cl"><span class="nx">strategy</span> <span class="p">=</span> <span class="s2">"incremental"</span> <span class="c"># incremental, full</span>
</span></span><span class="line"><span class="cl"><span class="nx">schedule</span> <span class="p">=</span> <span class="s2">"0 2 * * *"</span> <span class="c"># cron format</span>
</span></span><span class="line"><span class="cl"><span class="nx">max_threads</span> <span class="p">=</span> <span class="mi">2</span>
</span></span></code></pre></div>
<h3 id="security-configuration" class="position-relative d-flex align-items-center group">
<span>Security Configuration</span>
<button type="button"
class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1"
data-share-target="security-configuration"
aria-haspopup="dialog"
aria-label="Share link: Security Configuration">
<i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i>
<span class="visually-hidden">Share link</span>
</button>
</h3>
<h4 id="authentication" class="position-relative d-flex align-items-center group">
<span>Authentication</span>
<button type="button"
class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1"
data-share-target="authentication"
aria-haspopup="dialog"
aria-label="Share link: Authentication">
<i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i>
<span class="visually-hidden">Share link</span>
</button>
</h4><p>Configure authentication methods:</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-toml" data-lang="toml"><span class="line"><span class="cl"><span class="p">[</span><span class="nx">auth</span><span class="p">]</span>
</span></span><span class="line"><span class="cl"><span class="c"># Enable authentication</span>
</span></span><span class="line"><span class="cl"><span class="nx">enabled</span> <span class="p">=</span> <span class="kc">true</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="c"># Authentication methods (password, cert, ldap, oauth)</span>
</span></span><span class="line"><span class="cl"><span class="nx">methods</span> <span class="p">=</span> <span class="p">[</span><span class="s2">"password"</span><span class="p">,</span> <span class="s2">"cert"</span><span class="p">]</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="c"># Password policy</span>
</span></span><span class="line"><span class="cl"><span class="p">[</span><span class="nx">auth</span><span class="p">.</span><span class="nx">password</span><span class="p">]</span>
</span></span><span class="line"><span class="cl"><span class="nx">min_length</span> <span class="p">=</span> <span class="mi">12</span>
</span></span><span class="line"><span class="cl"><span class="nx">require_uppercase</span> <span class="p">=</span> <span class="kc">true</span>
</span></span><span class="line"><span class="cl"><span class="nx">require_lowercase</span> <span class="p">=</span> <span class="kc">true</span>
</span></span><span class="line"><span class="cl"><span class="nx">require_numbers</span> <span class="p">=</span> <span class="kc">true</span>
</span></span><span class="line"><span class="cl"><span class="nx">require_special</span> <span class="p">=</span> <span class="kc">true</span>
</span></span><span class="line"><span class="cl"><span class="nx">max_age_days</span> <span class="p">=</span> <span class="mi">90</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="c"># Session configuration</span>
</span></span><span class="line"><span class="cl"><span class="p">[</span><span class="nx">auth</span><span class="p">.</span><span class="nx">session</span><span class="p">]</span>
</span></span><span class="line"><span class="cl"><span class="nx">timeout</span> <span class="p">=</span> <span class="mi">3600</span> <span class="c"># seconds</span>
</span></span><span class="line"><span class="cl"><span class="nx">max_concurrent_sessions</span> <span class="p">=</span> <span class="mi">10</span>
</span></span></code></pre></div>
<h4 id="access-control" class="position-relative d-flex align-items-center group">
<span>Access Control</span>
<button type="button"
class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1"
data-share-target="access-control"
aria-haspopup="dialog"
aria-label="Share link: Access Control">
<i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i>
<span class="visually-hidden">Share link</span>
</button>
</h4><p>Configure role-based access control:</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-toml" data-lang="toml"><span class="line"><span class="cl"><span class="p">[</span><span class="nx">access_control</span><span class="p">]</span>
</span></span><span class="line"><span class="cl"><span class="c"># Enable authorization</span>
</span></span><span class="line"><span class="cl"><span class="nx">enabled</span> <span class="p">=</span> <span class="kc">true</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="c"># Default role for authenticated users</span>
</span></span><span class="line"><span class="cl"><span class="nx">default_role</span> <span class="p">=</span> <span class="s2">"read_only"</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="c"># Admin users (full access)</span>
</span></span><span class="line"><span class="cl"><span class="nx">admin_users</span> <span class="p">=</span> <span class="p">[</span><span class="s2">"admin"</span><span class="p">,</span> <span class="s2">"root"</span><span class="p">]</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="c"># Audit logging</span>
</span></span><span class="line"><span class="cl"><span class="p">[</span><span class="nx">access_control</span><span class="p">.</span><span class="nx">audit</span><span class="p">]</span>
</span></span><span class="line"><span class="cl"><span class="nx">enabled</span> <span class="p">=</span> <span class="kc">true</span>
</span></span><span class="line"><span class="cl"><span class="nx">log_file</span> <span class="p">=</span> <span class="s2">"/var/log/geode/audit.log"</span>
</span></span><span class="line"><span class="cl"><span class="nx">log_queries</span> <span class="p">=</span> <span class="kc">true</span>
</span></span><span class="line"><span class="cl"><span class="nx">log_connections</span> <span class="p">=</span> <span class="kc">true</span>
</span></span><span class="line"><span class="cl"><span class="nx">log_admin_actions</span> <span class="p">=</span> <span class="kc">true</span>
</span></span></code></pre></div>
<h4 id="encryption" class="position-relative d-flex align-items-center group">
<span>Encryption</span>
<button type="button"
class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1"
data-share-target="encryption"
aria-haspopup="dialog"
aria-label="Share link: Encryption">
<i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i>
<span class="visually-hidden">Share link</span>
</button>
</h4><p>Configure encryption at rest and in transit:</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-toml" data-lang="toml"><span class="line"><span class="cl"><span class="p">[</span><span class="nx">encryption</span><span class="p">]</span>
</span></span><span class="line"><span class="cl"><span class="c"># Transparent Data Encryption (TDE)</span>
</span></span><span class="line"><span class="cl"><span class="p">[</span><span class="nx">encryption</span><span class="p">.</span><span class="nx">tde</span><span class="p">]</span>
</span></span><span class="line"><span class="cl"><span class="nx">enabled</span> <span class="p">=</span> <span class="kc">true</span>
</span></span><span class="line"><span class="cl"><span class="nx">key_file</span> <span class="p">=</span> <span class="s2">"/etc/geode/keys/master.key"</span>
</span></span><span class="line"><span class="cl"><span class="nx">algorithm</span> <span class="p">=</span> <span class="s2">"AES-256-GCM"</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="c"># Field-Level Encryption (FLE)</span>
</span></span><span class="line"><span class="cl"><span class="p">[</span><span class="nx">encryption</span><span class="p">.</span><span class="nx">fle</span><span class="p">]</span>
</span></span><span class="line"><span class="cl"><span class="nx">enabled</span> <span class="p">=</span> <span class="kc">true</span>
</span></span><span class="line"><span class="cl"><span class="nx">key_provider</span> <span class="p">=</span> <span class="s2">"vault"</span> <span class="c"># vault, file, kms</span>
</span></span><span class="line"><span class="cl"><span class="nx">vault_url</span> <span class="p">=</span> <span class="s2">"https://vault.example.com"</span>
</span></span><span class="line"><span class="cl"><span class="nx">vault_token</span> <span class="p">=</span> <span class="s2">"${VAULT_TOKEN}"</span>
</span></span></code></pre></div>
<h3 id="monitoring-configuration" class="position-relative d-flex align-items-center group">
<span>Monitoring Configuration</span>
<button type="button"
class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1"
data-share-target="monitoring-configuration"
aria-haspopup="dialog"
aria-label="Share link: Monitoring Configuration">
<i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i>
<span class="visually-hidden">Share link</span>
</button>
</h3>
<h4 id="metrics-and-telemetry" class="position-relative d-flex align-items-center group">
<span>Metrics and Telemetry</span>
<button type="button"
class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1"
data-share-target="metrics-and-telemetry"
aria-haspopup="dialog"
aria-label="Share link: Metrics and Telemetry">
<i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i>
<span class="visually-hidden">Share link</span>
</button>
</h4><p>Configure metrics collection:</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-toml" data-lang="toml"><span class="line"><span class="cl"><span class="p">[</span><span class="nx">metrics</span><span class="p">]</span>
</span></span><span class="line"><span class="cl"><span class="c"># Enable metrics</span>
</span></span><span class="line"><span class="cl"><span class="nx">enabled</span> <span class="p">=</span> <span class="kc">true</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="c"># Metrics collection interval</span>
</span></span><span class="line"><span class="cl"><span class="nx">interval</span> <span class="p">=</span> <span class="mi">10</span> <span class="c"># seconds</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="c"># Prometheus exporter</span>
</span></span><span class="line"><span class="cl"><span class="p">[</span><span class="nx">metrics</span><span class="p">.</span><span class="nx">prometheus</span><span class="p">]</span>
</span></span><span class="line"><span class="cl"><span class="nx">enabled</span> <span class="p">=</span> <span class="kc">true</span>
</span></span><span class="line"><span class="cl"><span class="nx">port</span> <span class="p">=</span> <span class="mi">9090</span>
</span></span><span class="line"><span class="cl"><span class="nx">path</span> <span class="p">=</span> <span class="s2">"/metrics"</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="c"># OpenTelemetry</span>
</span></span><span class="line"><span class="cl"><span class="p">[</span><span class="nx">metrics</span><span class="p">.</span><span class="nx">otel</span><span class="p">]</span>
</span></span><span class="line"><span class="cl"><span class="nx">enabled</span> <span class="p">=</span> <span class="kc">false</span>
</span></span><span class="line"><span class="cl"><span class="nx">endpoint</span> <span class="p">=</span> <span class="s2">"http://otel-collector:4317"</span>
</span></span></code></pre></div>
<h4 id="health-checks" class="position-relative d-flex align-items-center group">
<span>Health Checks</span>
<button type="button"
class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1"
data-share-target="health-checks"
aria-haspopup="dialog"
aria-label="Share link: Health Checks">
<i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i>
<span class="visually-hidden">Share link</span>
</button>
</h4><p>Configure health check endpoints:</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-toml" data-lang="toml"><span class="line"><span class="cl"><span class="p">[</span><span class="nx">health</span><span class="p">]</span>
</span></span><span class="line"><span class="cl"><span class="c"># Enable health checks</span>
</span></span><span class="line"><span class="cl"><span class="nx">enabled</span> <span class="p">=</span> <span class="kc">true</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="c"># Health check port</span>
</span></span><span class="line"><span class="cl"><span class="nx">port</span> <span class="p">=</span> <span class="mi">8080</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="c"># Liveness probe endpoint</span>
</span></span><span class="line"><span class="cl"><span class="nx">liveness_path</span> <span class="p">=</span> <span class="s2">"/health/live"</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="c"># Readiness probe endpoint</span>
</span></span><span class="line"><span class="cl"><span class="nx">readiness_path</span> <span class="p">=</span> <span class="s2">"/health/ready"</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="c"># Health check interval</span>
</span></span><span class="line"><span class="cl"><span class="nx">check_interval</span> <span class="p">=</span> <span class="mi">5</span> <span class="c"># seconds</span>
</span></span></code></pre></div>
<h4 id="logging-configuration" class="position-relative d-flex align-items-center group">
<span>Logging Configuration</span>
<button type="button"
class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1"
data-share-target="logging-configuration"
aria-haspopup="dialog"
aria-label="Share link: Logging Configuration">
<i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i>
<span class="visually-hidden">Share link</span>
</button>
</h4><p>Advanced logging settings:</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-toml" data-lang="toml"><span class="line"><span class="cl"><span class="p">[</span><span class="nx">logging</span><span class="p">]</span>
</span></span><span class="line"><span class="cl"><span class="c"># Log level (debug, info, warn, error)</span>
</span></span><span class="line"><span class="cl"><span class="nx">level</span> <span class="p">=</span> <span class="s2">"info"</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="c"># Output destination</span>
</span></span><span class="line"><span class="cl"><span class="nx">output</span> <span class="p">=</span> <span class="s2">"/var/log/geode/server.log"</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="c"># Log format (json, text)</span>
</span></span><span class="line"><span class="cl"><span class="nx">format</span> <span class="p">=</span> <span class="s2">"json"</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="c"># Structured logging fields</span>
</span></span><span class="line"><span class="cl"><span class="p">[</span><span class="nx">logging</span><span class="p">.</span><span class="nx">fields</span><span class="p">]</span>
</span></span><span class="line"><span class="cl"><span class="nx">service</span> <span class="p">=</span> <span class="s2">"geode"</span>
</span></span><span class="line"><span class="cl"><span class="nx">environment</span> <span class="p">=</span> <span class="s2">"production"</span>
</span></span><span class="line"><span class="cl"><span class="nx">datacenter</span> <span class="p">=</span> <span class="s2">"us-east-1"</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="c"># Log rotation</span>
</span></span><span class="line"><span class="cl"><span class="nx">rotation</span> <span class="p">=</span> <span class="s2">"daily"</span> <span class="c"># daily, hourly, size</span>
</span></span><span class="line"><span class="cl"><span class="nx">max_size</span> <span class="p">=</span> <span class="s2">"100MB"</span>
</span></span><span class="line"><span class="cl"><span class="nx">max_files</span> <span class="p">=</span> <span class="mi">30</span>
</span></span><span class="line"><span class="cl"><span class="nx">compress</span> <span class="p">=</span> <span class="kc">true</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="c"># Separate log files by level</span>
</span></span><span class="line"><span class="cl"><span class="p">[</span><span class="nx">logging</span><span class="p">.</span><span class="nx">files</span><span class="p">]</span>
</span></span><span class="line"><span class="cl"><span class="nx">error</span> <span class="p">=</span> <span class="s2">"/var/log/geode/error.log"</span>
</span></span><span class="line"><span class="cl"><span class="nx">audit</span> <span class="p">=</span> <span class="s2">"/var/log/geode/audit.log"</span>
</span></span><span class="line"><span class="cl"><span class="nx">query</span> <span class="p">=</span> <span class="s2">"/var/log/geode/query.log"</span>
</span></span></code></pre></div>
<h3 id="high-availability-configuration" class="position-relative d-flex align-items-center group">
<span>High Availability Configuration</span>
<button type="button"
class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1"
data-share-target="high-availability-configuration"
aria-haspopup="dialog"
aria-label="Share link: High Availability Configuration">
<i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i>
<span class="visually-hidden">Share link</span>
</button>
</h3>
<h4 id="replication-settings" class="position-relative d-flex align-items-center group">
<span>Replication Settings</span>
<button type="button"
class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1"
data-share-target="replication-settings"
aria-haspopup="dialog"
aria-label="Share link: Replication Settings">
<i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i>
<span class="visually-hidden">Share link</span>
</button>
</h4><p>Configure replication for HA deployments:</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-toml" data-lang="toml"><span class="line"><span class="cl"><span class="p">[</span><span class="nx">replication</span><span class="p">]</span>
</span></span><span class="line"><span class="cl"><span class="c"># Enable replication</span>
</span></span><span class="line"><span class="cl"><span class="nx">enabled</span> <span class="p">=</span> <span class="kc">true</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="c"># Replication mode (sync, async, semi-sync)</span>
</span></span><span class="line"><span class="cl"><span class="nx">mode</span> <span class="p">=</span> <span class="s2">"semi-sync"</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="c"># Primary server configuration</span>
</span></span><span class="line"><span class="cl"><span class="p">[</span><span class="nx">replication</span><span class="p">.</span><span class="nx">primary</span><span class="p">]</span>
</span></span><span class="line"><span class="cl"><span class="nx">enabled</span> <span class="p">=</span> <span class="kc">true</span>
</span></span><span class="line"><span class="cl"><span class="nx">bind_address</span> <span class="p">=</span> <span class="s2">"0.0.0.0:3142"</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="c"># Replica configuration</span>
</span></span><span class="line"><span class="cl"><span class="p">[</span><span class="nx">replication</span><span class="p">.</span><span class="nx">replica</span><span class="p">]</span>
</span></span><span class="line"><span class="cl"><span class="nx">enabled</span> <span class="p">=</span> <span class="kc">false</span>
</span></span><span class="line"><span class="cl"><span class="nx">primary_host</span> <span class="p">=</span> <span class="s2">"geode-primary:3142"</span>
</span></span><span class="line"><span class="cl"><span class="nx">replication_lag_threshold</span> <span class="p">=</span> <span class="mi">1000</span> <span class="c"># milliseconds</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="c"># Automatic failover</span>
</span></span><span class="line"><span class="cl"><span class="p">[</span><span class="nx">replication</span><span class="p">.</span><span class="nx">failover</span><span class="p">]</span>
</span></span><span class="line"><span class="cl"><span class="nx">enabled</span> <span class="p">=</span> <span class="kc">true</span>
</span></span><span class="line"><span class="cl"><span class="nx">election_timeout</span> <span class="p">=</span> <span class="mi">10000</span> <span class="c"># milliseconds</span>
</span></span><span class="line"><span class="cl"><span class="nx">heartbeat_interval</span> <span class="p">=</span> <span class="mi">1000</span> <span class="c"># milliseconds</span>
</span></span></code></pre></div>
<h4 id="clustering" class="position-relative d-flex align-items-center group">
<span>Clustering</span>
<button type="button"
class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1"
data-share-target="clustering"
aria-haspopup="dialog"
aria-label="Share link: Clustering">
<i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i>
<span class="visually-hidden">Share link</span>
</button>
</h4><p>Configure multi-node clustering (planned feature):</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-toml" data-lang="toml"><span class="line"><span class="cl"><span class="p">[</span><span class="nx">cluster</span><span class="p">]</span>
</span></span><span class="line"><span class="cl"><span class="c"># Enable clustering</span>
</span></span><span class="line"><span class="cl"><span class="nx">enabled</span> <span class="p">=</span> <span class="kc">true</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="c"># Cluster name</span>
</span></span><span class="line"><span class="cl"><span class="nx">name</span> <span class="p">=</span> <span class="s2">"geode-production"</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="c"># Cluster nodes</span>
</span></span><span class="line"><span class="cl"><span class="nx">nodes</span> <span class="p">=</span> <span class="p">[</span>
</span></span><span class="line"><span class="cl"> <span class="s2">"geode-01:3141"</span><span class="p">,</span>
</span></span><span class="line"><span class="cl"> <span class="s2">"geode-02:3141"</span><span class="p">,</span>
</span></span><span class="line"><span class="cl"> <span class="s2">"geode-03:3141"</span>
</span></span><span class="line"><span class="cl"><span class="p">]</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="c"># Consensus algorithm (raft)</span>
</span></span><span class="line"><span class="cl"><span class="nx">consensus</span> <span class="p">=</span> <span class="s2">"raft"</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="c"># Data sharding</span>
</span></span><span class="line"><span class="cl"><span class="p">[</span><span class="nx">cluster</span><span class="p">.</span><span class="nx">sharding</span><span class="p">]</span>
</span></span><span class="line"><span class="cl"><span class="nx">enabled</span> <span class="p">=</span> <span class="kc">true</span>
</span></span><span class="line"><span class="cl"><span class="nx">shards</span> <span class="p">=</span> <span class="mi">16</span>
</span></span><span class="line"><span class="cl"><span class="nx">replication_factor</span> <span class="p">=</span> <span class="mi">3</span>
</span></span></code></pre></div>
<h3 id="resource-limits" class="position-relative d-flex align-items-center group">
<span>Resource Limits</span>
<button type="button"
class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1"
data-share-target="resource-limits"
aria-haspopup="dialog"
aria-label="Share link: Resource Limits">
<i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i>
<span class="visually-hidden">Share link</span>
</button>
</h3>
<h4 id="connection-limits" class="position-relative d-flex align-items-center group">
<span>Connection Limits</span>
<button type="button"
class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1"
data-share-target="connection-limits"
aria-haspopup="dialog"
aria-label="Share link: Connection Limits">
<i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i>
<span class="visually-hidden">Share link</span>
</button>
</h4><p>Configure connection and resource limits:</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-toml" data-lang="toml"><span class="line"><span class="cl"><span class="p">[</span><span class="nx">limits</span><span class="p">]</span>
</span></span><span class="line"><span class="cl"><span class="c"># Maximum concurrent connections</span>
</span></span><span class="line"><span class="cl"><span class="nx">max_connections</span> <span class="p">=</span> <span class="mi">10000</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="c"># Maximum connections per client IP</span>
</span></span><span class="line"><span class="cl"><span class="nx">max_connections_per_ip</span> <span class="p">=</span> <span class="mi">100</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="c"># Connection queue size</span>
</span></span><span class="line"><span class="cl"><span class="nx">connection_queue_size</span> <span class="p">=</span> <span class="mi">1000</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="c"># Maximum request size</span>
</span></span><span class="line"><span class="cl"><span class="nx">max_request_size</span> <span class="p">=</span> <span class="s2">"10MB"</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="c"># Maximum response size</span>
</span></span><span class="line"><span class="cl"><span class="nx">max_response_size</span> <span class="p">=</span> <span class="s2">"100MB"</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="c"># Rate limiting</span>
</span></span><span class="line"><span class="cl"><span class="p">[</span><span class="nx">limits</span><span class="p">.</span><span class="nx">rate</span><span class="p">]</span>
</span></span><span class="line"><span class="cl"><span class="nx">enabled</span> <span class="p">=</span> <span class="kc">true</span>
</span></span><span class="line"><span class="cl"><span class="nx">requests_per_second</span> <span class="p">=</span> <span class="mi">10000</span>
</span></span><span class="line"><span class="cl"><span class="nx">burst_size</span> <span class="p">=</span> <span class="mi">1000</span>
</span></span></code></pre></div>
<h4 id="query-limits" class="position-relative d-flex align-items-center group">
<span>Query Limits</span>
<button type="button"
class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1"
data-share-target="query-limits"
aria-haspopup="dialog"
aria-label="Share link: Query Limits">
<i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i>
<span class="visually-hidden">Share link</span>
</button>
</h4><p>Prevent resource exhaustion from expensive queries:</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-toml" data-lang="toml"><span class="line"><span class="cl"><span class="p">[</span><span class="nx">limits</span><span class="p">.</span><span class="nx">query</span><span class="p">]</span>
</span></span><span class="line"><span class="cl"><span class="c"># Maximum query execution time</span>
</span></span><span class="line"><span class="cl"><span class="nx">max_execution_time</span> <span class="p">=</span> <span class="mi">300000</span> <span class="c"># 5 minutes</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="c"># Maximum result set size</span>
</span></span><span class="line"><span class="cl"><span class="nx">max_result_rows</span> <span class="p">=</span> <span class="mi">1000000</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="c"># Maximum traversal depth</span>
</span></span><span class="line"><span class="cl"><span class="nx">max_path_length</span> <span class="p">=</span> <span class="mi">10</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="c"># Maximum concurrent queries per connection</span>
</span></span><span class="line"><span class="cl"><span class="nx">max_concurrent_queries</span> <span class="p">=</span> <span class="mi">10</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="c"># Query complexity limits</span>
</span></span><span class="line"><span class="cl"><span class="nx">max_query_complexity</span> <span class="p">=</span> <span class="mi">10000</span> <span class="c"># cost units</span>
</span></span></code></pre></div>
<h3 id="deployment-configurations" class="position-relative d-flex align-items-center group">
<span>Deployment Configurations</span>
<button type="button"
class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1"
data-share-target="deployment-configurations"
aria-haspopup="dialog"
aria-label="Share link: Deployment Configurations">
<i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i>
<span class="visually-hidden">Share link</span>
</button>
</h3>
<h4 id="systemd-service" class="position-relative d-flex align-items-center group">
<span>Systemd Service</span>
<button type="button"
class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1"
data-share-target="systemd-service"
aria-haspopup="dialog"
aria-label="Share link: Systemd Service">
<i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i>
<span class="visually-hidden">Share link</span>
</button>
</h4><p>Create systemd service file (<code>/etc/systemd/system/geode.service</code>):</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-ini" data-lang="ini"><span class="line"><span class="cl"><span class="k">[Unit]</span>
</span></span><span class="line"><span class="cl"><span class="na">Description</span><span class="o">=</span><span class="s">Geode Graph Database</span>
</span></span><span class="line"><span class="cl"><span class="na">After</span><span class="o">=</span><span class="s">network.target</span>
</span></span><span class="line"><span class="cl"><span class="na">Wants</span><span class="o">=</span><span class="s">network-online.target</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="k">[Service]</span>
</span></span><span class="line"><span class="cl"><span class="na">Type</span><span class="o">=</span><span class="s">notify</span>
</span></span><span class="line"><span class="cl"><span class="na">User</span><span class="o">=</span><span class="s">geode</span>
</span></span><span class="line"><span class="cl"><span class="na">Group</span><span class="o">=</span><span class="s">geode</span>
</span></span><span class="line"><span class="cl"><span class="na">ExecStart</span><span class="o">=</span><span class="s">/usr/bin/geode serve --config /etc/geode/geode.conf</span>
</span></span><span class="line"><span class="cl"><span class="na">ExecReload</span><span class="o">=</span><span class="s">/bin/kill -HUP $MAINPID</span>
</span></span><span class="line"><span class="cl"><span class="na">Restart</span><span class="o">=</span><span class="s">always</span>
</span></span><span class="line"><span class="cl"><span class="na">RestartSec</span><span class="o">=</span><span class="s">10s</span>
</span></span><span class="line"><span class="cl"><span class="na">LimitNOFILE</span><span class="o">=</span><span class="s">65536</span>
</span></span><span class="line"><span class="cl"><span class="na">LimitNPROC</span><span class="o">=</span><span class="s">4096</span>
</span></span><span class="line"><span class="cl"><span class="na">StandardOutput</span><span class="o">=</span><span class="s">journal</span>
</span></span><span class="line"><span class="cl"><span class="na">StandardError</span><span class="o">=</span><span class="s">journal</span>
</span></span><span class="line"><span class="cl"><span class="na">SyslogIdentifier</span><span class="o">=</span><span class="s">geode</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="c1"># Security hardening</span>
</span></span><span class="line"><span class="cl"><span class="na">NoNewPrivileges</span><span class="o">=</span><span class="s">true</span>
</span></span><span class="line"><span class="cl"><span class="na">PrivateTmp</span><span class="o">=</span><span class="s">true</span>
</span></span><span class="line"><span class="cl"><span class="na">ProtectSystem</span><span class="o">=</span><span class="s">strict</span>
</span></span><span class="line"><span class="cl"><span class="na">ProtectHome</span><span class="o">=</span><span class="s">true</span>
</span></span><span class="line"><span class="cl"><span class="na">ReadWritePaths</span><span class="o">=</span><span class="s">/var/lib/geode /var/log/geode</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="k">[Install]</span>
</span></span><span class="line"><span class="cl"><span class="na">WantedBy</span><span class="o">=</span><span class="s">multi-user.target</span>
</span></span></code></pre></div><p>Manage service:</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl"><span class="c1"># Enable and start</span>
</span></span><span class="line"><span class="cl">sudo systemctl <span class="nb">enable</span> geode
</span></span><span class="line"><span class="cl">sudo systemctl start geode
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="c1"># Check status</span>
</span></span><span class="line"><span class="cl">sudo systemctl status geode
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="c1"># View logs</span>
</span></span><span class="line"><span class="cl">sudo journalctl -u geode -f
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="c1"># Reload configuration</span>
</span></span><span class="line"><span class="cl">sudo systemctl reload geode
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="c1"># Restart service</span>
</span></span><span class="line"><span class="cl">sudo systemctl restart geode
</span></span></code></pre></div>
<h4 id="docker-configuration" class="position-relative d-flex align-items-center group">
<span>Docker Configuration</span>
<button type="button"
class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1"
data-share-target="docker-configuration"
aria-haspopup="dialog"
aria-label="Share link: Docker Configuration">
<i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i>
<span class="visually-hidden">Share link</span>
</button>
</h4><p>Dockerfile for containerized deployment:</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-dockerfile" data-lang="dockerfile"><span class="line"><span class="cl"><span class="k">FROM</span><span class="s"> alpine:latest</span><span class="err">
</span></span></span><span class="line"><span class="cl"><span class="err">
</span></span></span><span class="line"><span class="cl"><span class="err"></span><span class="c"># Install dependencies</span><span class="err">
</span></span></span><span class="line"><span class="cl"><span class="err"></span><span class="k">RUN</span> apk add --no-cache ca-certificates tzdata<span class="err">
</span></span></span><span class="line"><span class="cl"><span class="err">
</span></span></span><span class="line"><span class="cl"><span class="err"></span><span class="c"># Create user</span><span class="err">
</span></span></span><span class="line"><span class="cl"><span class="err"></span><span class="k">RUN</span> addgroup -g <span class="m">3141</span> geode <span class="o">&&</span> <span class="se">\
</span></span></span><span class="line"><span class="cl"><span class="se"></span> adduser -D -u <span class="m">3141</span> -G geode geode<span class="err">
</span></span></span><span class="line"><span class="cl"><span class="err">
</span></span></span><span class="line"><span class="cl"><span class="err"></span><span class="c"># Copy binary</span><span class="err">
</span></span></span><span class="line"><span class="cl"><span class="err"></span><span class="k">COPY</span> --chown<span class="o">=</span>geode:geode geode /usr/local/bin/geode<span class="err">
</span></span></span><span class="line"><span class="cl"><span class="err">
</span></span></span><span class="line"><span class="cl"><span class="err"></span><span class="c"># Create directories</span><span class="err">
</span></span></span><span class="line"><span class="cl"><span class="err"></span><span class="k">RUN</span> mkdir -p /var/lib/geode /var/log/geode <span class="o">&&</span> <span class="se">\
</span></span></span><span class="line"><span class="cl"><span class="se"></span> chown -R geode:geode /var/lib/geode /var/log/geode<span class="err">
</span></span></span><span class="line"><span class="cl"><span class="err">
</span></span></span><span class="line"><span class="cl"><span class="err"></span><span class="c"># Switch to geode user</span><span class="err">
</span></span></span><span class="line"><span class="cl"><span class="err"></span><span class="k">USER</span><span class="s"> geode</span><span class="err">
</span></span></span><span class="line"><span class="cl"><span class="err">
</span></span></span><span class="line"><span class="cl"><span class="err"></span><span class="c"># Expose ports</span><span class="err">
</span></span></span><span class="line"><span class="cl"><span class="err"></span><span class="k">EXPOSE</span><span class="s"> 3141</span><span class="err">
</span></span></span><span class="line"><span class="cl"><span class="err">
</span></span></span><span class="line"><span class="cl"><span class="err"></span><span class="c"># Health check</span><span class="err">
</span></span></span><span class="line"><span class="cl"><span class="err">HEALTHCHECK --interval=10s --timeout=5s </span>--start-period<span class="o">=</span>30s <span class="se">\
</span></span></span><span class="line"><span class="cl"><span class="se"></span> CMD geode admin health <span class="o">||</span> <span class="nb">exit</span> <span class="m">1</span><span class="err">
</span></span></span><span class="line"><span class="cl"><span class="err">
</span></span></span><span class="line"><span class="cl"><span class="err"></span><span class="c"># Start server</span><span class="err">
</span></span></span><span class="line"><span class="cl"><span class="err"></span><span class="k">ENTRYPOINT</span> <span class="p">[</span><span class="s2">"/usr/local/bin/geode"</span><span class="p">]</span><span class="err">
</span></span></span><span class="line"><span class="cl"><span class="err"></span><span class="k">CMD</span> <span class="p">[</span><span class="s2">"serve"</span><span class="p">,</span> <span class="s2">"--listen"</span><span class="p">,</span> <span class="s2">"0.0.0.0:3141"</span><span class="p">]</span><span class="err">
</span></span></span></code></pre></div><p>Docker Compose configuration:</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-yaml" data-lang="yaml"><span class="line"><span class="cl"><span class="nt">version</span><span class="p">:</span><span class="w"> </span><span class="s1">'3.8'</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="nt">services</span><span class="p">:</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">geode</span><span class="p">:</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">image</span><span class="p">:</span><span class="w"> </span><span class="l">geode:latest</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">container_name</span><span class="p">:</span><span class="w"> </span><span class="l">geode</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">ports</span><span class="p">:</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span>- <span class="s2">"3141:3141"</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">volumes</span><span class="p">:</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span>- <span class="l">geode-data:/var/lib/geode</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span>- <span class="l">geode-logs:/var/log/geode</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span>- <span class="l">./geode.conf:/etc/geode/geode.conf:ro</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">environment</span><span class="p">:</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span>- <span class="l">GEODE_LOG_LEVEL=info</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">restart</span><span class="p">:</span><span class="w"> </span><span class="l">unless-stopped</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">networks</span><span class="p">:</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span>- <span class="l">geode-network</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="nt">volumes</span><span class="p">:</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">geode-data</span><span class="p">:</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">geode-logs</span><span class="p">:</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="nt">networks</span><span class="p">:</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">geode-network</span><span class="p">:</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">driver</span><span class="p">:</span><span class="w"> </span><span class="l">bridge</span><span class="w">
</span></span></span></code></pre></div>
<h4 id="kubernetes-deployment" class="position-relative d-flex align-items-center group">
<span>Kubernetes Deployment</span>
<button type="button"
class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1"
data-share-target="kubernetes-deployment"
aria-haspopup="dialog"
aria-label="Share link: Kubernetes Deployment">
<i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i>
<span class="visually-hidden">Share link</span>
</button>
</h4><p>Kubernetes StatefulSet configuration:</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-yaml" data-lang="yaml"><span class="line"><span class="cl"><span class="nt">apiVersion</span><span class="p">:</span><span class="w"> </span><span class="l">apps/v1</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="nt">kind</span><span class="p">:</span><span class="w"> </span><span class="l">StatefulSet</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="nt">metadata</span><span class="p">:</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">name</span><span class="p">:</span><span class="w"> </span><span class="l">geode</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="nt">spec</span><span class="p">:</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">serviceName</span><span class="p">:</span><span class="w"> </span><span class="l">geode</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">replicas</span><span class="p">:</span><span class="w"> </span><span class="m">3</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">selector</span><span class="p">:</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">matchLabels</span><span class="p">:</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">app</span><span class="p">:</span><span class="w"> </span><span class="l">geode</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">template</span><span class="p">:</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">metadata</span><span class="p">:</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">labels</span><span class="p">:</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">app</span><span class="p">:</span><span class="w"> </span><span class="l">geode</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">spec</span><span class="p">:</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">containers</span><span class="p">:</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span>- <span class="nt">name</span><span class="p">:</span><span class="w"> </span><span class="l">geode</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">image</span><span class="p">:</span><span class="w"> </span><span class="l">geode:0.2.18</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">ports</span><span class="p">:</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span>- <span class="nt">containerPort</span><span class="p">:</span><span class="w"> </span><span class="m">3141</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">name</span><span class="p">:</span><span class="w"> </span><span class="l">client</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span>- <span class="nt">containerPort</span><span class="p">:</span><span class="w"> </span><span class="m">3142</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">name</span><span class="p">:</span><span class="w"> </span><span class="l">replication</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">env</span><span class="p">:</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span>- <span class="nt">name</span><span class="p">:</span><span class="w"> </span><span class="l">GEODE_LOG_LEVEL</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">value</span><span class="p">:</span><span class="w"> </span><span class="s2">"info"</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">volumeMounts</span><span class="p">:</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span>- <span class="nt">name</span><span class="p">:</span><span class="w"> </span><span class="l">data</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">mountPath</span><span class="p">:</span><span class="w"> </span><span class="l">/var/lib/geode</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span>- <span class="nt">name</span><span class="p">:</span><span class="w"> </span><span class="l">config</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">mountPath</span><span class="p">:</span><span class="w"> </span><span class="l">/etc/geode</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">resources</span><span class="p">:</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">requests</span><span class="p">:</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">memory</span><span class="p">:</span><span class="w"> </span><span class="s2">"8Gi"</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">cpu</span><span class="p">:</span><span class="w"> </span><span class="s2">"4"</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">limits</span><span class="p">:</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">memory</span><span class="p">:</span><span class="w"> </span><span class="s2">"16Gi"</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">cpu</span><span class="p">:</span><span class="w"> </span><span class="s2">"8"</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">livenessProbe</span><span class="p">:</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">exec</span><span class="p">:</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">command</span><span class="p">:</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span>- <span class="l">geode</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span>- <span class="l">admin</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span>- <span class="l">health</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">initialDelaySeconds</span><span class="p">:</span><span class="w"> </span><span class="m">30</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">periodSeconds</span><span class="p">:</span><span class="w"> </span><span class="m">10</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">readinessProbe</span><span class="p">:</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">exec</span><span class="p">:</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">command</span><span class="p">:</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span>- <span class="l">geode</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span>- <span class="l">admin</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span>- <span class="l">health</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span>- --<span class="l">ready</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">initialDelaySeconds</span><span class="p">:</span><span class="w"> </span><span class="m">15</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">periodSeconds</span><span class="p">:</span><span class="w"> </span><span class="m">5</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">volumes</span><span class="p">:</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span>- <span class="nt">name</span><span class="p">:</span><span class="w"> </span><span class="l">config</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">configMap</span><span class="p">:</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">name</span><span class="p">:</span><span class="w"> </span><span class="l">geode-config</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">volumeClaimTemplates</span><span class="p">:</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span>- <span class="nt">metadata</span><span class="p">:</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">name</span><span class="p">:</span><span class="w"> </span><span class="l">data</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">spec</span><span class="p">:</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">accessModes</span><span class="p">:</span><span class="w"> </span><span class="p">[</span><span class="w"> </span><span class="s2">"ReadWriteOnce"</span><span class="w"> </span><span class="p">]</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">resources</span><span class="p">:</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">requests</span><span class="p">:</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">storage</span><span class="p">:</span><span class="w"> </span><span class="l">100Gi</span><span class="w">
</span></span></span></code></pre></div>
<h3 id="best-practices" class="position-relative d-flex align-items-center group">
<span>Best Practices</span>
<button type="button"
class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1"
data-share-target="best-practices"
aria-haspopup="dialog"
aria-label="Share link: Best Practices">
<i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i>
<span class="visually-hidden">Share link</span>
</button>
</h3><ol>
<li><strong>Configuration Management</strong>: Use version control for configuration files</li>
<li><strong>Resource Sizing</strong>: Size memory and CPU based on workload characteristics</li>
<li><strong>Security</strong>: Enable authentication and encryption in production</li>
<li><strong>Monitoring</strong>: Configure comprehensive metrics and alerting</li>
<li><strong>Logging</strong>: Use structured logging with appropriate log levels</li>
<li><strong>Backups</strong>: Configure automated backups with retention policies</li>
<li><strong>Testing</strong>: Test configuration changes in staging before production</li>
<li><strong>Documentation</strong>: Document all configuration customizations and rationale</li>
</ol>
<h3 id="troubleshooting" class="position-relative d-flex align-items-center group">
<span>Troubleshooting</span>
<button type="button"
class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1"
data-share-target="troubleshooting"
aria-haspopup="dialog"
aria-label="Share link: Troubleshooting">
<i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i>
<span class="visually-hidden">Share link</span>
</button>
</h3>
<h4 id="server-wont-start" class="position-relative d-flex align-items-center group">
<span>Server Won&rsquo;t Start</span>
<button type="button"
class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1"
data-share-target="server-wont-start"
aria-haspopup="dialog"
aria-label="Share link: Server Wont Start">
<i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i>
<span class="visually-hidden">Share link</span>
</button>
</h4><div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl"><span class="c1"># Check configuration syntax</span>
</span></span><span class="line"><span class="cl">geode config validate --config /etc/geode/geode.conf
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="c1"># Test with verbose logging</span>
</span></span><span class="line"><span class="cl">geode serve --config /etc/geode/geode.conf --log-level debug
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="c1"># Check port availability</span>
</span></span><span class="line"><span class="cl">sudo netstat -tulpn <span class="p">|</span> grep <span class="m">3141</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="c1"># Verify file permissions</span>
</span></span><span class="line"><span class="cl">ls -la /var/lib/geode /var/log/geode
</span></span></code></pre></div>
<h4 id="performance-issues" class="position-relative d-flex align-items-center group">
<span>Performance Issues</span>
<button type="button"
class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1"
data-share-target="performance-issues"
aria-haspopup="dialog"
aria-label="Share link: Performance Issues">
<i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i>
<span class="visually-hidden">Share link</span>
</button>
</h4><div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl"><span class="c1"># Check resource usage</span>
</span></span><span class="line"><span class="cl">geode admin resources
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="c1"># Review slow queries</span>
</span></span><span class="line"><span class="cl">geode admin slow-queries --min-duration <span class="m">1000</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="c1"># Analyze query plans</span>
</span></span><span class="line"><span class="cl">geode query <span class="s2">"EXPLAIN <query>"</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="c1"># Check for lock contention</span>
</span></span><span class="line"><span class="cl">geode admin locks --show-contention
</span></span></code></pre></div>
<h4 id="memory-issues" class="position-relative d-flex align-items-center group">
<span>Memory Issues</span>
<button type="button"
class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1"
data-share-target="memory-issues"
aria-haspopup="dialog"
aria-label="Share link: Memory Issues">
<i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i>
<span class="visually-hidden">Share link</span>
</button>
</h4><div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl"><span class="c1"># Check memory usage</span>
</span></span><span class="line"><span class="cl">geode admin memory --detailed
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="c1"># Analyze heap usage</span>
</span></span><span class="line"><span class="cl">geode admin heap-dump --output /tmp/heap.dump
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="c1"># Review cache statistics</span>
</span></span><span class="line"><span class="cl">geode admin cache-stats
</span></span></code></pre></div>
<h3 id="related-topics" class="position-relative d-flex align-items-center group">
<span>Related Topics</span>
<button type="button"
class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1"
data-share-target="related-topics"
aria-haspopup="dialog"
aria-label="Share link: Related Topics">
<i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i>
<span class="visually-hidden">Share link</span>
</button>
</h3><ul>
<li><a
href="/tags/configuration/"
>Configuration</a>
- General configuration topics</li>
<li><a
href="/tags/performance/"
>Performance</a>
- Performance tuning</li>
<li><a
href="/tags/security/"
>Security</a>
- Security configuration</li>
<li><a
href="/tags/monitoring/"
>Monitoring</a>
- Monitoring and metrics</li>
<li><a
href="/tags/deployment/"
>Deployment</a>
- Deployment strategies</li>
</ul>
<h3 id="further-reading" class="position-relative d-flex align-items-center group">
<span>Further Reading</span>
<button type="button"
class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1"
data-share-target="further-reading"
aria-haspopup="dialog"
aria-label="Share link: Further Reading">
<i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i>
<span class="visually-hidden">Share link</span>
</button>
</h3><ul>
<li><a
href="/docs/deployment/"
>Deployment Guide</a>
- Deployment patterns and strategies</li>
<li><a
href="/docs/performance/"
>Performance Optimization</a>
- Performance tuning guide</li>
<li><a
href="/docs/security/"
>Security Overview</a>
- Security configuration guide</li>
</ul>
Tag
1 article
Server Configuration
Complete guide to Geode server configuration, deployment options, runtime settings, performance tuning, resource management, and production best practices.