Skip to main content

During investigation of customer's environment revealed that the INACTIVE session count is over 1500 always, Should the INACTIVE session be killed automatically when the idle time expired?

 

Checked the Database profile IFS_INETRNAL which is used for Database users, the IDLE_TIME is set to DEFAULT. Should this be set to UNLIMITED ?

 

Should there be a time on MAX IDLE TIME parameter OR leave as is where it always maintain 1500 odd INACTIVE sessions. This inactive sessions will hold on to resources with no legitimate reason and will create Possible performance issue.

 

Any recommendations/changes needs to stop  INACTIVE session count getting higher values ?

Hi @Dilhan Perera 

Yes an inactive session on the database should be automatically killed after the Idle time expires. Inactive session means there is no SQL executing via it on the database. Before the Idle time expires for that session if it executes any SQL then it becomes active again. That’s how the Active and Inactive session cycle works. There must be a value set for IDLE and MAX IDLE TIME parameters. If its set to default meaning it will take the default values defined by our system. You may check F1 docs for those default values.

If you have lots of inactive session - so many that they are consuming gobs of RAM - and you feel the need to clean them up. You have a problem that should be solved once and for all. Get to the root cause, what is CAUSING these inactive sessions that you can just kill? It sounds like you have a bug in your middle tier application and it is losing connections in a connection pool. Just thinking about killing Inactive session won’t resolve your problem (system performance issue). You need to find out what is root cause for that many session to be hang in the database. 


This will depend upon what version of IFS you are on.  If 9 or later, it is recommended to handle this with  IFS/Oracle Web logic settings.

In the IFS middleware server goto Main Cluster>Data Sources.  There is a min and a max capacity setting.  This controls what this server tries to operate within.

In Common>Http servers there are more settings that could override the other Main Cluster settings.  You have a Max Websocket Clients setting and ThreadLimit and ThreadsPerChild limit.  The application server will maintain as a bottom end 25% of the Max Websocket Clients.  So, if you have 450 set you will see that the server will never go below 112 sessions. 

In IFS 10 I have seen that there are other behind the scene sessions that will go idle and the only thing that clears this up is a restart.  Obviously, this is not a good fix for a production instance.


Hi @Dilhan Perera,

I can see some useful responses above, just thought I would add some more information to them.

First thing you might want to check is which user dominates the number of INACTIVE sessions. It would most probably be IFSSYS as all database connections are initiated as user IFSSYS in all MWS connection pools.

If the majority are IFSSYS, then you need to reconsider the number of connections assigned for each datasource configuration and decide whether you really need that many. Environment’s peak usage time should be taken into account and customer should also be consulted before making a decision to decrease the number of connections. You have the option to set minimum and maximum capacity for the number of connections, so especially check the minimum value.

You can adjust these values from IFS MWS Admin Console.

If you are curious about how MWS connection pools behave, have a look here in F1 Documentation:

https://docs.ifs.com/techdocs/foundation1/010_overview/400_core_server/020_middle_tier/connection_pooling.htm

 

Checked the Database profile IFS_INETRNAL which is used for Database users, the IDLE_TIME is set to DEFAULT. Should this be set to UNLIMITED ?

Regarding above - here what DEFAULT means is whichever the value set in Oracle profile named “DEFAULT” will be taken for this parameter. Therefore what you need to do is look up the value given for this parameter in DEFAULT profile. It would be UNLIMITED unless someone has changed it as that is the default value for all parameters in DEFAULT Oracle profile, as far as I can remember. 

So based on which values are set in DEFAULT profile, you would most probably have to set an IDLE_TIME in IFS_INTERNAL Oracle profile. Do not change values in DEFAULT profile. This is the most likely reason for this issue according to your problem description.

 

You can find the Oracle documentation for Oracle Profiles here:

https://docs.oracle.com/cd/B19306_01/server.102/b14200/statements_6010.htm

 

Hope this helps!


@Ragaventhan Sathananda 

@mwilson @Charith Epitawatta 

Many thanks for your assistance and informative details,really appreciate it.