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) anddashMn (-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
-ServerTypeslot 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
-ServerTypeslot 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
theRemote ABL login broker on port 9002block 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_serversVST. - Server# —
_server-num, the server number. - PID —
_server-pid, the OS process id of the server. - Type —
_server-type.Loginis the broker itself;Autois an
auto-spawned server handling client connections. - Port —
_server-portnumthe server listens on (the broker’s port
forLogin, an ephemeral port from the broker’s-minport/-maxport
range forAuto). - 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
-Mpbof 0 on a busy broker (no extra servers will be spawned), or a-Mmleft 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
_serverslisting shows whether the broker is actually
handling load:Type = Autorows mean the broker has spawned worker
servers, andLoginsshows 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/-Mnrecommendation is the same hard sanity check as indbparam.rpt: actual < suggested means the broker stack is mis-sized
for the brokers configured.