Si tu actividad de correo es muy intensa posiblemente se te eleve el iowait por causa del correo
una opción es pasar la cola de correo a una unidad en RAM y aquí te presento como hacerlo
edita /etc/fstab
# nano /etc/fstab
y agrega
none /ram_qmailqueue tmpfs defaults,size=100m,nr_inodes=999k,mode=775 0 0
en este caso se le asignaron 100Mb de RAM a esa unidad virtual; con la experiencia a futuro aumentaras o disminuirás la cantidad según sean tus necesidades
ahora para terminar de configurar ejecutamos:
# mkdir /ram_qmailqueue
# mount -a
# chmod 750 /ram_qmailqueue
# chown qmailq:qmail /ram_qmailqueue
# cd /var/qmail/
# mv queue queue_bak
# ln -s /ram_qmailqueue /var/qmail/queue
# rsync -av /var/qmail/queue_bak/* /ram_qmailqueue
IMPORTANTE, al reiniciar el servidor el disco en RAM estara vacio, asi que es importante volver a ejecutar el rsync; un modo comodo es editar /etc/init.d/qmail buscar start(){ y despues incluir el comando; asi cada vez que inicie se verificara que existan los archivos necesarios
Mostrando entradas con la etiqueta iowait. Mostrar todas las entradas
Mostrando entradas con la etiqueta iowait. Mostrar todas las entradas
martes, 31 de julio de 2012
viernes, 25 de mayo de 2012
Servidores con carga alta, como solucionarlo
Como se lee la carga?
un modo es con el comando
# w
y comúnmente es expresada así.
load average: 0,39, 0,43, 0,35
un modo es con el comando
# w
y comúnmente es expresada así.
load average: 0,39, 0,43, 0,35
Esto es es la carga promedio a 1, 5 y 15 minutos.
en palabras simples ¿Que significa la Carga?
Significa que en promedio N cantidad de procesos estuvieron ejecutándose a la vez.
Eso no significa que si tengo activo apache, mysql y sendmail a la vez tendré una carga de 3; aunque los 3 servicios se encuentran activos no significa que ande gastando recursos en procesar información.
Ahora en un escenario real, apache, mysql, sendmail se ejecutan cientos de veces durante un segundo, consumiendo siempre recursos distintos; en ocasiones estarán los 3 a la vez, en otras 2 a a la vez, etc. Esto nos da como resultado una carga de 1.4 (valor inventado para el ejemplo); Este valor quiere decir que en promedio se estaban ejecutando 1.4 programas a la vez.
en vida real:
top - 14:35:04 up 15 days, 22:10, 1 user, load average: 1.13, 1.16, 1.26
Tasks: 206 total, 2 running, 202 sleeping, 1 stopped, 1 zombie
Cpu(s): 3.5%us, 2.3%sy, 0.0%ni, 89.7%id, 4.2%wa, 0.0%hi, 0.2%si, 0.0%st
Como verán están 206 tareas ejecutándose, pero no todas a la vez; en 1 segundo posiblemente atendió a 500 enlaces web y 200 correos, pero en cada uno solo tardo milisegundos.
¿Cual es la carga ideal? es menor a 1; ya que en promedio solo se ejecuta un proceso a la vez obteniendo el 100% de los recursos del hardware.
¿Porque tengo problemas de carga?
1- Un proceso esta lento ocupando recursos del hardware por mucho tiempo.
2- Existen demasiados procesos y todos desean ser atendidos.
3- El hardware esta lento = El hardware llego a su limite de capacidad
3- El hardware esta lento = El hardware llego a su limite de capacidad
Primero detectemos que proceso es el que causa el problema, un modo sencillo es ejecutar en una ventana de terminal a top para estar monitoreando la carga y en otra terminal trabajando, lo que aremos es detener un servicio y contar hasta 10, si la carga bajo significativamente ahí esta nuestro problema; si no bajo iniciemos otra vez el servicio y vallamos al siguiente servicio.
Muy bien, ya detectamos el servicio afectado. ahora analicemos...
Si el iowait esta mayor a 10% de modo constante tenemos un problema hacia el hardware, casi siempre el disco duro y para solucionarlo existen las siguientes opciones:
1- Existen muchas solicitudes a ese servicio, por lo tanto ese servicio hace mucho trabajo en disco duro almecenando o consultando lo necesario, aqui algunos ejemplos de solucion
a ) apache : mod_qos (balancea y protege DDOS) + APC (cache para php) + revisar que tengamos suficiente ram.
b) mysql: revisar que tengamos bien optimizado el cache
c) sendmail (qmail, exim, etc) si es por correo saliente entonces ver la posibilidad de tener un smtp secundario en otro equipo aquí un ejemplo ; si el problema es que recibes mucho corro entrante y el disco duro anda ocupado almacenandolo lo ideal es colocar un antispam, pronto platicare sobre el ASSP.
2- Si lo anterior no dio resultado provemos si hay demaciados procesos a al vez, tal vez alguien nos ataca, o tenemos una pagina mal programada, o malas consultas a la base de datos
3- Y lo ultimo, ir por un mejor hardware aunque el procesador es algo importante, es mucho mas importante ver el almacenamiento ya que es nuestro punto más lento. Si es posible divide la carga de trabajo en distintos discos duros (web, correo, BD, etc) y notaras un gran incremento de velocidad, y lo ideal pero muchas veces fuera de presupuesto: 1 servidor por actividad
Seguimos en contacto.... gracias por leer y compartir experiencias
2- Si lo anterior no dio resultado provemos si hay demaciados procesos a al vez, tal vez alguien nos ataca, o tenemos una pagina mal programada, o malas consultas a la base de datos
3- Y lo ultimo, ir por un mejor hardware aunque el procesador es algo importante, es mucho mas importante ver el almacenamiento ya que es nuestro punto más lento. Si es posible divide la carga de trabajo en distintos discos duros (web, correo, BD, etc) y notaras un gran incremento de velocidad, y lo ideal pero muchas veces fuera de presupuesto: 1 servidor por actividad
Seguimos en contacto.... gracias por leer y compartir experiencias
martes, 22 de mayo de 2012
Plesk carga alta por iowait
Un problema común en Plesk es tener una carga alta debido a que iowait creció mucho.
La carga alta comúnmente es porque se esta efectuando un respaldo o actualizando las estadísticas, una solucion es cambiar su pioridad de IO y les presento un script
#Si la carga es >= 3 cambia la prioridad de ejecucion
loadavg=`uptime | awk '{print $8}'`
thisloadavg=`echo $loadavg|awk -F \. '{print $1}'`
if [ "$thisloadavg" -ge "3" ]; then
#baja prioridad de respaldos
ionice -c3 -p $(ps ax | grep "tar" | grep -v grep | awk '{ print $1 }')
#baja prioridad de procesos plesk
ionice -c3 -p $(ps ax | grep "plesk_agent_manager" | grep -v grep | awk '{ print $1 }')
ionice -c3 -p $(ps ax | grep "mailmng_domain_toggle" | grep -v grep | awk '{ print $1 }')
#baja prioridad de estadisticas
fi
coloquenlo en cron cada 1-3 minutos y listo
La carga alta comúnmente es porque se esta efectuando un respaldo o actualizando las estadísticas, una solucion es cambiar su pioridad de IO y les presento un script
#Si la carga es >= 3 cambia la prioridad de ejecucion
loadavg=`uptime | awk '{print $8}'`
thisloadavg=`echo $loadavg|awk -F \. '{print $1}'`
if [ "$thisloadavg" -ge "3" ]; then
#baja prioridad de respaldos
ionice -c3 -p $(ps ax | grep "tar" | grep -v grep | awk '{ print $1 }')
ionice -c3 -p $(ps ax | grep "gzip" | grep -v grep | awk '{ print $1 }')
ionice -c3 -p $(ps ax | grep "pmm" | grep -v grep | awk '{ print $1 }')
#baja prioridad de procesos plesk
ionice -c3 -p $(ps ax | grep "plesk_agent_manager" | grep -v grep | awk '{ print $1 }')
ionice -c3 -p $(ps ax | grep "mailmng_domain_toggle" | grep -v grep | awk '{ print $1 }')
#baja prioridad de estadisticas
ionice -c3 -p $(ps ax | grep "statistics" | grep -v grep | awk '{ print $1 }')
ionice -c3 -p $(ps ax | grep "awstats" | grep -v grep | awk '{ print $1 }')
ionice -c3 -p $(ps ax | grep "webalizer" | grep -v grep | awk '{ print $1 }')
ionice -c3 -p $(ps ax | grep "dumps-disc-usage" | grep -v grep | awk '{ print $1 }')
fi
coloquenlo en cron cada 1-3 minutos y listo
jueves, 17 de mayo de 2012
como reducir iowait
El mayor problema de iowait se produce por el disco duro, si el disco esta muy ocupado las demás tareas se verán lentas.
Son 2 fuentes que comúnmente generan el problema:
1- Falta de RAM
esta es obvia cuando tienes mucho swap, para comprobarlo hay que ver cuanta ram tenemos libre y cuanto ocupado en swap, para ello ejecuta
# free -m
total used free shared buffers cached
Mem: 3431 3020 410 0 124 1755
-/+ buffers/cache: 1140 2290
Swap: 2047 63 1984
en este caso no hay swap y suficiente memoria libre, así que la solución no es instalar más memoria. o ver el proceso que consume demasiada RAM y existe algún parámetro para personalizarlo siempre cuidando que no sea indispensable para su deempeño
un modo de ver la ram ocupada es con
# top
una ves iniciado presionen shift+M y se acomodara por consumo de memoria y verán algo similar a:
sks: 211 total, 2 running, 209 sleeping, 0 stopped, 0 zombie
Cpu(s): 16.3%us, 4.2%sy, 0.3%ni, 76.4%id, 2.2%wa, 0.0%hi, 0.5%si, 0.0%st
Mem: 4037012k total, 3935720k used, 101292k free, 55408k buffers
Swap: 1052248k total, 37844k used, 1014404k free, 2175768k cached
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
788501 mysql 15 0 1464m 680m 5920 S 40.6 17.3 534:46.35 mysqld
979804 apache 15 0 1261m 207m 48m S 0.0 5.3 0:01.31 httpd
977582 apache 15 0 1245m 197m 51m S 0.0 5.0 0:01.95 httpd
979747 apache 15 0 1260m 191m 34m S 1.7 4.9 0:00.97 httpd
977581 apache 15 0 1245m 189m 44m S 0.0 4.8 0:01.59 httpd
979760 apache 15 0 1242m 185m 42m S 0.7 4.7 0:01.01 httpd
979722 apache 17 0 1245m 185m 40m S 0.3 4.7 0:01.15 httpd
979810 apache 16 0 1242m 180m 37m S 0.0 4.6 0:00.55 httpd
979840 apache 16 0 1258m 177m 20m D 0.3 4.5 0:00.65 httpd
981013 apache 15 0 1188m 177m 34m S 13.3 4.5 0:00.40 httpd
979762 apache 17 0 1243m 171m 27m D 0.7 4.4 0:00.94 httpd
981005 apache 15 0 1242m 165m 23m S 2.3 4.2 0:00.30 httpd
981012 apache 15 0 1226m 137m 5192 S 2.0 3.5 0:00.06 httpd
967097 root 15 0 1164m 134m 10m S 0.0 3.4 0:03.88 httpd
981014 apache 18 0 1165m 129m 4868 D 0.0 3.3 0:00.00 httpd
967107 apache 15 0 395m 119m 468 S 0.0 3.0 0:00.00 httpd
977006 root 19 0 207m 99m 2352 R 96.4 2.5 0:11.71 perl
18935 root 17 0 250m 25m 4720 S 0.0 0.6 2:03.93 sw-engine
18943 root 15 0 334m 24m 956 S 0.0 0.6 137:04.24 sw-collectd
8295 named 15 0 418m 21m 2056 S 0.0 0.5 9:33.46 named
295584 root 15 0 63780 19m 1732 S 0.0 0.5 0:03.02 miniserv.pl
2- Alta escritura y/o lectura de archivos.
Para detectar que procesos son los responsables vean como detectar procesos que consumen iowait o instalen iotop
Imaginemos que existe un alto iowait en base de datos
Primero consultemos si la aplicación que afecta tiene parámetros para optimizar su rendimiento, los parámetros que mas impactan en iowait es la cantidad de procesos o usuarios simultáneos y cache en RAM; si no existe mas que optimizar por configuración vemos opciones por hardware
Supongamos que actualmente en un solo disco duro se encuentra sistema operativo, web, correo, base de datos; una solución es agregar un disco duro adicional preferentemente de alta velocidad y mover la base de datos a ese disco, asi el trabajo de lectura/escritura se distribuirá dando como resultado disminuir el iowait.
Aunque estos dos puntos comúnmente resuelven el problema de iowait aun así hay que buscar el origen real del problema, buscar existe un error de programación en nuestra aplicación o simplemente ahora la carga de trabajo es mayor y hay que comenzar a pensar en optimizar nuestra aplicación posiblemente mediante el uso de cache
y en el caso de hosting compartido una buena herramienta para controlar el uso de recursos es cloudlinix el cual limita los recursos para evitar sobrecargas por parte de cpu o ram; compatible con servidores planos, cpanel y plesk.
El panel de plesk ademas cuenta con una opción para limitar la cantidad máxima de conexiones, ayudando a controlar el sobreuso.
Son 2 fuentes que comúnmente generan el problema:
1- Falta de RAM
esta es obvia cuando tienes mucho swap, para comprobarlo hay que ver cuanta ram tenemos libre y cuanto ocupado en swap, para ello ejecuta
# free -m
total used free shared buffers cached
Mem: 3431 3020 410 0 124 1755
-/+ buffers/cache: 1140 2290
Swap: 2047 63 1984
memoria libre para trabajar, hay que procurar que una vez iniciado todos los servicios este libre mínimo el 25% de la memoria
memoria swap esta hay que procurar que este siempre al minimo, lo optimo es cero y a partir de 300-500M puede ser tema de preocupación,
en este caso no hay swap y suficiente memoria libre, así que la solución no es instalar más memoria. o ver el proceso que consume demasiada RAM y existe algún parámetro para personalizarlo siempre cuidando que no sea indispensable para su deempeño
un modo de ver la ram ocupada es con
# top
una ves iniciado presionen shift+M y se acomodara por consumo de memoria y verán algo similar a:
sks: 211 total, 2 running, 209 sleeping, 0 stopped, 0 zombie
Cpu(s): 16.3%us, 4.2%sy, 0.3%ni, 76.4%id, 2.2%wa, 0.0%hi, 0.5%si, 0.0%st
Mem: 4037012k total, 3935720k used, 101292k free, 55408k buffers
Swap: 1052248k total, 37844k used, 1014404k free, 2175768k cached
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
788501 mysql 15 0 1464m 680m 5920 S 40.6 17.3 534:46.35 mysqld
979804 apache 15 0 1261m 207m 48m S 0.0 5.3 0:01.31 httpd
977582 apache 15 0 1245m 197m 51m S 0.0 5.0 0:01.95 httpd
979747 apache 15 0 1260m 191m 34m S 1.7 4.9 0:00.97 httpd
977581 apache 15 0 1245m 189m 44m S 0.0 4.8 0:01.59 httpd
979760 apache 15 0 1242m 185m 42m S 0.7 4.7 0:01.01 httpd
979722 apache 17 0 1245m 185m 40m S 0.3 4.7 0:01.15 httpd
979810 apache 16 0 1242m 180m 37m S 0.0 4.6 0:00.55 httpd
979840 apache 16 0 1258m 177m 20m D 0.3 4.5 0:00.65 httpd
981013 apache 15 0 1188m 177m 34m S 13.3 4.5 0:00.40 httpd
979762 apache 17 0 1243m 171m 27m D 0.7 4.4 0:00.94 httpd
981005 apache 15 0 1242m 165m 23m S 2.3 4.2 0:00.30 httpd
981012 apache 15 0 1226m 137m 5192 S 2.0 3.5 0:00.06 httpd
967097 root 15 0 1164m 134m 10m S 0.0 3.4 0:03.88 httpd
981014 apache 18 0 1165m 129m 4868 D 0.0 3.3 0:00.00 httpd
967107 apache 15 0 395m 119m 468 S 0.0 3.0 0:00.00 httpd
977006 root 19 0 207m 99m 2352 R 96.4 2.5 0:11.71 perl
18935 root 17 0 250m 25m 4720 S 0.0 0.6 2:03.93 sw-engine
18943 root 15 0 334m 24m 956 S 0.0 0.6 137:04.24 sw-collectd
8295 named 15 0 418m 21m 2056 S 0.0 0.5 9:33.46 named
295584 root 15 0 63780 19m 1732 S 0.0 0.5 0:03.02 miniserv.pl
en donde observan el porcentaje de RAM ocupada por ese proceso, en este caso MySQL consume el 17.3% que equivale a 4G*0.17 = 0.68G = 680M de RAM
2- Alta escritura y/o lectura de archivos.
Para detectar que procesos son los responsables vean como detectar procesos que consumen iowait o instalen iotop
Imaginemos que existe un alto iowait en base de datos
Primero consultemos si la aplicación que afecta tiene parámetros para optimizar su rendimiento, los parámetros que mas impactan en iowait es la cantidad de procesos o usuarios simultáneos y cache en RAM; si no existe mas que optimizar por configuración vemos opciones por hardware
Supongamos que actualmente en un solo disco duro se encuentra sistema operativo, web, correo, base de datos; una solución es agregar un disco duro adicional preferentemente de alta velocidad y mover la base de datos a ese disco, asi el trabajo de lectura/escritura se distribuirá dando como resultado disminuir el iowait.
Aunque estos dos puntos comúnmente resuelven el problema de iowait aun así hay que buscar el origen real del problema, buscar existe un error de programación en nuestra aplicación o simplemente ahora la carga de trabajo es mayor y hay que comenzar a pensar en optimizar nuestra aplicación posiblemente mediante el uso de cache
y en el caso de hosting compartido una buena herramienta para controlar el uso de recursos es cloudlinix el cual limita los recursos para evitar sobrecargas por parte de cpu o ram; compatible con servidores planos, cpanel y plesk.
El panel de plesk ademas cuenta con una opción para limitar la cantidad máxima de conexiones, ayudando a controlar el sobreuso.
lunes, 14 de mayo de 2012
Que es iowait
Todo software necesita de un hardware.
iowait es que tanto se debe de poner en pausa el software esperando que el hardware se desocupe, si esta en pausa equivale a que este detenido, no avanzar en el trabajo y acumulando trabajos pendientes, es por ello que sube la carga
en el Hardware existen algunos dispositivos lentos (a comparación del procesador) como el disco duro, cdrom, puerto serial, entre otros.
Si mi software dice que almacene un archivo de 5Gb en el disco este estará muy ocupado escribiéndolo, durante ese tiempo el iowait subirá mucho indicando que hay hardware ocupado. Si al mismo tiempo deseo leer otro archivo esta tarea se verá lenta porque el disco esta ocupado guardando la información.
No solo los archivos grandes causan ese problema. también lo causa el leer o escribir muchos archivos o un mismo archivo muchas veces.
Ejemplos en un servidor web:
cuento con sitio1.com el cual tiene 4000 visitantes diarios (20mil clicks diarios), hardware intel xeon 4 cores un disco SATA y 8G de ram.
En la programación de sitio1.com se incluyen alrededor de 100 archivos y librerias (muy común en joomla y WP al agregar muchos plugins), realiza 100 consultas a SQL y como es una galeria de fotos se visualizan 100 imágenes por click.
Problema: carga alta en el servidor, iowait > 40%
Causa del problema:
- accesar muchos archivos a la vez mas de archivos por click (100 archivos + 100 imagenes + consultar base de datos), por lo tanto el disco duro esta muy ocupado para atender a todas las visitas a la vez.
- Entre las 100 consultas a base de datos se encuentra leer y escribir información.
- Todo el trabajo recae sobre un solo disco duro (Sistema Operativo, Base de Datos, web, logs, etc)
Y si pongo un procesador más grande se soluciona?
NO: el problema es el disco duro, anda muy ocupado atendiendo muchos archivos.
Solución rápida:
-mover la pagina web o base de datos a un segundo disco duro
eficiencia: baja la carga y soportar algo mas de visitas
Solución ideal :
- Sitio o Base de datos en segundo disco duro.
- Optimizar el código fuente y utilizar cache.
- Analizar el diseño de la página para ver si es posible eliminar imagenes
eficiencia: 2-3 veces más visitas.
Lo mejor es ir migrando a algo programado a la medida (eficiencia 10veces más rápido) o hacerse de la idea en gastar mucho en alojamiento.
Aunque lo realmente ideal es contar con varios servidores y balancear la carga entre ellos, con tareas y configuraciones optimizadas para web, base de datos, etc.
Esto solo fue un escenario, antes de hacer algo hay que analizar que es lo que realmente me genera la carga, información en como detectar procesos que consumen demasiado iowait
iowait es que tanto se debe de poner en pausa el software esperando que el hardware se desocupe, si esta en pausa equivale a que este detenido, no avanzar en el trabajo y acumulando trabajos pendientes, es por ello que sube la carga
en el Hardware existen algunos dispositivos lentos (a comparación del procesador) como el disco duro, cdrom, puerto serial, entre otros.
Si mi software dice que almacene un archivo de 5Gb en el disco este estará muy ocupado escribiéndolo, durante ese tiempo el iowait subirá mucho indicando que hay hardware ocupado. Si al mismo tiempo deseo leer otro archivo esta tarea se verá lenta porque el disco esta ocupado guardando la información.
No solo los archivos grandes causan ese problema. también lo causa el leer o escribir muchos archivos o un mismo archivo muchas veces.
Ejemplos en un servidor web:
cuento con sitio1.com el cual tiene 4000 visitantes diarios (20mil clicks diarios), hardware intel xeon 4 cores un disco SATA y 8G de ram.
En la programación de sitio1.com se incluyen alrededor de 100 archivos y librerias (muy común en joomla y WP al agregar muchos plugins), realiza 100 consultas a SQL y como es una galeria de fotos se visualizan 100 imágenes por click.
Problema: carga alta en el servidor, iowait > 40%
Causa del problema:
- accesar muchos archivos a la vez mas de archivos por click (100 archivos + 100 imagenes + consultar base de datos), por lo tanto el disco duro esta muy ocupado para atender a todas las visitas a la vez.
- Entre las 100 consultas a base de datos se encuentra leer y escribir información.
- Todo el trabajo recae sobre un solo disco duro (Sistema Operativo, Base de Datos, web, logs, etc)
Y si pongo un procesador más grande se soluciona?
NO: el problema es el disco duro, anda muy ocupado atendiendo muchos archivos.
Solución rápida:
-mover la pagina web o base de datos a un segundo disco duro
eficiencia: baja la carga y soportar algo mas de visitas
Solución ideal :
- Sitio o Base de datos en segundo disco duro.
- Optimizar el código fuente y utilizar cache.
- Analizar el diseño de la página para ver si es posible eliminar imagenes
eficiencia: 2-3 veces más visitas.
Lo mejor es ir migrando a algo programado a la medida (eficiencia 10veces más rápido) o hacerse de la idea en gastar mucho en alojamiento.
Aunque lo realmente ideal es contar con varios servidores y balancear la carga entre ellos, con tareas y configuraciones optimizadas para web, base de datos, etc.
Esto solo fue un escenario, antes de hacer algo hay que analizar que es lo que realmente me genera la carga, información en como detectar procesos que consumen demasiado iowait
lunes, 7 de mayo de 2012
como detectar procesos que consumen demasiado iowait
Puedes ejecutar cualquiera de los siguientes 2 comandos con resultados casi identicos
ps -eo pid,user,wchan=WIDE-WCHAN-COLUMN -o s,cmd|awk ' $4 ~ /D/ {print $0}'
ps ax | awk '$3 ~ /^D/ { print $0 }'
aquí el resultado de ambos ejecutados continuamente uno del otro, en este caso el proceso 1050 ya había terminado en la 2da ejecución
1050 apache sync_buffer D /usr/sbin/httpd
9560 root sync_page D /usr/local/sbin/lighttpd -f /etc/lighttpd/lighttpd.conf
-----------------------------
9560 ? D 0:15 /usr/local/sbin/lighttpd -f /etc/lighttpd/lighttpd.conf
en este caso vemos que contamos con alta lectura/escritura de datos en disco duro
Aunque es normal tener momentos con pequeños con iowait mas alto aquí unas posibles soluciones:
ps -eo pid,user,wchan=WIDE-WCHAN-COLUMN -o s,cmd|awk ' $4 ~ /D/ {print $0}'
ps ax | awk '$3 ~ /^D/ { print $0 }'
aquí el resultado de ambos ejecutados continuamente uno del otro, en este caso el proceso 1050 ya había terminado en la 2da ejecución
1050 apache sync_buffer D /usr/sbin/httpd
9560 root sync_page D /usr/local/sbin/lighttpd -f /etc/lighttpd/lighttpd.conf
-----------------------------
9560 ? D 0:15 /usr/local/sbin/lighttpd -f /etc/lighttpd/lighttpd.conf
en este caso vemos que contamos con alta lectura/escritura de datos en disco duro
Aunque es normal tener momentos con pequeños con iowait mas alto aquí unas posibles soluciones:
- ver configuraciones de optimización disponibles para el software afectado
- dividir el trabajo entre varios equipos
- instalar discos duros más rápidos
- dividir el trabajo entre varios discos duros
solucion rsync con alto iowait
Al ejecutar rsync o cp -r el iowait sube mucho la carga, mas que procesamiento es porque el disco duro se encuentra ocupado leyendo todos los archivos a la vez.
Una opción que me agrada mucho es el comando scp, este cuenta con un parámetro para limitar la cantidad de datos leídos por segundo ayudando mucho a hacer respaldos de varios G sin aumentar la carga del servidor
aquí un ejemplo
scp -r -P 1234 -l 2048 /datos/origen/* usuario@123.123.123.123:/datos/destino
-r = recursivo
-P 1234 = parámetro opcional para cambiar el puerto ssh del destino
-l 2048 = máximo 2048kbps = 2Mbps
/datos/origen/* = todos los archivos de esa carpeta
usuario = usuario :P
123.123.123.123 = IP destino, si fuera copia interna la IP es 127.0.0.1
/datos/destino = carpeta destino, nota: esta ya debe de existir
claro que al pasar grandes volúmenes de información limitando su lectura hace que sea un proceso algo más lento, pero les digo con seguridad que son tiempos razonables.
--- Actualización 29 Mayo 2012 ----
Como habrán leído en los comentarios rsync también limita la transferencia y con otras grandes ventajas como mantener permisos, usuarios, etc.
Ahora explicare en que caso conviene rsync y en cual es mejor scp.
Cuando utilizamos cp o rsync el proceso es:
1- Lee la ruta de todos los archivos involucrados
2- comenzar la transferencia de información.
Caso 1:
Servidor en Producción con alta carga de trabajo y/o procesador pequeño en donde hay que respaldar 10 archivos de 5G (total 50G); aquí utiliza el comando de tu preferencia (scp o rsync), aunque posiblemente te sea mejor utilizar rsync para aprovechar todas sus cualidades.
Caso 2:
Servidor en Producción con alta carga de trabajo y/o procesador pequeño en donde hay que respaldar 100 mil archivos de 5kb (total 50G); si utilizo rsync se alentara el servidor porque primero leerá a toda velocidad la ubicación de los 100mil archivos tanto en el origen como en el destino para después proceder a la copia de los mismos. En este caso tendríamos de 5 a 20min carga muy alta y lentitud en todo el servidor. Siendo la solución utilizar scp, si tardará mas tiempo tiempo ya que volverá a copiar todo pero no se notará que la carga de trabajo afecte al desempeño del servidor.
En la vida real fue probado con un celeron y un xeon 8 nucleos manejando mas de 300mil archivos a respaldar y que no afectará al desempeño de las aplicaciones que estaban en ejecución (web, mysql, correo, procesos en shell, etc), en ambos equipos rsync causo problemas de carga y scp todo estable.
Una opción que me agrada mucho es el comando scp, este cuenta con un parámetro para limitar la cantidad de datos leídos por segundo ayudando mucho a hacer respaldos de varios G sin aumentar la carga del servidor
aquí un ejemplo
scp -r -P 1234 -l 2048 /datos/origen/* usuario@123.123.123.123:/datos/destino
-r = recursivo
-P 1234 = parámetro opcional para cambiar el puerto ssh del destino
-l 2048 = máximo 2048kbps = 2Mbps
/datos/origen/* = todos los archivos de esa carpeta
usuario = usuario :P
123.123.123.123 = IP destino, si fuera copia interna la IP es 127.0.0.1
/datos/destino = carpeta destino, nota: esta ya debe de existir
claro que al pasar grandes volúmenes de información limitando su lectura hace que sea un proceso algo más lento, pero les digo con seguridad que son tiempos razonables.
--- Actualización 29 Mayo 2012 ----
Como habrán leído en los comentarios rsync también limita la transferencia y con otras grandes ventajas como mantener permisos, usuarios, etc.
Ahora explicare en que caso conviene rsync y en cual es mejor scp.
Cuando utilizamos cp o rsync el proceso es:
1- Lee la ruta de todos los archivos involucrados
2- comenzar la transferencia de información.
Caso 1:
Servidor en Producción con alta carga de trabajo y/o procesador pequeño en donde hay que respaldar 10 archivos de 5G (total 50G); aquí utiliza el comando de tu preferencia (scp o rsync), aunque posiblemente te sea mejor utilizar rsync para aprovechar todas sus cualidades.
Caso 2:
Servidor en Producción con alta carga de trabajo y/o procesador pequeño en donde hay que respaldar 100 mil archivos de 5kb (total 50G); si utilizo rsync se alentara el servidor porque primero leerá a toda velocidad la ubicación de los 100mil archivos tanto en el origen como en el destino para después proceder a la copia de los mismos. En este caso tendríamos de 5 a 20min carga muy alta y lentitud en todo el servidor. Siendo la solución utilizar scp, si tardará mas tiempo tiempo ya que volverá a copiar todo pero no se notará que la carga de trabajo afecte al desempeño del servidor.
En la vida real fue probado con un celeron y un xeon 8 nucleos manejando mas de 300mil archivos a respaldar y que no afectará al desempeño de las aplicaciones que estaban en ejecución (web, mysql, correo, procesos en shell, etc), en ambos equipos rsync causo problemas de carga y scp todo estable.
Suscribirse a:
Entradas (Atom)
Como bloquera archivos adjuntos que son virus en postfix o plesk
Como bloquear adjuntos del correo en Plesk/Postfix 1- edita el archivo /etc/postfix/main.cf 2- busca el parametro mime_header_checks...
-
Como bloquear adjuntos del correo en Plesk/Postfix 1- edita el archivo /etc/postfix/main.cf 2- busca el parametro mime_header_checks...
-
Activar en plesk nginx En plesk ir al dominio ir a Configuración de Apache y nginx desactivar Modo proxy...
-
Les comparto un ejemplo de un archivo XML de un CFDi 3.2 antes de timbrar. <?xml version="1.0" encoding="UTF-8"?...