0

Is there a way to stop a single _mprosrv process started by the database broker? All I can find from documentation and google searches are ways to disconnect a single user connection or shut down the entire database.

For context, the problem is, that we are running an OpenEdge 10.2 database, that is mostly used by remote 4GL clients and one singular client using SQL over ODBC to run data export queries once a week. After rebooting the entire server in our current configuration, the database started up and broker spawned _mprosrv server processes up to the maximum number of servers allowed for the broker. Therefore it can't start up a _sqlsrv2 process any more, because all the slots are occupied. Even during low usage periods where no remote 4GL clients are connected, the ODBC connection does not succeed, since the idle servers are not shut down to allow new servers to be spawned.

Hence the question - can I shut down a single 4GL server process to trigger a new server creation for SQL connections without taking the entire database and application offline?

1

After googling around some more with different queries, I found my answer from the Progress Knowledge Base after all.

First of all, it turns out that indeed, the remote server processes by default stay active until database shutdown happens. So if all the slots are occupied by 4GL servers, they will not open up a slot for a SQL server by themselves.

However, the PROMON utility has commands to terminate specific server processes gracefully to free up server slots. The sequence of commands is as follows from the PROMON main menu:

  • R&D for Advanced options
  • 4 for Administrative functions
  • 7 for Server options
  • 7 for Terminate a server

From the server list find the server ID that needs to be terminated and type it in. After issuing the command, using the R option to refresh the screen the terminated server ID should show up as inactive.

After terminating a server, a new SQL server should be spawned if an ODBC connection to the system is initiated.

On Windows you might need to use a local user account, that is in the Administrators group. Domain users belonging to Administrators group are not allowed to terminate servers.

Sources:

  1. Background information how remote servers are handled
  2. Instructions on how to terminate a single server process
  3. Information on how domain administrator accounts are handled on Windows
0

This is a known feature of the way brokers work. The simplest solution is to start a secondary broker for SQL connections and restrict the primary to 4GL connections only. You should always limit a broker to a connection type. This is considered best practise these days.

This approach has other benefits, beyond the obvious you've outlined. SQL connections are often for reporting purposes and can have a heavy impact on the performance of the system for other users. With a secondary broker you can very easily throttle or boost the performance of a connection type by tweaking things like the the server count and the users per server count.

I hope this helps.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.