That's an awful lot of connections for a database as poorly configured as this one is but I suppose that we can save performance considerations for later.
For 400 4GL connections I suggest:
-Mpb 40 -Ma 10 -Mi 1
In English that is 40 "remote servers" for this broker with each server supporting 10 connections and connections assigned "round robin"
For 200 SQL connections:
-Mpb 20 -Ma 10 -Mi 1
To do that you need the initial -Mn (total number of servers across all "login brokers") to be at least the sum of the -Mpb parameters plus a little bit, so -Mn 60 is a good value. You also need -n to be large enough to accommodate all of the servers (-Mn 60) plus all of the connections (the sum of all of the ( -Ma * -Mpb ) combinations plus any local users plus a bit so 700 is a good value.
You should also always specify the -ServerType as either "4GL" or "SQL".
You should have distinct service names and port numbers for the 4GL and SQL brokers. Ideally these are already setup in /etc/services. You are already using names for the 4GL services so you should just need to lookup existing names for SQL services (that might have been created when somebody previously attempted to get SQL going) or just assign some new ones.
Each broker should also have a distinct -minport and -maxport range that is a bit "wider" than the -Mpb. (I usually just round up to the next multiple of 100.)
To start a database with that configuration use the following three commands rather than a single "proserve":
Code:
proserve dbname -n 700 -Mn 60 # any other database startup parameters, like "-L"...
proserve dbname -m3 -Mpb 40 -Ma 10 -Mi 1 -H localhost -S 4gl-serviceName -ServerType 4GL -minport 10000 -maxport 10099
proserve dbname -m3 -Mpb 20 -Ma 10 -Mi 10 -H localhost -S sql-serviceName -ServerType SQL -minport 10200 -maxport 10299
You should then be able to see that there is a "sqlsrv2" process running and test connections with "sqlexp" as previously described.