We had issue with our Mfg/pro application "server has no more resources" .Database is up and running fine but application we are not able to connect.
Some times user able to connect to application for 5 mins after that user facing same issue.
In promon it shows user 108 users.
Promon > 5:Activity> 25 Servers, 108 Users (1 Local, 107 Remote, 1 Batch),4 Apws
.pf file
-n 1050 # Number of users
-Ma 20 # Maximum Clients per Server
-Mn 50 # Maximum servers
-Mi 5 # Min processes on a client server
Progress verison : 9.1E
Unix O/S: Aix 5.3
In database log file we found below error.
10:44:19 BROKER 0: No servers are available. Try again later. (1154)
10:44:36 BROKER 0: No servers are available. Try again later. (1154)
10:44:59 BROKER 0: No servers are available. Try again later. (1154)
I would like to know whether we need to Change -Ma -Mn and -Mpb parameter values?
proserve .../prd/db1 -m3 -Mi 3 -Ma 15 -Mn 20 -Mpb 4 -S prdreyoi -ServerType SQL
Are we good with these values?
>>proserve .../prd/db1 -m3 -Mi 3 -Ma 15 -Mn 20 -Mpb 4 -S prdreyoi -ServerType SQL
Through this secondary broker to the database can be a maximum of 60 SQL-connections. (-Mpb * -Ma).
You should also check the values of the -minport / -maxport parameters. The range of port numbers defined by the -maxport and -minport parameters provides client access to an OpenEdge server.
By default, -minport = 1025, -maxport = 2000.These ports should be free and open in a firewall. Otherwise, you must specify a different range.
The number of available servers and the number of current users on these servers can be viewed in promon -> R&D -> 1. Status Displays -> 3. Servers
I not able to understand in our setup 1000 connection can connect to database but during this errors only 108 user connected.What went wrong here?
1. Provide all the start commands that you use for database startup.
2. If the primary broker is used only for connecting ABL clients, and the number of remote client servers is not limited to the primary broker (-Mpb), then eventually all servers can be occupied for processing only ABL clients and only a small part of the servers could be allocated to SQL clients. A single server can process only one type of client. So for the new SQL-connections simply no room.
I recommend you review this article and check the correctness of your startup parameters for the primary and secondary database brokers for your database:
Usually when this error is encountered it's because the database is unable to spawn additional servers.
Check your port range. And verify that there are no other applications that are using ports in that range. In addition, you must ensure that you are picking a port range that does not have entries in your services file. The database engine will not start any servers on ports that have service entries, even if nothing is currently using those service ports.
HI Mark,
Sorry for delay response, to resolve this issue we restarted database.
Fyi......... once again we faced this issue "server has no more resources" on production database.
All Databases up and running fine but application we not able to access.
Progress version : 9.1e
Os version : Aix 5.3
uptime:
01:06AM up 2 days, 23:03, 95 users, load average: 0.52, 1.66, 1.68
Promon details :
35 Servers, 41 Users (4 Local, 37 Remote, 4 Batch),4 Apws
RETURN - show remaining, U - continue uninterrupted, Q - quit:
Broker status: Executing
BI Writer status: Executing
AI Writer status: Executing
Watchdog status: Executing
Number of page writers: 4
Number of self-service users: 4
Number of remote users: 34
Number of servers: 35
Number of shut-downs: 0
Number of monitors: 1
Active transactions: 1
Lock table entries in use: 103 of 1024000
Lock table high water mark: 2193
Number of servers: 34 (36 allocated)
Total users: 38 (1000 allocated)
Self-service: 4
Remote: 34
Batch: 4
And also as you mentioned regarding Minport and max port values please find the values for below
crn.pf
minport 13100 # Min Port Number
-maxport 14999 # Max Port Number
Both for production and test server has same port number are assigned but they assigned in two different server.Is their any conflict.
cat /etc/services
prod server
crn 13033/tcp # MFG/PRO N9
cat /etc/services
test server
crn 13033/tcp # MFG/PRO N9
Fyi,,, whenever we are facing this issue we seen connection timed out errors in all database log file for both test and prod servers.
18:41:29 SRV 31: Connection timed out on socket=115 for usernum 1, attempt disconnect. (1280)
18:41:30 SRV 31: Error reading socket=115 ret=-1 errno=22. (795)
18:41:30 SRV 31: Error reading socket=115 ret=-1 errno=22. (795)
18:41:48 SRV 18: Login usernum 970, userid areyes2, on mhlctxqad07a. (742)
18:42:20 SQLSRV2 3: SYSTEM ERROR: Memory violation. (49)
18:42:20 SQLSRV2 4: SYSTEM ERROR: Memory violation. (49)
18:42:50 BROKER 0: Disconnecting dead server 3. (2525)
18:42:50 BROKER 0: Disconnecting dead server 4. (2525)
18:44:24 SRV 10: Logout usernum 1009, userid bjenson, on mhlctxqad07a. (739)
18:44:55 SRV 31: Connection timed out on socket=115 for usernum 1, attempt disconnect. (1280)
18:45:00 SRV 10: Login usernum 1009, userid pgresdba, on p5lp5 batch. (742)
18:45:01 SRV 31: Error reading socket=123 ret=-1 errno=22. (795)
18:45:03 SRV 10: Logout usernum 1009, userid pgresdba, on p5lp5 batch. (739)
18:45:32 SRV 31: Connection timed out on socket=115 for usernum 1, attempt disconnect. (1280)
18:45:37 SRV 31: Error reading socket=117 ret=-1 errno=22. (795)
18:45:37 SRV 31: Error reading socket=123 ret=-1 errno=22. (795)
18:46:07 SRV 31: Connection timed out on socket=115 for usernum 1, attempt disconnect. (1280)
18:46:12 SRV 10: Login usernum 1009, userid marceo, on mhlctxqad07a. (742)
18:46:15 SRV 18: Login usernum 969, userid marceo, on mhlctxqad07a. (742)
18:46:23 SRV 31: Error reading socket=115 ret=-1 errno=22. (795)
18:46:53 SRV 31: Connection timed out on socket=115 for usernum 1, attempt disconnect. (1280)
18:47:23 SRV 31: Connection timed out on socket=115 for usernum 1, attempt disconnect. (1280)
crn.pf
-B 70000 # Number of Blocks in database buffer
-bibufs 200 # Number of before-image buffers
-aibufs 300 # Number of after-image buffers
#-Mi 2 # Min processes on a client server
-Ma 15 # Max number of REMOTE clients per db server
-Mn 35 # Max number of REMOTE client servers
-n 1000 # Max number users.
-Mxs 32768 # Shared memory overflow size (override)
-spin 12000 # Number of spin lock retries
-L 1024000 # Lock Table entries
"Status: Servers" screen (promon/R&D/1/3) is a must if you're getting the "server has no more resources".
You can get the same data from a full db log but you need a program to process the log.
You should use the -Mpb parameter to start a primary login broker. You're using the -Mpb to start only a secondary login broker (-m3 -Mpb 4 -ServerType SQL).
There was at least 31 servers for 4GL clients ("SRV 31"). You allows to start 4 servers for SQL clients (-Mpb 4). But you allocate only 36 slots (-Mn + 1) used by the servers as well as by two login brokers. Hence the remote client servers of both types can use only 34 slots (= 36 - 2). It's not enough. Either increase the -Mn or better set -Mpb 30 to start the primary login broker.
HI George,
Thanks for suggestion.
Yes we are using -Mpb to start secondary login broker process.
proserve /progdata/prd/crndb1/prdcrn -m3 -Mi 3 -Ma 5 -Mpb 4 -S prdcrnoi -ServerType SQL
Actually we have provided 650 remote connections.
-Ma 15 # Max number of REMOTE clients per db server
-Mn 35 # Max number of REMOTE client servers
How much -Mpb i need to set for primary login broker to start ?
"set -Mpb 30 to start the primary login broker."
Thanks George i will do that.
Any thing i need to update these below values also?
crn.pf
minport 13100 # Min Port Number
-maxport 14999 # Max Port Number
I'd suggest to double the value of the -Mn parameter and to use a login boker for 4GL clients separated from database server (as you do for SQL clients). Each login boker should use its own set of parameters (-Mpb, -Mi, -Ma, -minport, -maxport). The minimal value of the -Mn parameter is the sum of -Mpb per all login brokers plus the number of login brokers but it would good idea to reserve more slots in the server's table. The -minport/-maxport should set the range that at least equal to the -Mpb but a reserve can help during the "bad" days: when a few ports will not work or will be used but other (non-Progress) processes.