Informix: Tiempo de conexión alto a través de TCP/IP

Services Network

Informix: Tiempo de conexión alto a través de TCP/IP

Problema

Las aplicaciones clientes que usan el protocolo TCP/IP para conectar a Informix tardan mucho tiempo en establecer la conexión. Una vez la conexión se ha establecido el rendimiento es adecuado.

Causa

Mientras se establece la conexión, la dirección IP del cliente es utilizada por el servidor IDS para buscar su host name. El método usado para resolver el nombre dependerá de la configuración del sistema operativo. Si se utiliza Domain Name System (DNS), se utiliza la operación conocida como reverse query (petición inversa) para mapear la dirección IP con el nombre. Si la configuración del servidor DNS es incorrecta o incompleta esta operación puede tardar unos segundos.

Se puede utilizar el comando nslookup para realizar consultas al servidor DNS. Si la operación requiere un largo tiempo para ser completada o no logra resolverla el servidor IDS tardará también en realizar la operación.

También la causa podría ser el uso de direcciones IPv6 y que el servidor DNS no estuviese configurado para soportar este tipo de direcciones.

El primer ejemplo muestra una operación de reverse lookup para una dirección IP que es conocida por el servidor DNS y se completa inmeditamente:

C:\>nslookup 1.2.3.4
Server:  host1.domain.com
Address:  9.8.7.6

Name:    host222.domain.com
Address:  1.2.3.4

Este segundo ejemplo utiliza una dirección IP desconocida para servidor DNS y tarda unos segundos antes de devolver un error:

C:\>nslookup 9.69.1.126
Server:  host1.domain.com
Address:  9.8.7.6

DNS request timed out.
timeout was 2 seconds.
*** Request to host1.domain.com timed-out

El último ejemplo muestra una dirección IP también desconocida pero en cambio la respuesta es inmediata aunque no logra resolver la consulta, con lo que igualmente produce el problema para el servidor IDS.

[root@dbsrv1 etc]# nslookup 192.168.10.101
Server:         192.168.10.10
Address:        192.168.10.10#53

** server can't find 101.10.168.192.in-addr.arpa: SERVFAIL

Solución

La solución consiste en configurar correctamente el servidor DNS para que pueda hacer la resolución inversa de nombres. Es decir que dada una dirección IP devuelva el nombre del cliente que hay realizado la petición.

En un sistema operativo linux, que es el más comúnmente utilizado para la instalación de Informix hay que definir el fichero reverse del servicio named.

En el fichero de configuración /etc/named.conf se puede ver la ruta del fichero reverse, por ejemplo:

zone "10.168.192.in-addr.arpa" {
        type master;
        file "master/domain.net.rev";
        allow-transfer { key "deister-io"; };
        //allow-update ignored if allow-transfer is defined
        //allow-update { key "deister-dhcp"; };
        update-policy { grant deister-dhcp subdomain 10.168.192.in-addr.arpa. PTR TXT; };
        notify yes;
};

(donde “10.168.192” es la subnet de la red utilizada puesta en orden inverso).

El directorio de ubicación sería en SO Linux Mandriva /var/lib/named/var/named/master y el fichero domain.net.rev.

Un ejemplo de contenido del fichero domain.net.rev sería:

$TTL 172800     ; 2 days
@       IN      SOA     server_with_service_named.deister.net. root.domain.com.     (
2007040302      ;serial
14400                 ;refresh
3600                   ;retry
604800              ;expire
10800                ;minimum
)
 
10.168.192.in-addr.arpa.                IN      NS      server_with_service_named.deister.net.
 
1                IN      PTR     client1.deister.net.
2                IN      PTR     client2.deister.net.

El servidor server_with_service_named es el nombre del servidor que tiene el servicio named de DNS. Cada vez que se modifica el fichero hay que cambiar el serial y ejecutar service named restart para reiniciar el servicio named.