Skip to content
English
  • There are no suggestions because the search field is empty.

Report: Remote Server / Broker Configuration

The *.servers.rpt files under rpt/ are a focused snapshot of the database’s client/server brokers: the parameters they share, the per- broker settings (ABL and SQL), the live server processes attached to each broker, and a sanity check on whether -n and -Mn are sized correctly for the broker stack as configured. They are produced by util/serverrpt.p.

This is essentially the broker-focused subset of dbparam.rpt. The two
programs share most of their broker-walking logic, but serverrpt.p adds
a per-broker live _servers listing that dbparamrpt.p deliberately
omits.

One file is written per database, named <shortname>.servers.rpt (or
<ldbname(1)>.servers.rpt if pt_shortname is unset) and placed in
$RPTDIR (or the current directory if RPTDIR is unset).

Invocation

mbpro <dbname> -p util/serverrpt.p

Prerequisite

Same as dbparam.rpt: requires OpenEdge 11.5 or later with the
_dbParams VST activated. If unavailable, the program shows the centered
red nastyGram, waits for a key, and exits without writing anything.

Layout

The file has three sections.

Section 1 — common client/server parameters

A header line:

Parameters common to all client/server connections:

followed by a row for each _dbParams entry whose name is in the
hard-coded common list:

-Mn, -n, -pollset, -prefetchDelay, -prefetchFactor,
-prefetchNumRecs, -prefetchPriority, -Nmsgwait

Columns:

  • Parameter Name — _dbParams-Name
  • Value — _dbParams-Value
  • Description — _dbParams-Desc
  • Is Default — _dbParams-Is-Default
  • Can Modify — _dbParams-Is-Modifiable

Output is suppressed for any of the eight common parameters whose value
matches the Progress default — only non-default rows are printed (in
practice that’s why the sample report shows just -Nmsgwait).

While iterating, two values are stashed for later: dashN (-n) and
dashMn (-Mn).

Section 2 — per-broker configuration

For each row of _servers whose _server-type = "login" (one row per
login broker), separated by an = rule:

================================================================================

Remote <ServerType> login broker on port <port> ← or "Default ... (unusable)" if portnum = 0

Then a two-column parameter table pulled from the broker’s
_srvParam-name / _srvParam-value / _srvParam-is-default arrays
(extent fields, indexed up to 64). The slot numbers for -ServerType,
-Mpb, and -Ma are looked up first; then parameters are listed:

  • Left column — the broker / ABL parameters. Walked from the
    -ServerType slot down to slot 1, so it ends up showing -ServerType,
    -S-PendConnTime-N-Mpb-Mp-Mm-Mi-Ma,
    -threadedServerStack-threadedServer-ssj-minport,
    -maxport-ipver.
  • Right column — the SQL parameters. Walked upward from the
    -ServerType slot
     so it lands on the SQL block: -SQLCursors,
    -SQLLockWaitTimeout-SQLQuotedRowid-SQLStack-SQLStmtCache,
    -SQLTempBuff-SQLTempDisk-SQLTempPgSize,
    -SQLTruncateTooLarge-SQLWidthUpdate. The right column is
    suppressed when _srvParam-value(svt) = "ABL" — pure-ABL brokers
    carry no SQL parameters, so that side of the table is left blank (see
    the Remote ABL login broker on port 9002 block in the sample).

Live _servers listing under each broker

After the parameter table, serverrpt.p does what dbparamrpt.p does
not: it walks _servers again and lists every server whose
_server-broker-pid matches the current broker’s PID.

    Id Server#         PID Type            Port               Logins
------ ------- ----------- -------- ----------- --------------------
1 0 1990960 Login 9000 0
5 4 32751 Auto 12011 1

Columns:

  • Id — _server-id, the server’s slot id in the _servers VST.
  • Server# — _server-num, the server number.
  • PID — _server-pid, the OS process id of the server.
  • Type — _server-typeLogin is the broker itself; Auto is an
    auto-spawned server handling client connections.
  • Port — _server-portnum the server listens on (the broker’s port
    for Login, an ephemeral port from the broker’s -minport/-maxport
    range for Auto).
  • Logins — _server-logins, the count of clients currently logged
    into this server.

This block requires _server-broker-pid to exist in the schema (some
older OE releases lack it). The check hasSrvBrkPID is set early in the
program; if false, this listing is silently skipped.

While iterating brokers, the program accumulates totals:

  • sum_mpb — running total of (Mpb + 1) across all brokers.
  • sum_cnx — running total of (Mpb + 1) * Ma, the maximum concurrent
    client connections across all brokers.

Section 3 — -n / -Mn recommendation

Closing block, after a final = rule:

================================================================================

To fully support these remote servers:
-n should be at least: <sum_cnx + 5> (actual = <dashN>)
-Mn should be at least: <sum_mpb + 1> (actual = <dashMn>)

The +5 slack on -n covers self-service / utility connections, and the
+1 on -Mn covers the broker itself. If actual values fall below the
suggested ones, a busy moment will run out of user slots or server slots
before all brokers can hand out connections.

Side effects

  • Calls lib/uploader.p ( rptOut, pt_shortname, output xStatus ) to ship
    the file off as part of the ProTop run.
  • Calls lib/fileviewer.p ( rptOut ) to open the report for the user
    immediately after writing it.

Reading the report

  • Section 1 is a quick “what about this client/server stack is not
    default?” view. Anything that shows up there is something a DBA
    intentionally set; everything else in the common list is at its Progress
    default and is therefore omitted.
  • The per-broker block lets you spot misconfigured brokers — e.g. an
    -Mpb of 0 on a busy broker (no extra servers will be spawned), or a
    -Mm left at the default 8192 on a broker that needs larger messages.
    The right (SQL) column tells you at a glance whether SQL traffic is
    even possible on each broker (blank = ABL-only).
  • The live _servers listing shows whether the broker is actually
    handling load: Type = Auto rows mean the broker has spawned worker
    servers, and Logins shows current client counts per server. Empty
    listings on a broker that should be busy is a sign the broker isn’t
    routing connections.
  • The -n / -Mn recommendation is the same hard sanity check as in
    dbparam.rpt: actual < suggested means the broker stack is mis-sized
    for the brokers configured.