martes, 31 de julio de 2012

Mover cola de correo de qmail a ramdisk para disminuir iowait en plesk

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





viernes, 13 de julio de 2012

apache No space left on device y si hay espacio en disco

Situación:  Apache no inicia el log muestra


[Fri Jul 13 22:03:17 2012] [emerg] (28)No space left on device: mod_fcgid: Can't create global fcgid-pipe mutex
[Fri Jul 13 22:07:05 2012] [notice] suEXEC mechanism enabled (wrapper: /usr/sbin/suexec)
[Fri Jul 13 22:07:05 2012] [error] (28)No space left on device: Cannot create SSLMutex
Configuration Failed

pero si hay espacio en disco

# df -h
S.ficheros            Size  Used Avail Use% Montado en
/dev/xvda2             77G   17G   57G  23% /
tmpfs                 1,5G     0  1,5G   0% /dev/shm
/dev/xvda1             97M   49M   44M  53% /boot

y si hay nodos

# df -hi
S.ficheros            Inodes   IUsed   IFree IUse% Montado en
/dev/xvda2              4,9M    224K    4,7M    5% /
tmpfs                   367K       1    367K    1% /dev/shm
/dev/xvda1               26K      44     26K    1% /boot

El problema esta en los semáforos, los cuales se terminaron;

¿Qué es un semáforo? En palabras sencillas es una bandera que esta en el sistema operativo la cual utiliza para pausar ejecuciones con la finalidad de sincronizarlas; por ejemplo una aplicación pudiera estar esperando un semáforo de un servicio de disco duro indicándole que la información esta lista, tan pronto el semáforo se pone en verde la aplicación continua su ejecución.

Comprobar si el problema son semáforos:

Cantidad de semáforos ejecutados globalmente

# ipcs -s | grep -c .

Cantidad de semáforos ejecutados por apache

# ipcs -s |grep apache | grep -c .

Cantidad de semáforos configurados actualmente:
sysctl  -a | grep sem
kernel.sem = 200        32000   32      128


Solución
Ejecutar:


ipcs -s | grep apache | awk ' { print $2 } ' | xargs ipcrm sem


reiniciar apache y listo.

en lo personal me agrada editar /etc/init.d/httpd 
busquen start() y despúes de ahí agrego el comando de eliminar semáforos existentes


....
# when not running is also a failure.  So we just do it the way init scripts
# are expected to behave here.
start() {
ipcs -s | grep apache | perl -e 'while (<STDIN>) { @a=split(/\s+/); print `ipcrm sem $a[1]`}',
....
....

Por otro lado si tu servidor cuenta con mucho tráfico se incremente la probabilidad de repetir el problema y para evitarlo podemos aumentar la cantidad de semáforos editando  /etc/sysctl.conf , agrego:

kernel.sem = 250

y ejecuto:

 sysctl -p

el valor por default son 200, si realmente tienes mucha carga de trabajo puedes probar con una cantidad mayor, pero sin exagerar.






viernes, 6 de julio de 2012

Agregando mi sitio a google

Para agregar tu sitio a google es muy sencillo,  solo rellena el siguiente formulario

http://www.google.com/addurl.html

y listo

como bloquear china, rusia, korea y otros países con iptables

Un gran problema son los contantes ataques y escaneos de bots, una solución es bloquear los países más conflictivos y que no contamos con relación comercial o similar con ellos.

Hace tiempo encontré un buen script, ya no recuerdo la fuente pero aquí se los dejo.



#EDITAR LISTAS DE PAISES DESEADOS
ISO="af cn ru nl pl kr"


### Set PATH ###
IPT=/sbin/iptables
WGET=/usr/bin/wget
EGREP=/bin/egrep


### No editing below ###
SPAMLIST="countrydrop"
ZONEROOT="/root/iptables"
DLROOT="http://www.ipdeny.com/ipblocks/data/countries"


cleanOldRules(){
$IPT -F
$IPT -X
$IPT -t nat -F
$IPT -t nat -X
$IPT -t mangle -F
$IPT -t mangle -X
$IPT -P INPUT ACCEPT
$IPT -P OUTPUT ACCEPT
$IPT -P FORWARD ACCEPT
}


# create a dir
[ ! -d $ZONEROOT ] && /bin/mkdir -p $ZONEROOT


# clean old rules
cleanOldRules


# create a new iptables list
$IPT -N $SPAMLIST


for c  in $ISO
do
        # local zone file
        tDB=$ZONEROOT/$c.zone


        # get fresh zone file
        $WGET -O $tDB $DLROOT/$c.zone

        # country specific log message
        SPAMDROPMSG="$c Country Drop"

        # get
        BADIPS=$(egrep -v "^#|^$" $tDB)
        for ipblock in $BADIPS
        do
           $IPT -A $SPAMLIST -s $ipblock -j LOG --log-prefix "$SPAMDROPMSG"
           $IPT -A $SPAMLIST -s $ipblock -j DROP
        done
done

# Drop everything
$IPT -I INPUT -j $SPAMLIST
$IPT -I OUTPUT -j $SPAMLIST
$IPT -I FORWARD -j $SPAMLIST
# call your other iptable script
# /path/to/other/iptables.sh

exit 0


creen un .sh con ese contenido, asignen permiso 700 o 755 y ejecuten, tardara varios minutos así que no desesperen





lunes, 2 de julio de 2012

myisam vs innodb, como decidir?

A simple vista la pregunta eterna, y he aquí una respuesta fácil y rápida

No te compliques si no tienes una necesidad muy especial

Utiliza  innodb cuando tengas mucha escritura o requieres que se elimine o actualice información en cascada automáticamente.

Utiliza myisam cuando exista poca escritura y se notará mucho más rápido

así de fácil.


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...