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 .
Para ejecutarlo lo primero es tener instalado go, para lo que debemos hacer es Instalando GO en Fedora/Debian/Ubuntu
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
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.
Administrador de Sistemas, Programador, Docente y ahora resulta que también Blogger (peor es ser tictoker). Más de 20 años de experiencia en computación atendiendo nabos y resolviendo problemas que sino fuera por estos nabos no habrían ocurrido en primer lugar. Escribo más que nada sobre tecnología y herramientas en general además de algunos artículos con opiniones tan subjetivas como irrelevantes, así que si no te gustan mejor madura.
Normalmente, a las estadísticas del blog no le presto demasiada atención, sin embargo, trabajando en…
La idea principal detrás de este blog es marca personal, el blog es para centralizar…
El migrar el disco duro es bastante sencillo como se verá a continuación, la principal…
Cuando se trata de virtualización en el escritorio, una de las primeras opciones son sin…
Siempre he sido un ferviente defensor de una conexión por cable UTP para trabajar por…
Al fin pude recuperar alvarodeleon.com, no es que lo hubiera perdido, fue peor, lo deje…