21
Failed to open virtual socket for new connections
This error may be caused by a hardware problem.
The Adaptive Server Enterprise Network Handler listens on the ports specified in your network addressing (interfaces or sql.ini) file. When a connection comes in, the Network Handler opens another socket to redirect that client, clearing the listener port for the next connection, hence the term “virtual” socket. The connection appears, from the outside, to be connected to the interfaces port, when it is actually connected at a different address to which there is a pointer.
Error 1605 occurs when a failure occurs in the process of opening the new socket. There are a number of things that can cause this:
Exceeding the number of configured user connections
Exceeding the number of configured sockets
Network configuration problems such as using the same IP address for two different clients
Error 1605 error can be raised at:
Startup time, when the network is initialized.
Creation of a process, when a new connection request comes in and Adaptive Server is unable to handle it.
The forced termination of a process, when a new connection request comes in and Adaptive Server is unable to handle it.
The information below includes several internal configuration parameters. You will not be changing these directly, but they are included to help explain how to calculate values for sp_configure parameters that relate to connection handling. Following are the kernel and configuration parameters used to calculate cnsocket (the maximum number of virtual sockets):
kimaxfd – the maximum number of configured per process file descriptors that a process can use at a given time. The error log message “Using ## file descriptors” shows what this value is at boot time.
number of remote sites – this configuration parameter specifies the maximum number of remote sites.
number of user connections – this Adaptive Server configuration parameter specifies the maximum number of user connections allowed.
cnsocket – the maximum number of virtual sockets, calculated as:
cmaxnetworks (maximum # of user connections configured) + cusrconnections (the number of user connections configured) + cfgsitebuf (the number of remote sites configured) + XTRA_SOCKETS (defined as 2 in 11.0.x)
During start-up, if the value for cnsocket is greater than the value for kimaxfd, then the value of cnsocket will be set to the value of kimaxfd, and the message:
kistartup: number of virtual sockets set to ###
is printed to the log where ### is the value of kimaxfd/cnsocket.
Adaptive Server recalculates the value for cnsocket when you use sp_configure to change related parameter values.
Check the error that precedes the 1605 error. If that error is one of the following:
nopen: No virtual sockets available nopen: no room in socket table
then the value for the Server configuration block parameter cnsocket has been exceeded. To solve the problem in this case, increase user or network connections and possibly increase the maximum number of file descriptors per process:
Determine the current value for cnsocket.
Use dbcc resource (this command requires sybase_ts_role and dbcc tracecon(3604) to determine the current configuration for sockets.
Determine the current value for the maximum number of allowed network connections:
1> select @@max_connections 2> go
@@max_connections is the maximum number of file descriptors that the operating system allows for your server’s engine processes, minus a fixed number of descriptors needed by Adaptive Server. Refer to the chapter “Managing Multiprocessor Servers” in the System Administration Guide: Volume 2 for details about the @@max_connections calculation.
Determine the current value for number of devices (the number of database devices that Adaptive Server can use, excluding dump devices):
1> sp_configure "number of devices" 2> go
Determine an appropriate value for @@max_connections, based on the number of users expected to be logged on at any given time, and the number of devices. Remember that each device takes up a user connection.
Compare the appropriate value for sockets to the
current value for sockets which you determined in step 1. (Remember
that maximum number of virtual sockets = max
number network listeners + number of user connections + number
of remote sites + 2.
)
If the current value is too low, use sp_configure to increase the value of number of user connections and/or number of remote sites so that the calculated value for sockets will be correct. If the error persists, call Sybase Technical Support.
Under UNIX, you may need to raise the maximum number of file descriptors at the operating system level for the Adaptive Server if the new value for cnsocket exceeds the maximum number of per process file descriptors times the number of online engines for 11.0.x and later versions. Refer to “number of user connections” in the chapter “Setting Configuration Parameters” in the System Administration Guide: Volume 1 for information about managing the maximum number of user connections available on an Windows server.
Refer to “Setting Configuration Parameters” in the System Administration Guide: Volume 1 for information about configuration parameters. Refer to the Reference Manual: Procedures for information about sp_configure.
For parameter information specific to your platform, refer to the Adaptive Server installation and configuration guide for your platform.
If you need to call Technical Support, have the information listed in “Reporting errors” available, including the output of dbcc resource and sp_configure.
All versions