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

Configuración

1. Verificar las conexiones TIME_WAIT

root@server:/# netstat -nat | awk '{print $6}' | sort | uniq -c
      6 CLOSE_WAIT
      1 established)
     18 ESTABLISHED
      1 Foreign
     38 LISTEN
     10 TIME_WAIT

Leer más »

Anuncios

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 »

Comando de administración Pgpool modo Balanceo de Carga y Postgresql replication Slots

Monitoreo replication slots PostgreSQL:

1. Comprobar el “modo recovery” de servidor (server slave)

postgres=# select pg_is_in_recovery();

2. Comprobar el modo “replication slot” (server master)

postgres=# select * from pg_replication_slots;

3.- Comprobar si la replicación se encuentra activa (server master)

postgres=# select * from pg_stat_replication;

Leer más »

Cambio Huso Horario Postgresql version 9.1 Venezuela 2016

El presente instructivo tiene como finalidad suministrar los pasos necesarios para el cambio del huso horario en manejador de Base de Datos Postgresql versión 9.1

Configuración:
Nota: Ante de ejecutar los siguientes pasos, Debe haber cambio el huso horario en su sistema operativo Cambio huso horario Venezuela 2016

Para cambiar la zona horaria de postgresql en su versión 9.1, se hace necesario efectuar:

1. Editar el postgresql.conf

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

Efectuar los siguientes cambios:

 timezone = 'America/Caracas'
 log_timezone = 'America/Caracas'
 

Leer más »

Pgpool2 modo Balanceo de carga con Streaming Replication y Replication Slots en Postgresql 9.4

El presente instructivo tiene como finalidad dar a conocer la instalación y configuración básica de pgpool2 en modo balanceo de carga, para una configuración de Streaming Replication o Replication Slots en PostgreSQL.

Desde la versión 3.0 de pgpool, se encuentra adaptado a la funcionalidad de Streaming Replication/hot Standby, presentes a partir de la versión 9.4 de PostgreSQL.

PgPool-II asume actualmente que Streaming Replication se utiliza en modo Hot Standby, lo que significa que la base de datos en espera(esclavo) estará abierto en modo de sólo lectura.

El balanceo de carga pgPool-II es “basado en sesiones”, y no “basado en declaraciones”. Esto quiere decir, que la selección de nodo DB para el balanceo de carga se elige al principios del período de sesiones. Así que todas las sentencias SQL se envían al mismo nodo DB hasta que finalice la sesión.

En pgPool-II 3.0 o posterior, la sentencia SELECT será balanceada incluso en una transacción, si se configura en el modo maestro/esclavo.

Nota Importante: PgPool-II necesita conocer las “FUNCIONES” que poseen instrucciones destinadas a escribir, borrar o actualizar la base de datos. Dichas funciones son llamadas con SELECT por lo que pgPool-II no debería hacer balanceo de carga. Es por ello que se hace necesario agregar el nombre de dichas funciones en la opción “black_function_list”. Estas funciones no serán balanceadas. En PgPool-II 3.0 hace una búsqueda recursiva y puede encontrar esas funciones en cualquier lugar.

ejemplo: black_function_list = ‘currval,lastval,nextval,setval,my_writing_function’

Requisitos:

  • Se debe contar con suficiente privilegios para la configuración de aplicativos
  • Se debe contar con instalación del servicio SSH (servidor y cliente)
  • Se debe tener implementado Replication Slots in PostgreSQL 9.4 http://wp.me/p13Tvb-a6
  • o en su defecto Streaming_Replication PostgreSQL http://wp.me/p13Tvb-7E

Plataforma:

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

PASO 1
Instalación:

operador@PGPOOL01:/# aptitude install pgpool2 postgresql-9.4-pgpool2

Leer más »

Replication Slots in PostgreSQL 9.4

EL presente instructivo tiene como finalidad la configuración de Streaming replication slots in PostgreSQL 9.4

Streaming replication slots, está presente a partir de la versión 9.4 de postgreSQL y proporcionan una forma automatizada para garantizar que el maestro no elimina segmentos WAL hasta que se asegure que hayan sido recibidas por todos los recursos(esclavos), y que el maestro no elimina las filas que podría causar un conflicto de recuperación, incluso cuando se desconecta el modo de espera (esclavo).

En lugar de utilizar Streaming replication slots, es posible evitar la eliminación de segmentos WAL viejos utilizando wal_keep_segments, o mediante el almacenamiento de los segmentos en un directorio (archive) usando archive_command. Sin embargo, estos métodos a menudo resultan en la retención de más segmentos WAL que se requiere, mientras que las ranuras de replicación retienen sólo el número de segmentos que se sabe que sea necesario. Una ventaja de estos métodos es que limitan la necesidad de espacio para pg_xlog; actualmente no hay manera de hacer esto utilizando las ranuras de replicación.

Requisitos:

  • Se debe contar con suficiente privilegios para la configuración de aplicativos
  • Se debe contar con instalación del servicio SSH (servidor y cliente)
  • Se debe contar con instalación de postgresql 9.4 en servidor maestro y esclavo
  • Se debe tener configurado Relación de confianza conexión SSH http://wp.me/p13Tvb-ac

Plataforma:

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

Configuración del maestro:

1. Editar archivo de configuración de postgres

operador@postgreSQL01:/# nano /etc/postgresql/9.4/main/postgresql.conf

Leer más »

Replicación con Streaming Replication PostgreSQL

Se desea configurar dos servidores postgres postgreSQL01 (maestro) y postgreSQL02 (esclavo). El servidor master postgreSQL01 estará modo Lectura/Escritura (Read/writer) y el servidor slave postgreSQL02 estará modo sólo Lectura (Read).

Diagrama:

  .------.                 .--------.
  |      |          W      |   DB   |
  |Pgpool|----+----------->| MASTER |----.
  |      |    |            |        |    |
  `------`    |            `--------`    | STREAMING REPLICATION
              |            .--------.    |
              |     R      |   DB   |    |
              +----------->|  SLAVE |<---+      
                           |        |    
                           `--------` 

NOTA: El servicio del PostgreSQL debe estar detenido en el servidor esclavo, en nuestro caso postgreSQL02

Configuración del maestro:

1. Editar archivo de configuración de postgres

operador@postgreSQL01:/# nano /etc/postgresql/9.4/main/postgresql.conf

Leer más »