This Article serves to compliment the current Documentation. Instructions on starting the Threaded Database Server are found in the documentation below:
While the Documentation correctly states that the threaded server is enabled by default in OpenEdge 12:
a. You still need to start your database with proserve or _mprosrv to start a threaded database Broker
- It is the "-threadedServer 1" startup parameter which makes that Broker spawn multi-threaded remote servers, which is enabled by default.
b. In order for the Database Broker (_mprosrv.exe) to spawn a multi-threaded server (_mtprosrv), an Enterprise RDMBS (or the Advanced RDBMS license) must be installed
- Without an Enterprise Database, the threaded server is disabled by default.
Example: The database will fail to start when "-threadedServer 1" is used without an Enterprise Database License
$ _mprosrv <dbname> -S 9898 -Mn 5 -Mpb 2 -Ma 3 -Mi 2 -threadedServer 1 -threadedServerStack 2048
The argument -threadedServer is valid for Enterprise RDBMS licenses only. (14070)
Example: The database will start if -threadedServer 1 is not explicitly specified without an Enterprise Database, the default is disabled:
$ _mprosrv <dbname> -S 9898 -Mpb 2 -Ma 3 -Mi 2
BROKER 0: (19151) Threaded database server (-threadedServer): Not Enabled
c. A remote ABL client must connect for the Login Broker (_mprosrv) to spawn a multithreaded server (_mtprosrv)
Example: With an Enterprise Database, it is still possible to start threaded and non-threaded Brokers.
$ _mprosrv <dbname> -S 9898 -Mn 5 -Mpb 2 -Ma 3 -Mi 2
$ _mprosrv <dbname> -m3 -S 8989 -Mpb 1 -Ma 3 -Mi 2 -threadedServer 0
$ prowin <dbname> -S 9898
$ prowin <dbname> -S 9898
$ prowin <dbname> -S 8989
Verify multi-threaded vs single-threaded remote servers:
$ promon <dbname> > R&D > 1. Status Displays > 20. Broker Startup Parameters
Broker: 0 Pid: 1212 Logins: 3
...
Database server side join support (-ssj): Enabled
Threaded database server (-threadedServer): Enabled
Broker: 1 Pid: 16324 Logins: 1
...
Database server side join support (-ssj): Not Enabled
Threaded database server (-threadedServer): Not Enabled
$ promon <dbname> > R&D > 1. Status Displays > 17. Servers By Broker
(parsed out non-relevant columns)
Sv Server Pend. Cur. Max. Port User
No Pid Type Logins Users Users Users Num Type Threaded
0 3560 Login 3 0 0 3 9898 BROK 1 (_mprosrv / BROKER)
2 16244 Auto 2 0 2 3 3000 TSRV 1 (_mtprosrv / TSRV )
1 8888 Login 1 0 0 3 8989 SERV 0 (_mprosrv / BROKER)
3 9476 Auto 1 0 1 3 3001 SERV 0 (_mprosrv / SRV)
$ promon <dbname> > R&D > 1. Status Displays > 4. Processes/Clients > 6. Remote Clients
(parsed out non-relevant columns)
(Note the Remote Clients each have their own thread when connected to a multi-threaded server. This information is reflected in the database lg file)
Usr:Ten Name Type ... Serv SPid STid
22 user1 REMC/ABL ... 3 9476 11160
23 user1 REMC/ABL ... 3 9476 11160
24 user1 REMC/ABL ... 2 16244 16068
25 user1 REMC/ABL ... 2 16244 6280
VST:
_Servers._srvparam* contains the values of Broker-specific startup parameters.
The following example is modified from Article:
How to find the Database Startup parameters for all login Brokers
DEFINE VARIABLE iParamCount AS INTEGER NO-UNDO.
FOR EACH _servers WHERE _Server-Pid = _Server-Broker-Pid:
DO iParamCount = 1 TO EXTENT( _servers._srvparam-name):
IF _srvparam-name[iParamCount] = "-threadedServer" THEN
DISPLAY _servers._server-type _servers._server-num
_servers._Server-Pid _servers._Server-Broker-Pid _servers._server-portnum
_servers._srvparam-name[iParamCount] _servers._srvparam-value[iParamCount].
END.