Sockets TCP, optimizando y evitando limitaciones

Artículos de interés para la comunidad de Velneo 6x
Avatar de Usuario
velneo
vAdmin
vAdmin
Mensajes: 245
Registrado: 09 Sep 2005, 08:55

Sockets TCP, optimizando y evitando limitaciones

Mensaje por velneo » 12 Abr 2012, 12:45

Hemos hablado muchas veces de cómo optimizar nuestras aplicaciones para que tengan una mejor experiencia de usuario. Ya sabemos que hay muchos factores que favorecen la experiencia de usuario, pero está claro que cuando un usuario hace clic, quiere que el programa responda.

Tiempo de latencia
Por esa razón incidimos mucho en controlar la generación de sockets, sobre todo para aplicaciones en remoto. La razón es sencilla: cada vez que establecemos un socket existe un tiempo de latencia que determina la red a la que estamos conectados y que es la suma de los tiempos de conexión entre los distintos nodos en que nos movemos, teniendo en cuenta ida y vuelta además. Debemos diferenciarlo del ancho de banda, que es la cantidad de información que se mueve por segundo.

Ese tiempo de latencia hemos de sumarlo al tiempo que se emplea en realizar las tareas en el servidor al que hacemos la petición. Cuando la tarea es larga, y el usuario lo espera, no se nota mucho, pero cuando el usuario no lo espera y la tarea es corta, o se realiza muchas veces, la experiencia de usuario se ve perjudicada ya que ha de sumarse ese periodo de latencia a cada operación.

El ejemplo se puede ver muy claro en algunas conexiones vía satélite o ADSL Rural. Estas conexiones pueden ser muy rápidas, con un ancho de banda de descarga amplio, pero también suelen tener un tiempo de latencia más alto de lo normal, superando el segundo en algunas ocasiones. Esto quiere decir que si pulsamos un enlace en una web, por ejemplo, tarda más de un segundo en pedirla. Eso sí, por grande que sea el tamaño del contenido, se descarga rápidamente una vez que la petición ha sido realizada. Al final, la experiencia de usuario se puede ver perturbada porque ha de esperar más de un segundo cada vez que quiera seleccionar una opción distinta.

Herramientas
Esto, pero en otra escala, claro está, es lo que tratamos de evitar con la optimización de sockets. Para ello tenemos una herramienta muy sencilla. Cuando necesitamos saber cuál es la generación de sockets de una cierta opción, de un proceso, de una carga de menú sincronizado, etc., nos basta acudir a Velneo vServer, y en la opción del menú Acerca de... tendremos información del número de conexiones (sockets) VATP realizadas, además de otra información interesante.

Esta simple herramienta nos permite llevar cuenta de los sockets generados por nuestra aplicación de una forma precisa y además en tiempo real, ya que el contador se actualiza de forma automática a medida que se van produciendo conexiones.

Además del acumulado de conexiones, otro dato del que disponemos es el número de conexiones o sockets instantáneo. Podemos saber en un momento dado cuántas conexiones se están produciendo. Este valor lo podemos ver reflejado en la barra de estado del interfaz del servidor, en la que además de saber que está activo el servidor por medio del primer elemento del semáforo, sabemos que hay conexiones porque aparece en verde el segundo elemento del semáforo, y el número de tareas nos indica el número instantáneo de conexiones que tiene establecidas el servidor.

Evitando limitaciones
Un apunte más, que es el que nos hace recomendar encarecidamente el uso de sistemas operativos para servidor en vuestras instalaciones de Velneo vServer, es que existen ciertas limitaciones en los sistemas operativos cliente en cuanto al número de sockets de entrada por segundo que permiten, por razones de seguridad.

Por encima de ese límite el sistema operativo rechaza todas las conexiones hasta que no se baje del limite, lo que implica una ralentización de la respuesta de los servidores que perjudicará la experiencia de usuario de nuestras aplicaciones.

Esta limitación no es únicamente aplicable a Velneo vServer si no que entran en la cuenta todas las conexiones del tipo que sean, exceptuando las de conexiones de administración del propio sistema operativo. Si en un mismo equipo tenemos varios elementos de software que hacen uso continuado de la comunicación TCP, se encontrarán luchando por hacer uso de las conexiones disponibles, sobre todo cuando haya conexiones de carácter permanente.

A continuación os mostramos una tabla con las limitaciones que facilita el fabricante, y además os damos una serie de enlaces al mismo con información al respecto.

Limitaciones de conexiones de entrada simultáneas por sistema operativo (sockets por segundo)
Windows 2000 Server Sin límite/Configurable
Windows 2003 Server Sin límite/Configurable
Windows XP Home 5
Windows XP Professional 10
Windows Server 2008 Sín límite/Configurable
Windows Vista Home Premium Edition 3
Windows Vista Home Basic 3
Windows Vista Starter 3
Windows Vista Ultimate 10
Windows Vista Business 10
Windows Vista Enterprise 10

Enlaces
http://technet2.microsoft.com/windowsvi ... x?mfr=true
http://technet2.microsoft.com/windowsse ... x?mfr=true
http://support.microsoft.com/kb/314882/en-us

Responder