Crear Area de Intercambio (Memoria Swap)

El presente instructivo tiene como finalidad la creación de un área de intercambio (swap) en un equipo, luego de haber instalado el sistema operativo.

La memoria Swap es importante para aquellos equipos (VPS) con poca memoria asignada (<2GB)

En el presente ejemplo el equipo posee 2GB de RAM, por lo que se creará una swap de 4GB. Según la recomendaciones, la swap debe ser de 1,5 * RAM a 2 * RAM.

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 9.0 (actualmente estable)

Aplicaciones:

  • comando dd
  • comando swapon
  • comando mkswap

Configuración:

1. Crear archivo con espacio de 4GB

root@devbd1:/# dd if=/dev/zero of=/swapfile bs=1MB count=4096 conv=fdatasync
4096+0 records in
4096+0 records out
4096000000 bytes (4.1 GB, 3.8 GiB) copied, 7.46962 s, 548 MB/s

Continuar leyendo “Crear Area de Intercambio (Memoria Swap)”

Anuncios

Prueba Velocidad Disco Duro Servidor Linux

El presente instructivo tiene como finalidad de explicar una forma sencilla y rápida de verificar la velocidad de transferencia de información de un disco

Requisitos:

  • Se debe contar con suficiente privilegios para la escritura en disco

Plataforma:

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

Aplicaciones:

  • comando dd

Tomar en Cuenta:

  • Identificar el volumen que se desea testear
  • Verificar la cantidad de espacio en disco disponible para efectuar prueba
  • Si el volumen a testear contiene raiz “/”, tomar las previsiones en cuanto al espacio disponible

Comandos
Prueba#1:

La prueba consiste “rellenar” con cadenas de ceros “if=/dev/zero” un archivo “prueba_disco.bat” en el volumen deseado “/var/lib/postgresql”. El peso del archivo será de 1GB aproximadamente, y está defino en la escritura de bloques de 1MB “bs=1MB” multiplicado por la cantidad de esos bloques que serán escritos 1024 (count=1024)

Continuar leyendo “Prueba Velocidad Disco Duro Servidor Linux”

Crear Tarea CRON para Ejecutar Código PHP

El presente instructivo tiene como finalidad exponer un ejemplo de ejecución de un código PHP cada minuto, en una tarea de Crontab de linux.

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 9.0 (actualmente estable)

Aplicaciones:

  • Comando Crontab

Ejemplo:

1. Editar la tarea Crontab:

root@server:/# crontab -e

Incluir lo siguiente:

*/1 * * * * /usr/bin/php -q /ruta/archivo/prueba.php >> /var/log/log-codigophp.log

2. Listar la tarea:

root@server:/# crontab -l

3. Reiniciar el servicio:

root@server:/# /etc/init.d/cron restart

4. Ejecutar una prueba:

root@server:/# env -i /usr/bin/php -q /ruta/archivo/prueba.php 

Primeros Pasos con Ansible

El presente instructivo tiene como finalidad suministrar los pasos necesarios para la instalación y configuración básica de la aplicación Ansible en equipo con la distribución GNU/Linux Debian.

Requisitos:

  • Se debe contar con suficiente privilegios para la configuración de aplicativos
  • Se debe contar con (02) equipos con ssh instalado

Plataforma:

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

Aplicaciones:

  • Ansible -> 2.2.1.0-2
  • openssh-server -> 1:7.4p1-10+deb9u1
  • openssh-client -> 1:7.4p1-10+deb9u1

Para la configuración de la solución se utilizarán dos (02) maquinas con debian 9.1:

– Un (01) Equipo para instalación y configuración de la maquina de administración:

  • Hostname: admin
  • IP Interna: 192.168.1.2

– Un (01) equipos para la instalación y configuración de nodo

  • Hostname: nodo1
  • IP Interna: 192.168.1.3

– Usuario a utilizar: operador
Continuar leyendo “Primeros Pasos con Ansible”

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
Continuar leyendo “Reducir el Tiempo, Reciclar y Reusar el Estado TIME_WAIT en conexión TCP”

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

Continuar leyendo “Liberar Memoria RAM Cache de Linux”

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

Continuar leyendo “Desactivar OOM-Killer (out of memory killer) en Linux”