Kbase P42984: Can the remote server _mmprosrv.exe be stopped without shutting the database down?
Autor |
  Progress Software Corporation - Progress |
Acesso |
  Público |
Publicação |
  14/04/2009 |
|
Status: Verified
GOAL:
Is the remote server removed after a user logs off ?
GOAL:
Is there an environment variable that will control the _mprosrv timeout?
GOAL:
When no remote clients are connected to a remote spawned server, how long does the _mprosrv.exe stay active for ?
GOAL:
Can a remote server, _mmprosrv.exe, be stopped without shutting the database down?
FIX:
For client/server connections, once the database has been started and the primary broker initialised, remote servers are spawned ?as needed?. There is an overhead in their initialisation, so once they have been started they will remain active for the entire session. In other words, as can be seen in the closing messages of a database log file during a normal termination, they will not be removed until the database is shut down.
For example:
SHUT 4: Server shutdown started by <user-id> on <tty>. (542)
BROKER 0: Begin normal shutdown (2248)
SRV 3: Stopped. (2520) << here
SRV 2: Stopped. (2520) << and here
SRV 1: Logout usernum <num>, userid <name>, on <tty
ode>. (739)
SRV 1: Stopped. (2520) << and here, once connected clients have been successfully terminated
BROKER : Multi-user session end. (334)
There are no environment variables or client session startup parameters to control the termination of the remote servers. These can only be controlled as to how they are initially spawned which, is managed by how they are configured.
When the database is proserve'd, the primary login broker process (_mprosrv.exe) is initialised on the Server. This then listens for remote clients requesting a connection. It is only when the primary login broker receives a connection request, that it then spawns a remote server (_mprosrv.exe) on the portrange {-minport,-maxport } and then hands the remote client (prowin32 or _progres for example) over to communicate with the database through this channel. The broker will continue spawning remote servers depending on the number of client requests and on the values of the relevant client session startup parameters. These govern when a new remote server is spawned and how the client connections are allocated to each remote server.
(-Mn): Maximum Number of Remote Servers that can be spawned (period).
(-Mpb): Maximum Number of Remote Servers that can be spawned per broker (in the case of more than one broker being defined in the architecture with the ?m3 startup parameter for example).
(-Mi): Minimum Number of Clients connected per Remote Server before spawning another Remote Server.
(-Ma): Maximum Number of Clients allowed to connect per Remote Server
(-n): Maximum Number of connections to the database.
When a Remote Client connects to a Progress Remote Client Server, the server allocates RAM as needed from the operating system to satisfy the current requirements of the queries of all its connected users. The server does not release this memory, it holds the memory until it needs the memory again and will then use it. There is an overhead in spawning these servers, so they remain instate until the database is shut down.
A higher -Mn means that potentially more _mprosrv processes are going to be in memory, whereas a higher -Ma will mean that more clients connect to the database over any one server process, which can result in resource contention between these connections. This configuration needs to be balanced and tuned to give the best performance at each site.
In summary:
Is the remote server removed after a user logs off?
NO, once spawned, it will remain until the database is shut down
Is there an environment variable that you can control the _mprosrv timeout?
NO, TCP KEEPALIVE will manage dead clients and -clienttimeout will manage idle client connections, but there are no startup parameters or environment variables to manage remote server termination, only initialisation.
When no remote clients are connected to a remote spawned server, how long does the _mprosrv.exe stay active for?
As long as the database is up and running.
Can the remote server be terminated without shutting down the database?
Yes, since Progress 9.1E for 4GL/ABL remote servers and OpenEdge 10.1C for .SQL92 remote servers. For further information please refer to Solution: P39432, "How to trim ABL and SQL remote server processes".