Categorías: Varios

Sobrecargar un servidor rapidamente

Existen veces que necesitamos crear una sobrecarga para comprobar y realizar pruebas, uno de los métodos mas comunes y simples es Apache Benchmark para testear el comportamiento de una aplicación web y de un servidor con carga de trabajo, sin embargo a veces la sobrecarga generada no es ni cerca lo que puede generarse en el mundo real, una manera practica generar una sobre carga es hacerlo con el siguiente comando:

dd if=/dev/zero of=/dev/null

Si bien funciona es bastante lento y si necesitamos llegar a una carga alta puede tomar bastante tiempo por eso se me ocurrió  lanzar este comando diez, cien o docientas veces en paralelo, para eso se me ocurrió aprovechar Hilos, Canales y multitarea en Go .

Instalación de GO

Para ejecutarlo lo primero es tener instalado go, para lo que debemos hacer es Instalando GO en Fedora/Debian/Ubuntu

Código

Luego simplemente creamos el directorio

mkdir -p ~/go/src/overload

Luego creamos el archivo overload.go:

nano ~/go/src/overload/overload.go

Donde guardamos el siguiente código:

package main
import "fmt"
import "os/exec"

const num_threads = 100

func main() {

    channels := make(chan string,num_threads)

    for i := 0; i < num_threads; i++ {
        go thread(i,channels)
    }

    count := 0

    for elem := range channels {

        if count == num_threads - 1 {
            close(channels)        
        }

        count++
        fmt.Println(elem)
    }
}

func thread(index int,channels chan string) {
    cmd := exec.Command("dd","if=/dev/zero","of=/dev/null")
        stdout, _ := cmd.Output()
    str := string(stdout)
    channels <- str
}

Luego para ejecutarlo simplemente hacemos:

cd ~/go/src/overload/
go run overload.go

Conclusion

Es la forma mas rápida y sencilla que encontré de sobrecargar un servidor, si bien en este caso solo me hacia falta elevar el consumo de CPU sin importar el medio perfectamente se puede ajustar el script para ejecutar cualquier cosa y poder probar lo que se necesite.

Hay que tener cuidado debido a que genera una carga muy alta en un breve periodo de tiempo, si estamos en un servidor dedicado no pasa nada sin embargo si estamos en un Cloud podemos ser bloqueados, suspendidos e incluso eliminados por el proveedor, hay que recordar que un Cloud VPS es una maquina virtual dentro de un servidor con otras maquinas virtuales y lo que hagamos mermara el rendimiento de todos por lo que hay que usar el script lo mínimo que necesitemos y con cuidado.

Entradas recientes

Estadisticas de EasyMySQL

Normalmente, a las estadísticas del blog no le presto demasiada atención, sin embargo, trabajando en…

6 days hace

Nueva pagina de Publicaciones

La idea principal detrás de este blog es marca personal, el blog es para centralizar…

2 weeks hace

Migrar una maquina virtual desde VirtualBox a KVM

El migrar el disco duro es bastante sencillo como se verá a continuación, la principal…

3 weeks hace

Instalar QEMU/KVM y Virtual Machine Manager

Cuando se trata de virtualización en el escritorio, una de las primeras opciones son sin…

1 month hace

Instalar adaptador WIFI TP-Link AX 1800/ Archer TX20U en Debian y Ubuntu

Siempre he sido un ferviente defensor de una conexión por cable UTP para trabajar por…

2 months hace

Nuevo dominio para el blog, otra vez!!!

Al fin pude recuperar alvarodeleon.com, no es que lo hubiera perdido, fue peor, lo deje…

3 months hace