Reducir el Tiempo, Reciclar y Reusar el Estado TIME_WAIT en conexión TCP

El presente instructivo tiene como finalidad presentar los pasos básicos necesarios para la configuración en el kernel de Linux del estado TIME_WAIT de conexión TCP.
Ésta configuración puede ser utilizada para optimizar las conexiones de servicios Web o Base de Datos, aunque es recomendado configurar una aplicación para el agrupamiento de conexiones (connection pooling) o en el caso del servidor WEB el Keep-Alive.

El agrupamiento de conexiones (connection pooling) permite entre otras cosas, el manejo de una colección de conexiones abiertas a una base de datos de manera que puedan ser reutilizadas al realizar múltiples consultas o actualizaciones. En el caso de los serviodres WEB (Apache), el “Keep-Alive”, permite “mantener viva” la conexión de un cliente durante algún periodo corto de tiempo.

En aplicaciones como Mysql, PostgreSQL, Oracle, entre otros entre otros suelen aperturar y cerrar conexiones a cada instante y dependiendo del número de usuarios y la demanda (peticiones por segundo), aumenta la posibilidad de sufrir degradación del servicio.

Cuando una conexión TCP se cierra activamente, el puerto DEBE permanecer en el estado de TIME-WAIT durante un tiempo de 2xMSL (Maximum Segment Lifetime), es decir 2 minutos, tiempo en el cual la conexión esta ocupada y no puede ser reutilizado inmediatamente.

A continuación esquema(Según Protocolo de Control de Transmisión RFC: 793) secuencia normal de cierre de una conexión TCP:

       TCP A                                                TCP B

  1.  ESTABLISHED                                          ESTABLISHED

  2.  (Close)
      FIN-WAIT-1  --> <SEQ=100><ACK=300><CTL=FIN,ACK>  --> CLOSE-WAIT

  3.  FIN-WAIT-2  <-- <SEQ=300><ACK=101><CTL=ACK>      <-- CLOSE-WAIT

  4.                                                       (Close)
      TIME-WAIT   <--  <SEQ=300><ACK=101><CTL=FIN,ACK> <-- LAST-ASK

  5.  TIME-WAIT   --> <SEQ=101><ACK=301><CTL=ACK>      --> CLOSED

  6.  (2 MSL)
      CLOSED

RFC 793. TRANSMISSION CONTROL PROTOCOL DARPA INTERNET PROGRAM PROTOCOL SPECIFICATION. 3.5. Closing a Connection. Secuencia de cierre normal. Figura 13
Leer más »

Anuncios

Instalar Fuentes Tipograficas en Linux

El presente instructivo tiene como finalidad presentar los pasos básicos necesarios para la instalación de fuente tipográficas de forma manual en Debian

Procedimiento

1. Seleccionar la fuentes a instalar:
Enlace: http://www.dafont.com/es/

2. Descargar la fuente a instalar:
Enlace: http://www.dafont.com/es/shanghai.font

3. Descomprimir archivo en la carpeta de fuentes del sistema

root@server:/tmp# unzip shanghai.zip -d /usr/share/fonts
Archive:  shanghai.zip
  inflating: /usr/share/fonts/english_.txt  
  inflating: /usr/share/fonts/shanghai.ttf 

Leer más »

Liberar Memoria RAM Cache de Linux

El presente instructivo tiene como finalidad mostrar los pasos básicos necesarios para el borrado de la memoria RAM cache del sistema.

Cuando se ejecuta una aplicación, la misma es cargada primero en la memoria RAM. Parte de la información del aplicativo queda en memoria RAM Cache, para cuando se vuelva ha ejecutar, no sea necesario cargarlo todo nuevamente y el proceso sea múcho más rápido.
Otra forma de utilizar memoria RAM Cache, es cuando tenemos mucha escritura en Disco (caso BD), ya que el Kernel de Linux graba primero en la memoria caché, para luego (cada cierto tiempo) hacer un volcado en el disco.

La limpieza y el manejo de la memoria RAM la hace el SO de forma automática, pero hay casos donde se hace necesario efectuar una limpieza “manual” para ellos debemos ejecutar los siguientes pasos:

1. Verificar el uso de la memoria RAM

root@server:/# free -m
             total       used       free     shared    buffers     cached
Mem:          7907       5962       1944        287         75        682
-/+ buffers/cache:       5203       2703
Swap:         1903        869       1034

2. Interpretar comando free -m en Linux

3. Limpiar los buffers del sistema de archivos:

root@server:/# sync

Leer más »

Desactivar OOM-Killer (out of memory killer) en Linux

El presente instructivo tiene como finalidad de desactivar la función del Kernel oom-killer.

El kernel de Linux asigna memoria a la demanda de las aplicaciones que se ejecutan en el sistema. Debido a que muchas aplicaciones asignan su memoria por adelantado y ha menudo no utilizan la memoria asignada, el kernel fue diseñado con la capacidad de “over-commit” de memoria, esto con la finalidad de hacer más eficiente el uso de la memoria. Este modelo de over-commit permite al núcleo asignar más memoria de la que realmente tiene físicamente disponible. Si un proceso utiliza realmente la memoria que fue asignada, el núcleo a continuación, proporciona estos recursos a la aplicación. Cuando varias aplicaciones comienzan a utilizar la memoria que le fueron asignadas, el modelo de over-commit puede ser problemático y el núcleo debe comenzar a “matar procesos” para mantenerse operativo. El mecanismo que el núcleo utiliza para recuperar la memoria en el sistema se conoce como “out-of-memory killer” o OOM-Killer.

Diagnóstico:

1. Verificar si el proceso oom-killer ha sido ejecutado en el sistema:

root@server:/# grep -i kill /var/log/messages*

2. Verificar uso de le memoria comando free

root@server:/# free -m

nota: Consultar interpretación comando free
3. verificar uso de la memoria comando vmstat

root@server:/# vmstat 3 50

Leer más »

ELementos de optimización (Tunning) PostgreSQL

EL presente instructivo tiene como finalidad configurar algunos elementos que optimizarán el funcionamiento de PostgreSQL en nuetro servidor.

Requisitos:

  • Se debe contar con suficiente privilegios para la configuración de aplicativos

Plataforma:

  • Equipos de arquitectura 64 bits
  • Sistema operativo ‘GNU/Linux’ Debian versión 6.0 (actualmente estable)

Aplicaciones:

  • PostgreSQL Versión 9.1

Nota: Parámetros establecidos con la finalidad de lograr un mejor desempeño de postgresql.
Las siguientes configuraciones se encuentran ajustadas para un equipo con 8GB de RAM

Configuración

1. Editar archivo de configuración de postgreSQL

root@server:/~# nano /etc/postgresql/9.1/main/postgresql.conf

Leer más »

Tips Seguridad Configuración servicio SSH

El presente instructivo tiene como objetivo presentar unos tips de seguridad para la configuración del servicio SSH.

Requisitos:

  • Tener una instalacion de servicio SSH activa (openssh-server)
  • Se debe contar con suficiente privilegios para la configuración

Plataforma:

  • Equipos de arquitectura 64 bits
  • Sistema operativo ‘GNU/Linux’ Debian versión 7.0

Aplicaciones o configuraciones complementarias:

1. Editar archivo de configuración de SSH:

operador@servidor:/~$ sudo nano /etc/ssh/sshd_config 

Leer más »

Instalación de Sistema de Gestión de Ticket OTRS 5

El presente instructivo tiene como finalidad describir de forma práctica y sencilla la instalación y configuración básica de la aplicación para gestión de requerimientos, manejos de colas, tickets, … OTRS (Open-source Ticket Request System)

Requisitos:

  • Se debe contar con suficiente privilegios para la configuración de aplicativos
  • Se debe contar con una computadora

Plataforma:

  • Equipos de arquitectura 64 bits
  • Sistema operativo ‘GNU/Linux’ Debian versión 8.0 (actualmente estable)

Aplicaciones:

  • Apache2 -> 2.4.10
  • MYSQL -> 5.5
  • PERL -> v5.20.2
  • OTRS -> 5.0.15

Instalación

1. Instalar aplicaciones:

root@otrsdatacenters:/# aptitude install -y mysql-server apache2

2. Instalar librerias y dependencias:

root@otrsdatacenters:/# aptitude install libapache2-mod-perl2 libdbd-mysql-perl libtimedate-perl libnet-dns-perl libnet-ldap-perl libio-socket-ssl-perl libpdf-api2-perl libdbd-mysql-perl libsoap-lite-perl libtext-csv-xs-perl libjson-xs-perl libapache-dbi-perl libxml-libxml-perl libxml-libxslt-perl libyaml-perl libarchive-zip-perl libcrypt-eksblowfish-perl libencode-hanextra-perl libmail-imapclient-perl libtemplate-perl bzip2 libdigest-md5-perl

3. Descargar OTRS

root@otrsdatacenters:/# wget http://ftp.otrs.org/pub/otrs/otrs-5.0.15.tar.bz2

Leer más »