Skip to end of metadata
Go to start of metadata

 

Version


Altibase HDB 5 or later

 

Symptom


When a new connection attempt from the client to the Altibase server fails with the following error message,

The following error message can be seen in the altibase_boot.log of the Altibase server.

 

Cause


This occurs when the number of tasks created in the Altibase server reaches MAX_CLIENT.

 

Task is an object created when a new connection is made to the Altibase server. The maximum number of simultaneous creations is affected by the value of the Altibase server property MAX_CLIENT.

When the number of currently created tasks reaches MAX_CLIENT and a new task object cannot be created, a task pool overflow message appears.

MAX_CLIENT also refers to the maximum number of sessions that can be connected at the same time, but the task is affected by the same properties because it is eventually mapped to a session.

The following are possible causes.

When the number of new connections increases


This can happen when the number of new connections increases and the number of tasks exceeds MAX_CLIENT.

 

When all service threads are in EXECUTE state and a new connection occurs


If a new connection fails while all service threads are in EXECUTE state, the connection remains in the form of a task in the Altibase server. Therefore, even if the connection fails for this reason, the number of tasks increases as a new connection occurs.

When the connection fails as shown below,

If the number of tasks exceeds MAX_CLIENT, the connection failure error message changes as follows.

 

When a new connection occurs while the number of transactions reaches TRANSACTION_TABLE_SIZE


If a new connection fails while the number of concurrent transactions reaches TRANSACTION_TABLE_SIZE, the connection remains in the form of a task in the Altibase server. Therefore, even if the connection fails for this reason, the number of tasks increases as a new connection occurs.

When the connection fails as shown below,

If the number of tasks exceeds MAX_CLIENT, the connection failure error message changes as follows.

 

In this case, the following message appears in altibase_boot.log.

 

 

How to check


Checklist

To find the cause of the task pool overflow, the following items must be checked.

  • MAX_CLIENT property setting value
  • Number of sessions connected to Altibase server
    If the number of sessions connected to the Altibase server is equal to MAX_CLIENT, it is caused by increased sessions. If it is less than MAX_CLIENT, check the number of tasks.
  • Number of tasks created in Altibase server
    If the number of sessions is less than MAX_CLIENT and the number of tasks is equal to or greater than MAX_CLIENT, you can suspect the cause below.
  1. When all service threads are in EXECUTE state and a new connection occurs and the task is increased.

  2. When the number of transactions reaches TRANSACTION_TABLE_SIZE and a new connection occurs and the task increases

  • $ALTIBASE_HOME/trc/altibase_boot.log
    If the number of transactions exceeds TRANSACTION_TABLE_SIZE, the message TRANSACTION_TABLE_SIZE is full is left.

How to check MAX_CLIENT setting value

Task pool overflow occurs when the number of tasks exceeds the value of the MAX_CLIENT property, so check the value of this property first.

  • When iSQL connection is possible

  • When iSQL connection is not possible

How to check the number of sessions

  • When iSQL connection is possible

    If iSQL access is available, the number of sessions can be checked with the performance view, and through this, you can infer the cause of task pool overflow to some extent.
    If the current number of sessions is compared with the MAX_CLIENT value, and the value is the same, the increase in sessions is the cause.
    If the current number of sessions is less than MAX_CLIENT, it could be due to two other things than the session growth.

    How to check the number of sessions
  • When iSQL connection is not possible

    If it is difficult to connect to iSQL, the number of sessions must be checked with the information on the OS.
    Depending on the client's connection method, there are two ways to check it.
    In the case of connecting using both TCP and IPC methods, the user can add up the results and compare them with MAX_CLIENT to determine whether the increase in sessions or other parts are the causes.

    When the client connects with TCP
    When the client connects with IPC

How to check the number of tasks

  • When iSQL connection is possible

    If the number of sessions is less than MAX_CLIENT, other causes should be investigated.
    Check the number of tasks with the command below and compare the number of tasks with MAX_CLIENT. The value of logon current means the number of tasks created and can be greater than the number of sessions.

    If the number of sessions is less than MAX_CLIENT and the value of logon current is equal to or greater than MAX_CLIENT, there are two possible causes:
    -When all service threads are in EXECUTE state and a new connection occurs and the task increases
    -When a new connection occurs while the number of transactions reaches TRANSACTION_TABLE_SIZE and the task increases

  • When iSQL connection is not possible

    The number of created tasks can be checked by the logon current value of v$sysstat. However, if a task pool overflow occurs, you may not be able to execute the above statement because a new connection cannot be established.
    In this case, the number of tasks must be checked with the number of open files in the Altibase server process with the lsof command.

    Example of executing lsof in Linux

    On Solaris, the pfiles command can be used instead of lsof.

Solution


Change MAX_CLIENT property


If there are many actual simultaneous connection sessions, you need to change MAX_CLIENT.

When the number of simultaneous connection sessions increases, the number of concurrent transactions increases, and in the case of Unix/Linux systems, the number of open files increases.

Therefore, if you change MAX_CLIENT larger than the existing value, the following values must be changed as well.

  • TRANSACTION_TABLE_SIZE
  • max open files

Refer to "Notes/Considerations when increasing the number of concurrent connection sessions (MAX_CLIENT)"

Review application


 

If the application has the following characteristics, it is necessary to check again.

 

Unless the above processing is inevitable due to the nature of the service, consider changing the session to end immediately after the transaction is completed.

  • If keep making new connections

  • Maintaining unnecessarily connected sessions even though they no longer need to be connected

 


 


  • No labels