Salesforce

Starting the multithreaded database server

« Go Back

Information

 
TitleStarting the multithreaded database server
URL Namestarting-the-multithreaded-database-server
Article Number000129297
EnvironmentProduct: OpenEdge
Version: 12.x
OS: All supported platforms
Question/Problem Description
How to start a threaded database server?
How to run a multi thread OpenEdge 12 database
How to start a database multithreaded for remote client requests?
How to verify a database is running multi-threaded remote servers?
How to assure the threaded model is used to process remote client requests concurrently.
Can the database use both classic and multi-threaded remote servers?
Does _mtprosrv need to be used to start multithreaded db server instead of _mprosrv?
Starting the multi-threaded database server without proserve fails "-m1 required with this executable"
Steps to Reproduce
Clarifying Information
Error Message
Defect Number
Enhancement Number
Cause
Resolution
This Article serves to compliment the current Documentation. Instructions on starting the Threaded Database Server are found in the documentation below:
Introduction to Threaded Database server
https://docs.progress.com/bundle/openedge-threaded-database/page/Threaded-Database-Server-Functionality-and-Benefits.html
 

Initiate a Threaded Server Process
https://docs.progress.com/bundle/openedge-threaded-database/page/Initiate-a-Threaded-Server-Process.html

 

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.

 
Workaround
Notes
Keyword Phrase
Last Modified Date9/30/2022 3:49 PM

Powered by