[0001]
[0002]
[0003]
[0004]
[0005]
[0006]
[0007]
[0008]
[0009]
[0010]
[0011]
[0012]
[0013]
[0014]
[0015]
[0016]
[0017]
[0018]
[0019]
[0020]
[0021]
[0022]
[0023]
[0024]
[0025]
[0026]
[0027]
[0028]
[0029]
[0030]
[0031]
[0032]
[0033]
[0034]
[0035]
[0036]
[0037]
[0038]
[0039]
[0040]
[0041]
[0042]
[0043]
[0044]
[0045]
[0046]
[0047]
[0048]
[0049]
[0050]
[0051]
[0052]
[0053]
[0054]
[0055]
[0056]
[0057]
[0058]
[0059]
[0060]
[0061]
[0062]
[0063]
[0064]
[0065]
[0066]
[0067]
[0068]
[0069]
[0070]
[0071]
[0072]
[0073]
[0074]
[0075]
[0076]
[0077]
[0078]
[0079]
[0080]
[0081]
[0082]
[0083]
[0084]
[0085]
[0086]
[0087]
[0088]
[0089]
[0090]
[0091]
[0092]
[0093]
[0094]
[0095]
[0096]
[0097]
[0098]
[0099]
[0100]
[0101]
[0102]
[0103]
[0104]
[0105]
[0106]
[0107]
[0108]
[0109]
[0110]
[0111]
[0112]
[0113]
[0114]
[0115]
[0116]
[0117]
[0118]
[0119]
[0120]
[0121]
[0122]
[0123]
[0124]
[0125]
[0126]
[0127]
[0128]
[0129]
[0130]
[0131]
[0132]
[0133]
[0134]
[0135]
[0136]
[0137]
[0138]
[0139]
[0140]
[0141]
[0142]
[0143]
[0144]
[0145]
[0146]
[0147]
[0148]
[0149]
[0150]
[0151]
[0152]
[0153]
[0154]
[0155]
[0156]
[0157]
[0158]
[0159]
[0160]
[0161]
[0162]
[0163]
[0164]
[0165]
[0166]
[0167]
[0168]
[0169]
[0170]
[0171]
[0172]
[0173]
[0174]
[0175]
[0176]
[0177]
[0178]
[0179]
[0180]
[0181]
[0182]
[0183]
[0184]
[0185]
[0186]
[0187]
[0188]
[0189]
[0190]
[0191]
[0192]
[0193]
[0194]
[0195]
[0196]
[0197]
[0198]
[0199]
[0200]
[0201]
[0202]
[0203]
[0204]
[0205]
[0206]
[0207]
[0208]
[0209]
[0210]
[0211]
[0212]
[0213]
[0214]
[0215]
[0216]
[0217]
[0218]
[0219]
[0220]
[0221]
[0222]
[0223]
[0224]
[0225]
[0226]
[0227]
[0228]
[0229]
[0230]
[0231]
[0232]
[0233]
[0234]
[0235]
[0236]
[0237]
[0238]
[0239]
[0240]
[0241]
[0242]
[0243]
[0244]
[0245]
[0246]
[0247]
[0248]
[0249]
[0250]
[0251]
[0252]
[0253]
[0254]
[0255]
[0256]
[0257]
[0258]
[0259]
[0260]
[0261]
[0262]
[0263]
[0264]
[0265]
[0266]
[0267]
[0268]
[0269]
[0270]
[0271]
[0272]
[0273]
[0274]
[0275]
[0276]
[0277]
[0278]
[0279]
[0280]
[0281]
[0282]
[0283]
[0284]
[0285]
[0286]
[0287]
[0288]
[0289]
[0290]
[0291]
[0292]
[0293]
[0294]
[0295]
[0296]
[0297]
[0298]
[0299]
[0300]
[0301]
[0302]
[0303]
[0304]
[0305]
[0306]
[0307]
[0308]
[0309]
[0310]
[0311]
[0312]
[0313]
[0314]
[0315]
[0316]
[0317]
[0318]
[0319]
[0320]
[0321]
[0322]
[0323]
[0324]
[0325]
[0326]
[0327]
[0328]
[0329]
[0330]
[0331]
[0332]
[0333]
[0334]
[0335]
[0336]
[0337]
[0338]
[0339]
[0340]
[0341]
[0342]
[0343]
[0344]
[0345]
[0346]
[0347]
[0348]
[0349]
[0350]
[0351]
[0352]
[0353]
[0354]
[0355]
[0356]
[0357]
[0358]
[0359]
[0360]
[0361]
[0362]
[0363]
[0364]
[0365]
[0366]
[0367]
[0368]
[0369]
[0370]
[0371]
[0372]
[0373]
[0374]
[0375]
[0376]
[0377]
[0378]
[0379]
[0380]
[0381]
[0382]
[0383]
[0384]
[0385]
[0386]
[0387]
[0388]
[0389]
[0390]
[0391]
[0392]
[0393]
[0394]
[0395]
[0396]
[0397]
[0398]
[0399]
[0400]
[0401]
[0402]
[0403]
[0404]
[0405]
[0406]
[0407]
[0408]
[0409]
[0410]
[0411]
[0412]
[0413]
[0414]
[0415]
[0416]
[0417]
[0418]
[0419]
[0420]
[0421]
[0422]
[0423]
[0424]
[0425]
[0426]
[0427]
[0428]
[0429]
[0430]
[0431]
[0432]
[0433]
[0434]
[0435]
[0436]
[0437]
[0438]
[0439]
[0440]
[0441]
[0442]
[0443]
[0444]
[0445]
[0446]
[0447]
[0448]
[0449]
[0450]
[0451]
[0452]
[0453]
[0454]
[0455]
[0456]
[0457]
[0458]
[0459]
[0460]
[0461]
[0462]
[0463]
[0464]
[0465]
[0466]
[0467]
[0468]
[0469]
[0470]
[0471]
[0472]
[0473]
[0474]
[0475]
[0476]
[0477]
[0478]
[0479]
[0480]
[0481]
[0482]
[0483]
[0484]
[0485]
[0486]
[0487]
[0488]
[0489]
[0490]
[0491]
[0492]
[0493]
[0494]
[0495]
[0496]
[0497]
[0498]
[0499]
[0500]
[0501]
[0502]
[0503]
[0504]
[0505]
[0506]
[0507]
[0508]
[0509]
[0510]
[0511]
[0512]
[0513]
[0514]
[0515]
[0516]
[0517]
[0518]
[0519]
[0520]
[0521]
[0522]
[0523]
[0524]
[0525]
[0526]
[0527]
[0528]
[0529]
[0530]
[0531]
[0532]
[0533]
[0534]
[0535]
[0536]
[0537]
[0538]
[0539]
[0540]
[0541]
[0542]
[0543]
[0544]
[0545]
[0546]
[0547]
[0548]
[0549]
[0550]
[0551]
[0552]
[0553]
[0554]
[0555]
[0556]
[0557]
[0558]
[0559]
<!DOCTYPE html>
<!-- WASDOC AXP-2.0.0 (CGILIB AXP-1.9.9) -->
<!-- wasDOC Copyright (C) 2019,2020 Mark G.Daniel - Apache-2.0 licenced -->
<!--  3-NOV-2021 02:50 -->
<noscript>NOTE: SOME FUNCTIONALITY EMPLOYS JAVASCRIPT</noscript>
<div id="erreport1" style="display:none;"></div>
<script>
function errorReport(string) {
   for (var cnt = 1; cnt <= 2; cnt++) {
      var err = document.getElementById('erreport'+cnt);
      err.style.display = 'block';
      err.innerHTML += string;
   }
}
</script>
<style type="text/css">
html { font-family: arial, verdana, sans-serif; font-size:12pt; margin:1em; }
h1 { font-size:124%; font-style:bold;
     margin-top:1em; margin-bottom:0.5em; }
h2 { font-size:120%; font-style:bold;
     margin-top:1.1em; margin-bottom:0.4em; }
h3 { font-size:116%; font-style:bold;
     margin-top:1.0em; margin-bottom:0.3em; }
h4 { font-size:112%; font-style:bold;
     margin-top:1.1em; margin-bottom:0.3em; }
h5 { font-size:112%; font-style:bold; 
     margin-top:1.1em; margin-bottom:0.3em; }
h6 { font-size:112%; font-style:bold; padding:0; margin:0; }

h1 .text { text-decoration:underline; }
h1 .numb { padding-right:0.8em; }
h1 .numb:empty { display:none; padding-right:0; }
h2 .numb { padding-right:0.8em; }
h2 .numb:empty { display:none; padding-right:0; }
h3 .numb { padding-right:0.8em; }
h3 .numb:empty { display:none; padding-right:0; }
h4 .numb { padding-right:0.8em; }
h4 .numb:empty { display:none; padding-right:0; }
h5 .numb { display:none; padding-right:0; }
h6 .numb { display:none; padding-right:0; }

kbd { font-family:monospace; }

noscript { font-size:1.2em; }

p { line-height:1.1em; margin-top:1em; margin-bottom:1em; }

.chunk { font-size:130%; text-decoration:underline; }
.head {}
.high {}
.bold { font-weight:bold; }
.center { text-align:center; }
.italic { font-style:italic; }
.left { text-align:left; }
.nowrap { white-space:nowrap; }
.prewrap { white-space:pre; }
.right { text-align:right; }
.strike { text-decoration:line-through; }
.under { text-decoration:underline; }

.backlight { background-color:#f2f2f2; }
.display0 { display:none; }

img { max-width:100%; }
.imglink { }

.link { }
.blank { }

.list { margin-bottom:1em; }
.list li { margin-top:0.5em; }
.list0 li { margin-top:0; }
.item {}

.tabl { border-collapse:collapse; text-align:left; margin:0.4em 2em 0.5em 2em; }
.tabu { border-collapse:collapse; text-align:right; margin:0.4em 2em 0.5em 2em; }

.tabr { vertical-align:top; }
.tabh { padding:0.2em 0 0 2em; margin:0; }
.tabd { padding:0.1em 0 0 2em; margin:0; }
.tabh:first-of-type, td:first-of-type { padding-left:0; }

.tabu .tabh,
.tabu .tabd { border:1px solid gray; padding:0.2em 0.3em 0.2em 0.3em; }
.tab0 { border:none; visibility:hidden; max-width:1em; 
        white-space:nowrap; overflow:hidden; }

.tabauto { margin-left:auto; margin-right:auto; }

.tabr:empty { height:0.2em; }
.tabu .tabh:empty, .tabu .tabd:empty { border:none; visibility:hidden; }

.error { font-size:110%; color:black; background-color:yellow;
         font-family:sans-serif; font-weight:bold; font-style:normal;
         width:95%; border:solid 1px gray; padding:0.5em 1em 0.5em 1em; }
.error::before { content:'\026a0\00a0'; }
.image { }
.page { width:98%; border:1px dashed gray; margin:1.5em 0 1.8em 0; }
.epage { width:98%; border:1px dashed black; margin:1.5em 0 1.8em 0; }
.monosp { font-family:monospace; }
.ppage { display:none; }
.simple { list-style-type:none; }
.valtop { vertical-align:top; }
.valmid { vertical-align:middle; }
.valbot { vertical-align:bottom; }

.code { border-style:solid; border-width:0 0 0 1px; padding-left:1em;
        font-family:monospace; white-space:pre; }
.block { }
.blockof { margin:0.4em 2em 0.5em 2em; }
.example { border-style:dashed; border-width:0 0 0 1px; padding-left:1em;
           margin-top:0.5em; margin-bottom:0.5em; white-space:pre; }
.indent { margin-left:2em; margin-right:2em; }
.noindent { margin-left:0; margin-right:0; }
.inblock { display:inline-block; }
.mono { white-space:pre; font-family:monospace; }
.note { margin:0.4em 2em 0.5em 2em; page-break-inside:avoid; }
.note h5 { margin-top:0 }
.note_hr { width:80%; border:1px solid gray; }
.prop { padding-left:1em; margin-top:0.5em; margin-bottom:0.5em; }
.quote { border-style:dashed; border-width:0 0 0 1px; padding-left:1em;
         margin-top:0.5em; margin-bottom:0.5em; }
.this { display:none; }

a:link,a:visited { color:black; text-decoration:none; }
a:hover,a:active { text-decoration:underline; }
a:focus { outline:0; } 

:target:before { content:''; display:block; height:0.1em; margin:-0.1em; }
a.link:link, a.link:visited,a.link:active 
{ color:midnightBlue; text-decoration:underline; text-decoration-style:solid; }

.TOC1cols1 { width:80%; max-width:80%; }
.TOC1cols2 { column-count:2; width:80%; max-width:80%; }
.TOC1cols3 { column-count:3; max-width:90%; max-width:90%; }
.TOC1cols4 { column-count:4; max-width:100%; max-width:100%; }
.TOC1table { margin-left:2em; white-space:nowrap; break-inside:auto; }
.TOC1table tr { vertical-align:top; text-align:left; break-inside:avoid; break-after:auto; }
.TOC1table td+td { padding:0 0 0 0.5em; }
.TOC1table .numb { width:3em; max-width:3em; }
.TOC1table .sepr { width:5em; max-width:6em; overflow:hidden; }
.TOC1table .majr { font-weight:bold; }
.TOC1table .text { white-space:normal; }

/* These are due to Firefox (at least <= 76) recalcitrant multi-column handling.
   Web search "Split table into css columns, issue in Firefox" (stackoverflow).
   "Good grief, Charlie Brown!" */
 
.TOC1cols2 table,
.TOC1cols2 tbody,
.TOC1cols2 tr,
.TOC1cols3 table,
.TOC1cols3 tbody,
.TOC1cols3 tr,
.TOC1cols4 table,
.TOC1cols4 tbody,
.TOC1cols4 tr { display:block; padding:0; }

.TOC2cols1 { width:60%; max-width:60%; }
.TOC2cols2 { column-count:2; width:70%; max-width:70%; }
.TOC2cols3 { column-count:3; width:80%; max-width:80%; }
.TOC2cols4 { column-count:4; width:90%; max-width:90%; }
.TOC2table { margin-left:2em; white-space:nowrap; break-inside:auto; }
.TOC2table tr { vertical-align:top; text-align:left; break-inside:avoid; break-after:auto; }
.TOC2table .numb { font-weight:bold; padding-right:0.5em; }
.TOC2table .text { width:100%; white-space:normal; }

/* see "recalcitrant" above */
.TOC2cols2 table,
.TOC2cols2 tbody,
.TOC2cols2 tr,
.TOC2cols3 table,
.TOC2cols3 tbody,
.TOC2cols3 tr,
.TOC2cols4 table,
.TOC2cols4 tbody,
.TOC2cols4 tr { display:block; padding:0; }

.NAVtable { margin:0.1em 0 0 2em; }
.NAVtable td { font-size:110%; font-weight:bold; padding:0; margin:0; }
.NAVtable a { padding:0 0.5em 0 0.5em; text-decoration:none; }

.IDXcols1 { width:80%; max-width:80%; }
.IDXcols2 { column-count:2; width:90%; max-width:90%; }
.IDXcols3 { column-count:3; width:95%; max-width:95%;  }
.IDXcols4 { column-count:4; width:100%; max-width:100%;  }
.IDXtable { margin:1em 0 1em 2em; white-space:nowrap; break-inside:auto; }
.IDXtable tr { vertical-align:top; text-align:left; break-inside:avoid; break-after:auto; }
.IDXtable .alpha { font-weight:bold; min-width:2em; }
.IDXtable .text  { width:100%; white-space:normal; }
.IDXtable .para:before { content:'\00b6\00a0'; }

/* see "recalcitrant" above */
.IDXcols2 table,
.IDXcols2 tbody,
.IDXcols2 tr,
.IDXcols3 table,
.IDXcols3 tbody,
.IDXcols3 tr,
.IDXcols4 table,
.IDXcols4 tbody,
.IDXcols4 tr { display:block; padding:0; }

.insight { background-color:cyan; font-family:monospace;
           padding:0 0.2em 0 0.2em; margin:0 0.2em 0 0.2em;
           font-size:100%; font-style:normal; font-weight:normal;
           text-decoration:none; }

.wasdoc { font-family: "Lucida Console", Monaco, monospace; 
          letter-spacing:-0.07em; }

@media screen { .blank::after { content:"\2924"; } 
                .print { display:none; }
}

@media print {
   table { page-break-inside:avoid; }
   .noprint { display:none; }
   .page { border:none; page-break-after: always; }
   .epage { display:none; }
   .ppage { page-break-after:always; }
   .NAVtable { display:none; }
   .NAVprint { display:block!important; }
}

@page { margin:2cm 1cm 2cm 1cm;  }
</style>
<!-- source:0000_features.WASDOC -->

<style type="text/css">._smiley::after { font-size:150%; vertical-align:middle; content:'\263a' }</style>
<style type="text/css">._frowny::after { font-size:150%; vertical-align:middle; content:'\2639' }</style>
<style type="text/css">._button { border: 1px gray solid; border-radius:3px; padding:0.1em; margin:0.1em; font-size:90%; }</style>

<a id="0." href="#"></a>
<title>WASD Features and Facilities &ndash; Instances and Environments</title>
<a id="8." href="#"></a>
<a id="8.instancesandenvironments" href="#"></a>
<a id="instancesandenvironments" href="#"></a>
<h1 class="head chunk">WASD Features and Facilities</h1>
<h1 class="head"><span class="numb">8.</span><span class="text">Instances and Environments</span></h1>

<div class="TOC2cols2">
<table class="TOC2table">
<tr><td><a href="features008.html#8.1.serverinstances"><span class="numb">8.1</span><span class="text">Server Instances</span></a>
<tr><td><a href="features008.html#8.1.1.vmsclusteringcomparison"><span class="numb">8.1.1</span><span class="text">VMS Clustering Comparison</span></a>
<tr><td><a href="features008.html#8.1.2.considerations"><span class="numb">8.1.2</span><span class="text">Considerations</span></a>
<tr><td><a href="features008.html#8.1.3.configuration"><span class="numb">8.1.3</span><span class="text">Configuration</span></a>
<tr><td><a href="features008.html#8.1.4.status"><span class="numb">8.1.4</span><span class="text">Status</span></a>
<tr><td><a href="features008.html#8.2.serverenvironments"><span class="numb">8.2</span><span class="text">Server Environments</span></a>
</table>
</div>

<table class="NAVtable NAVprint"><tr>
<td><a href="javascript:window.history.back();">&#8617;&#xFE0E;</a>
<td><a href="features007.html#7.">&#8598;&#xFE0E;</a>
<td><a href="features000.html#0.">&#8593;&#xFE0E;</a>
<td><a href="features009.html#9.">&#8600;&#xFE0E;</a>
<td><a href="javascript:window.history.forward();">&#8618;&#xFE0E;</a>
</table>

<p> WASD <span class="high italic">instances</span> and <span class="high italic">environments</span> are two distinct mechanisms for
supporting multiple WASD server processes on a single system.

<p> Server instances are multiple, cooperating server processes
providing the same set of configured resources.

<p> Server environments are multiple, independent server processes
providing differently configured resources.

<a id="8.1" href="#"></a>
<a id="8.1.serverinstances" href="#"></a>
<a id="serverinstances" href="#"></a>
<h2 class="head"><span class="numb">8.1</span><span class="text">Server Instances</span></h2>

<p> The term <span class="high italic">instance</span> is used by WASD to describe an autonomous server
process.  WASD will support multiple server processes running on a single
system, alone  or in combination with multiple server processes running across
a cluster.  This is <span class="high under">not</span> the same as supporting multiple virtual servers (see
<a class="link blank" target="_blank" href="../config/#virtualservices">Virtual Services</a> of <a class="link blank" target="_blank" href="../config/#0.">WASD Configuration</a>).
When multiple instances are configured on a single system they cooperate to
distribute the request load between themselves and share certain essential
resources such as accounting and authorization information.

<div class="note">
<a id="8.1.0.0.1" href="#"></a>
<a id="8.1.warning" href="#"></a>
<a id="warning" href="#"></a>
<h5 class="head center"><span class="text">WARNING</span></h5>
<hr class="note_hr">
Versions earlier than Compaq TCP/IP Services v5.3 and some TCPware v5.<span class="high italic">n</span> (at 
least)  have a problem with socket listen queuing that can cause services to
&quot;hang&quot; (should this happen just disable instances and restart the server). 
Ensure you have the requisite version/ECO/patch installed before activating
multiple instances on production systems!
<hr class="note_hr">
</div>

<a id="8.1.1" href="#"></a>
<a id="8.1.1.vmsclusteringcomparison" href="#"></a>
<a id="vmsclusteringcomparison" href="#"></a>
<h3 class="head"><span class="numb">8.1.1</span><span class="text">VMS Clustering Comparison</span></h3>

<p> The approach WASD has used in providing multiple instance serving may be
compared in many ways to VMS clustering.

<p> A cluster is often described as a loosely-coupled, distributed operating
environment where autonomous processors can join, process and leave (even fail)
independently, participating in a single management domain and communicating
with one another for the purposes of resource sharing and high availability.

<p> Similarly WASD instances run in autonomous, detached processes (across one
or more systems in a cluster) using a common configuration and management
interface, aware of the presence and activity of other instances (via the
Distributed Lock Manager and shared memory), sharing processing load and
providing rolling restart and automatic &quot;fail-through&quot; as required.

<a id="8.1.1.0.1" href="#"></a>
<a id="8.1.1.loadsharing" href="#"></a>
<a id="loadsharing" href="#"></a>
<h5 class="head"><span class="text">Load Sharing</span></h5>

<p> On a multi-CPU system there are performance advantages to having processing
available for scheduling on each.  WASD employs AST (I/O) based processing and
was not originally designed to support VMS kernel threading.  Benchmarking has
shown this to be quite fast and efficient even when compared to a
kernel-threaded server (OSU) across 2 CPUs.  The advantage of multiple CPUs for
a single multi-threaded server also diminishes where a site frequently
activates scripts for processing.  These of course (potentially) require a CPU
each for processing.  Where a system has many CPUs (and to a lesser extent with
only two and few script activations) WASD's single-process, AST-driven design
would scale more poorly.  Running multiple WASD instances addresses this.

<p> <span class="high bold">Of course load sharing is not the only advantage to multiple
instances &hellip;</span>

<a id="8.1.1.0.2" href="#"></a>
<a id="8.1.1.restart" href="#"></a>
<a id="restart" href="#"></a>
<h5 class="head"><span class="text">Restart</span></h5>

<p> When multiple WASD instances are executing on a node and a restart is
initiated only one process shuts down at a time.  Others remain available for
requests until the one restarting is again fully ready to process them itself,
at which point the next commences restart.  This has been termed a
<span class="high italic">rolling restart</span>.  Such behaviour allows server reconfiguration on a
busy site without even a small loss of availability.

<a id="8.1.1.0.3" href="#"></a>
<a id="8.1.1.failthrough" href="#"></a>
<a id="failthrough" href="#"></a>
<h5 class="head"><span class="text">Fail-Through</span></h5>

<p> When multiple instances are executing on a node and one of these exits for
some reason (resource exhaustion, bugcheck, etc.) the other(s) will continue
to process requests.  Of course requests in-progress by the particular instance
at the time of instance failure are disconnected (this contrasts with the
rolling restart behaviour described above).  If the former process has
actually exited (in contrast to just the image) a new server process will
automatically be created after a few seconds.

<p> The term <span class="high italic">fail-through</span> is used rather than <span class="high italic">failover</span> because one server
does not commence processing as another ceases.  All servers are constantly
active with those remaining immediately and automatically taking all requests
in the absence any one (or more) of them.

<a id="8.1.2" href="#"></a>
<a id="8.1.2.considerations" href="#"></a>
<a id="considerations" href="#"></a>
<h3 class="head"><span class="numb">8.1.2</span><span class="text">Considerations</span></h3>

<p> Of course &quot;there is no such thing as a free lunch&quot; and supporting multiple
instances is no exception to this rule.  To coordinate activity between and
access to shared resources, multiple instances use low-level mutexes and the
VMS Distributed Lock Manager (DLM).  This does add some system overhead and a
little latency to request processing, however as the benchmarks indicate
increases in overall request throughput on a multi-CPU system easily offset
these costs.  On single CPU systems the advantages of rolling restart and
fail-through need to be assessed against the small cost on a per-site basis. 
It is to be expected many low activity sites  will not require multiple
instances to be active at all.

<p> When managing multiple instances on a single node it is important to
consider each process will receive a request in round-robin distribution and
that this needs to be considered when debugging scripts, using the Server
Administration page and the likes of WATCH, etc. (see <a class="link" href="features008.html#8.1.serverinstances">8.1 Server Instances</a>).

<a id="8.1.3" href="#"></a>
<a id="8.1.3.configuration" href="#"></a>
<a id="configuration" href="#"></a>
<h3 class="head"><span class="numb">8.1.3</span><span class="text">Configuration</span></h3>

<p> If not explicitly configured only one instance is created.  The
configuration directive [InstanceMax] allows multiple instances to be specified
<a class="link blank" target="_blank" href="../config/#globalconfiguration">Global Configuration</a> of <a class="link blank" target="_blank" href="../config/#0.">WASD Configuration</a>).
When this is set to an integer that many instances are created and maintained. 
If set to &quot;CPU&quot; then one instance per system CPU is created.  If set to
&quot;CPU-<span class="high italic">integer</span>&quot; then one instance for all but one CPU is created, etc.  The
current limit on instances is eight, although this is somewhat arbitrary.  As
with all requests, Server Administration page access is automatically shared
between instances.  There are occasions when consistent access to a single
instance is desirable.  This is provided via an <span class="high italic">admin service</span> (see
<a class="link blank" target="_blank" href="../config/#serviceconfiguration">Service Configuration</a> of <a class="link blank" target="_blank" href="../config/#0.">WASD Configuration</a>).

<p> When executing, the server process name appends the instance number to the
&quot;WASD&quot;.  Associated scripting processes are named accordingly.  This example
shows such a system:

<div class="blockof code">Pid      Process Name    State  Pri      I/O       CPU       Page flts  Pages
21600801 SWAPPER         HIB     16        0   0 00:06:53.65         0      0
21600807 CLUSTER_SERVER  HIB     12     1879   0 00:01:14.51        91    112
21600808 CONFIGURE       HIB     10       30   0 00:00:01.46        47     23
&hellip;
21600816 ACME_SERVER     HIB     10    71525   0 00:01:28.08       508    713 M
21600818 SMISERVER       HIB      9    11197   0 00:00:02.29       158    231
21600819 TP_SERVER       HIB      9  1337711   0 00:05:55.78        80    105
&hellip;
216421F1 WASD1:80        HIB      5  5365731   0 00:23:12.86     37182   7912
2164523F WASD2:80        HIB      5  5347938   0 00:23:31.41     38983   7831
2162BA5D WASD_WOTSUP     HIB      3     2111   0 00:00:00.47       735    518
2164ABCF WASD1:80-651    LEF      6    57884   0 00:00:16.71      3562   3417
2164CBDB WASD2:80-612    LEF      4    19249   0 00:00:04.16      3153   3116
21631BDC WASD2:80-613    LEF      5    18663   0 00:00:07.19      3745   3636
2164BBE6 WASD1:80-658    LEF      5     3009   0 00:00:00.94      2359   2263
&hellip;
</div>

<a id="8.1.4" href="#"></a>
<a id="8.1.4.status" href="#"></a>
<a id="status" href="#"></a>
<h3 class="head"><span class="numb">8.1.4</span><span class="text">Status</span></h3>

<p> The instance management infrastructure distributes basic status data to all
instances on the node and/or cluster.  The intent is to provide an easily
comprehended snapshot of multi-instance/multi-node WASD processing status.  The
data comprises:

<ul class="list list0">
<li class="item"> instance name (e.g. &quot;KLAATU::WASD:443&quot;)
<li class="item"> date/time the instance status was last updated
<br> + how long <span class="high italic">ago</span> this was (seconds, minutes, hours, or days)
<li class="item"> date/time the instance last started
<br> + how long <span class="high italic">ago</span> this was (seconds, minutes, hours, or days)
<li class="item"> number of times the instance has started up
<li class="item"> date/time the instance last exited
<br> + how long <span class="high italic">ago</span> this was (seconds, minutes, hours, or days)
<li class="item"> the VMS status at the last exit
<li class="item"> instance WASD version (e.g. &quot;11.2.0&quot;)
<li class="item"> number of requests processed during the preceding minute
<li class="item"> number of requests processed during the preceding sixty minutes
</ul>

<p> The data are constrained to these items due to the need to accomodate it
within a 64 byte lock value block for cluster purposes.  Single node
environments do not utilise the DLM, each instance updating its table entry
directly.

<p> Each node has a table with an entry for every other instance in that WASD
environment.  Instance data are updated once every minute so any instance with
data older than one minute is no longer behaving correctly.  This could be due
to some internal error, or that the instance no longer exists (e.g. been
stopped, exited or otherwise no longer executing).  An entry for an instance
that no longer exists is retained indefinitely, or until a /DO=STATUS=PURGE is
performed removing all such <span class="high italic">expired</span> entries, or a /DO=STATUS=RESET removing
all entries (and allowing those currently executing to repopulate the instance
data over the next minute.

<p> These status data are accessible via command-line and in-browser reports,
intended for larger WASD installations, primarily those operating across
multiple nodes in a cluster.  With the data being stored in a common, another
of those other nodes can provide a per-cluster history even if one or more
nodes become completely non-operational.

<p> This is an example report on a 132 column terminal display.  Due to screen
width constraints the date/time omits the year field of the date.

<div class="blockof code">&dollar; httpd/do=status
    Instance          Ago Up               Ago Count Exit             Ago Status     Version /Min /Hour
    ~~~~~~~~~~~~~~~~ ~~~~ ~~~~~~~~~~~~~~~ ~~~~ ~~~~~ ~~~~~~~~~~~~~~~ ~~~~ ~~~~~~~~~~ ~~~~~~~ ~~~~ ~~~~~
 1  KLAATU::WASD:80   41s 18-DEC 23:27:57  54m    21 18-DEC 23:27:57  54m %X00000001 11.2.0    2     17
    KLAATU::WASD1:80---1d-17-DEC-02:49:21---1d-----5-17-DEC-02:50:03---1d-%X00000001-11.2.0----3-----15
    KLAATU::WASD2:80---1d-17-DEC-02:49:25---1d-----5-17-DEC-02:50:07---1d-%X00000001-11.2.0----0-----10
    KLAATU::WASD3:80---1d-17-DEC-02:49:29---1d-----6-17-DEC-02:50:11---1d-%X00000001-11.2.0----0------3
    as at 19-DEC-2017 00:22:41
</div>

<p> This provides an example CLI report showing a single node, where a single
instance has been started, changed to a three instance configuration, restarted
so that the three instances have begun processing.  The configuration has been
returned a single instance and then the existing three instances restarted the
previous day, resulting in the original single instance returning to
processing.  That instance was last (re)started some 54 minutes ago (a normal
exit status showing) and its status was last updated some 41 seconds ago.  Note
that the three instances showing white-space struck-through with hyphens are
stale, having last been updated 1 day ago.  Entries older than three minutes
are displayed in this format to differentiate them from current entries.

<p> The same report on an 80 column terminal.  Note that the overt date/time
has been omitted, leaving only the period <span class="high italic">ago</span> the event happened.

<div class="blockof code">&dollar; httpd/do=status
    Instance          Ago   Up Count Exit Status     Version /Min /Hour
    ~~~~~~~~~~~~~~~~ ~~~~ ~~~~ ~~~~~ ~~~~ ~~~~~~~~~~ ~~~~~~~ ~~~~ ~~~~~
 1  KLAATU::WASD:80    5s  58m    21  58m %X00000001 11.2.0    1     18
    KLAATU::WASD1:80---1d---1d-----5---1d-%X00000001-11.2.0----3-----15
    KLAATU::WASD2:80---1d---1d-----5---1d-%X00000001-11.2.0----0-----10
    KLAATU::WASD3:80---1d---1d-----6---1d-%X00000001-11.2.0----0------3
    as at 19-DEC-2017 00:25:05
</div>

<p> Where multiple instances exist, or have existed, and the terminal page size
is greater than 24 lines, HTTPMON displays an equivalent of the 80 column
report at the bottom of the display.

<p> Similarly, the Server Admin report (<a class="link" href="features009.html#9.serveradministration">9. Server Administration</a>) shows an
HTML equivalent of the 80 column report immediately below the control and time
panels.

<a id="8.1.4.0.1" href="#"></a>
<a id="8.1.4.usinginstancestatus" href="#"></a>
<a id="usinginstancestatus" href="#"></a>
<h5 class="head"><span class="text">Using Instance Status</span></h5>

<ul class="list list0">
<li class="item"> The strike-through (hyphens) of an instance line immediately indicates
the instance is no longer updating (after 3 minutes).
<br> Clear stale entries using &dollar; HTTPD/DO=STATUS=PURGE.
<li class="item"> The instance name <span class="high italic">Ago</span> shows how long ago it was last updated.
<li class="item"> If the exit <span class="high italic">Ago</span> is more recent than the startup <span class="high italic">Ago</span> the instance
has exited but not restarted.
<br> The exit <span class="high italic">Status</span> can show a non-normal status (i.e. not %X00000001).
<li class="item"> An excessive startup <span class="high italic">Count</span> suggests something amiss.
<li class="item"> Per-minute and/or per-hour request counts that seem atypically low while
instance status seems otherwise normal suggests a networking issue, perhaps
up-stream.
</ul>

<a id="8.2" href="#"></a>
<a id="8.2.serverenvironments" href="#"></a>
<a id="serverenvironments" href="#"></a>
<h2 class="head"><span class="numb">8.2</span><span class="text">Server Environments</span></h2>

<p> WASD server environments allow multiple, distinctly configured environments
to execute on a single system.  Generally, WASD's unlimited virtual servers and
multiple account scripting eliminates the need for multiple execution
environments to kludge these requirements.  However there may be circumstances
that make this desirable; regression and forward-compatibility testing comes to
mind.

<p> See <a class="link blank" target="_blank" href="../install/#serverenvironments">Server Environments</a> in <a class="link blank" target="_blank" href="../install/#0.">WASD Installation</a> for
deltained information on maintaining multiple installations of WASD.
<!-- source:0900_ADMIN.WASDOC -->

<table class="NAVtable NAVprint"><tr>
<td><a href="javascript:window.history.back();">&#8617;&#xFE0E;</a>
<td><a href="features007.html#7.">&#8598;&#xFE0E;</a>
<td><a href="features000.html#0.">&#8593;&#xFE0E;</a>
<td><a href="features009.html#9.">&#8600;&#xFE0E;</a>
<td><a href="javascript:window.history.forward();">&#8618;&#xFE0E;</a>
</table>