How to set the values for the startup parameters -Ma, -Mn and -n

« Go Back


Article Number000020228
EnvironmentProduct: Progress
Version: 8.x, 9.x
Product: OpenEdge
Version: 10.x, 11.x
OS: All supported platforms
Question/Problem Description
How to set the values for the startup parameters -Ma, -Mn and -n
How to plan the Maximum Clients Per Server (-Ma)?
How to calculate the numbers of clients per server?
What is the recommended number of clients per server?
Tuning with -Mn, -Ma, -Mi and -n parameters
Example of how all the "-Mn", "-Ma", "-Mi" and "-n" are used with each other
Steps to Reproduce
Clarifying Information
Error Message
Defect/Enhancement Number

The parameters that impact the number of connection to a single database are:

  • "-n" Parameter: Sets the maximum numbers of connections to the database, that counts all, remote and local connections.
  • "-Mi" Parameter: Sets the minimum number of remote connections that should to be connected to a server process before broker spawns a new server if -Mn has not yet being reached.
  • "-Mn" Parameter: Sets the maximum number of servers that can be started. 
  •        (In Progress Explorer the above reference is the same as the Maximum servers within the Configuration properties)
  • "-Ma" Parameter: Sets the maximum number of remote connections that a server can have.
  • "-Mpb" Parameter:  Sets the maximum number of servers that a particular broker can spawn. 
  •        (In Progress Explorer the above reference is the same as the number of servers in the servergroup properties)

When running, the database will increase the count of sessions (-n value) for:

Each process connected to shared memory:

  • 1 per remote server
  • 1 per auxiliary process (page writer -- biw / apw -- and watchdog)
  • 1 per self-service client
  • 1 for the broker processes (1 for the main broker + 1 per additional broker)

Each remote client connected to a server.

To set -Ma, -Mn and -n startup parameters appropriately define:

  1. The maximum number of concurrent remote users.
  2. The maximum number of concurrent local users (self service clients).
  3. Set -Ma as high as possible but lower than 11 (increasing above 10 clients per server may degrade performance, decreasing it under 5 will require more server processes creating unnecessary overhead).

The default value for -Ma is 5 and its maximum value is 2048, this value represents the maximum number of queued client processes. If the application requires long and heavy queries and there is performance degradation, -Ma may need to be decreased.

  1. Calculate -Mn (the number of required servers) by dividing the maximum remote users by the value of -Ma, plus 1 for each extra secondary broker if any.
  2. The product value(-Ma) * value(-Mn) must be equal to the maximum number of remote users.
  3. The formula for -n is: value(-n) = (maximum # of remote users) + (maximum # of local users) + 2.

Where the value "2" in the formula above will be used by proMon and proShut utilities connect to the DB.

  1.  Keep the following relation:

value(-Ma) * value (-Mn) < value(-n)

Example 1:

Remote users: 32
Local users: 15

Value(-Mn)=(Remote users)/Value(-Ma)= 32/8 = 4 (plus 1 for each extra secondary broker if any)

Set -Mn 4, -Ma 8, -n 49

Example 2:

In this example assume that 40 users are needed and 8 extra connections are given for promon and other background processes like the Watchdog, the Asynchronous Page Writers, etc.

proserve sports2000 -S prosv00 -Mi 3 -Ma 4 -Mn 13 -n 60

The sports2000 should be replaced with the dbname, prosv00 replaced with the correct port number or service name for remote connections.  When using multiple brokers, the count of servers (-Mn) can be split across brokers using -Mpb:

proserve sports2000 -S prosv00 -n 60 -Mn 13 -Mi 4 -Mpb 6
proserve sports2000 -m3 -S prosv01 -Mi 4 -Mpb 6

The "-Mpb" setting of 6 for each broker allows each port to spawn a maximum of 6 servers each. -Mn is set to the total number of remote servers that can be spawned [6 for the primary broker + 6 for the secondary broker + 1 for the secondary login broker since each secondary login  is counted as a server = 13].

For further information refer to Article 000021731, How to set up a secondary login broker for SQL-92 connections for Progress/OpenEdge database?  

Example 3:

The following example shows how to edit -Ma, -Mn and -n using OpenEdge Management and OpenEdge Explorer.

1.Open OpenEdge Explorer or OpenEdge Management.

2.Select the resources tab. 

User-added image

3.Select the database that needs to be edited

 User-added image

4. Select Configuration

 User-added image

5. Select configuration.<DBNAME>.defaultconfiguration 

User-added image

6. Select Edit.
    Edit Max Users and Max Servers to the required number.
    Select Save.
    Select Configuration to return to the Configuration Page.

User-added image

7. Select servergroup.<DBNAME>.defaultconfiguration.defaultservergroup

 User-added image

8. Select Edit

 User-added image

9. Edit Maximum clients per server and Minimum clients per server to the required amount and select save.

User-added image

 10. For multiple broker configurations repeat steps 5 through 9, as described in Article:

References to other Documentation:

Progress Database Administration Guide and Reference, "PART III", 18 Database Startup Parameters

Progress Articles:

000043767, How to configure a secondary SQL broker for an OEM/OEE Managed database?

Note that before version 9.1x the SQL broker could not serve more than one session per server.
Last Modified Date3/26/2019 10:16 AM

Did this article resolve your question/issue?


Your feedback is appreciated.

Please tell us how we can make this article more useful. Please provide us a way to contact you, should we need clarification on the feedback provided or if you need further assistance.

Characters Remaining: 1025