Mostrando entradas con la etiqueta optimizar. Mostrar todas las entradas
Mostrando entradas con la etiqueta optimizar. Mostrar todas las entradas

miércoles, 13 de mayo de 2020

Optimizar WordPress + Plesk + nginx



  1. Activar en plesk nginx
  2. En plesk ir al dominio
  3. ir a Configuración de Apache y nginx 
  4. desactivar   
  5. añadir en Directivas adicionales de nginx el siguiente codigo




if (!-e $request_filename) {
set $test P;
}
if ($uri !~ ^/(plesk-stat|webstat|webstat-ssl|ftpstat|anon_ftpstat|awstats-icon|internal-nginx-static-location)) {
set $test "${test}C";
}
if ($test = PC) {
rewrite ^/(.*)$ /index.php?$1;
}

# GZIP Compression
gzip on;
gzip_disable "MSIE [1-6]\\.(?!.*SV1)";
gzip_min_length 1100;
gzip_buffers 4 32k;
gzip_proxied any;
gzip_comp_level 9;
gzip_types text/plain text/css application/javascript application/x-javascript text/xml application/xml application/xml+rss text/javascript image/x-icon image/bmp image/svg+xml;
gzip_vary on;

# NGINX Caching
location ~* \.(?:ico|css|js|gif|jpe?g|png|svg|woff)$ {
    expires 30d;
    add_header Cache-Control "public";
    log_not_found off;
}

location ~* \.(jpg|jpeg|gif|png)$ {
    expires 365d;
    log_not_found off;
}

location ~* \.(pdf|css|html|js|swf)$ {
    expires 2d;
    log_not_found off;
}

location ~ \.css {
    add_header  Content-Type    text/css;
}
location ~ \.js {
    add_header  Content-Type    application/x-javascript;
}

# SECURITY
location ~* wp-config.php { deny all; }
location ~* "^/wp-content/(?!plugins/).*\.php" { deny all; }




Ahora ir a Configuración de PHP

memory_limit   = 200M
max_execution_time  = 15
post_max_size = 16M
upload_max_filesize =16M
opcache.enable  = on


Y listo, Wordpress volará


No olvides complementar con buenos caches de WordPress, de preferencia que ulticen APC y MemCache para mejorar su desempeño







miércoles, 25 de febrero de 2015

Linux, Reporte de procesos que consumen más memoria RAM

Linux, Reporte de procesos que consumen más memoria RAM


Les comparto este script para detectar los procesos que consumen más memoria RAM,

Pueden utilizarlo en conjunto con webmin que tiene un modo de monitoreo para detectar memoria disponible, cuando llegue a un punto critico que ejecute el script

Crea un archivo llamado memoria_alta.sh  y agregale el siguiente contenido



echo "PID  MEM  CPU   CMD " > mem1.txt
ps aux | awk '{print $2, $4, $3,  $11}' | sort -k2rn | head -n 20 > mem2.txt
NOW=$(date +"%m_%d_%Y__%H_%M")
cat mem1.txt  mem2.txt  > reporte_memoria_alta_$NOW.txt
rm -f mem1.txt mem2.txt



Guardalo y dale permiso de ejecución, por ejemplo 755, 700, según tus necesidades

ejecutalo como

# ./memoria_alta.sh

o

# /ruta/memoria_alta.sh

creara un archivo llamado  reporte_memoria_alta_02_25_2015__09_30.txt el cual expresa el mes_dia_año_hora  que se genero, al leerlo aparecerán los 20 procesos que más consumen,, el cual puedes cambiar editando el número 20







viernes, 30 de mayo de 2014

Como hacer mas rapido mi wordpress

Te recomiendo instales estos plugins

  • DB Cache Reloaded Fix
  • Hyper Cache 
  • WP Minify 
  • jQuery lazy load plugin

Aunque existen muchos otros famosos pero la combinación de estos me a dado mucho mejor resultado.


WP minify causa conflicto con algunos pocos plugins de wordpress, en especial los que usan javascript/jquery/ajax



martes, 1 de octubre de 2013

Procesos que ocupan mas memoria RAM

Para ver los 10 procesos que mas ocupan memoria en tu Linux  ejecuta el comando

# ps aux | awk '{print $2, $4, $11}' | sort -k2r | head -n 10

Si deseas una cantidad distinta de resultados solo cambia el numero que esta en rojo



domingo, 21 de julio de 2013

Como detectar que plugin alenta mi wordpress

Un gran problema en wordpress es que existen plugins que alentán todo nuestro sitio.

Para detectar cual es el plugin lento te recomiendo instalar P3,  este plugin realizara un análisis y te dira los tiempos de ejecución de cada plugin


Como se si mi tiempo de ejecución es bueno
0-50  Excelente
50-100 Muy Bien
100-250 Bien
250-400 Regular
400-700   poco mal
700-1000  mal
> 1000 super mal

Métodos para disminuir el tiempo de ejecución:
  • Desactivar plugins que no se utilicen
  • Desactivar plugins lentos
  • Si un plugin lento lo necesitas mucho  busca un remplazo que cumpla lo que necesitas


espero les sirva


lunes, 24 de junio de 2013

Acelerar tu pagina con htaccess

Un modo es utilizar gninx o lighttpd en otro puerto para atender a todos los archivos estáticos dando la impresión al navegante de ser 3 a 5 veces mas veloz.

el comando htaccess  es:

RewriteRule ([^.]+\.(jpe?g|gif|bmp|png|css|ico|js))$ http://www.misitio.com:82/$1 [L,NC]

Personalicen las extenciones y puerto deseado

martes, 12 de febrero de 2013

Acelerando PHP con APC en CentOS, RHE o Plesk,


Un modo de mejorar el desempeño en PHP es por medio de un cache, en lo personal me gusta APC por su desempeño

A continuación las instrucciones para instalarlo en CentOS, RHE o Plesk (centos)


# yum install  php-pear php-devel httpd-devel pcre-devel gcc make

# pecl install apc

Despues crear /etc/php.d/apc.ini con el siguiente contenido

extension=apc.so
apc.enabled = 1
apc.shm_size = 256M
apc.shm_segments = 1
apc.ttl = 3600
apc.user_ttl = 3600

Ahora reiniciamos apache

# service httpd restart

y listo



lunes, 28 de enero de 2013

Como utilizar el JOIN

Algunas veces nos confundimos con los JOIN, LEFT, RIGHT, ETC.  cual usamos?

Les presento esta imagen que me encontre, en donde A es la tabla principal y B la tabla con datos foraneos




miércoles, 23 de enero de 2013

asignar nucleos del CPU a un proceso linux


Si deseas distribuir la carga de trabajo puedes asignar que tus procesos sean asignados a ciertos núcleos de tu procesador

Comúnmente el núcleo 0 es el que tiene más carga de trabajo porque algunas aplicaciones no fueron diseñadas para ser multi-procesador, así que puedes asignarlas a otro núcleo para que tengan más recursos disponibles

aquí un ejemplo del comando



# taskset -c 3,4 -p 1234

en donde 3,4  son los núcleos asignados y  1234 es el proceso deseado.

si no tienes instalada la aplicación la instalas con:

Para CentOS, RH y similares

#yum install schedutils


en otras distribuciones utilizar su equivalente







martes, 16 de octubre de 2012

instalar mod_pagespeed en centos, cpanel o plesk



crear archivo  /etc/yum.repos.d/mod-pagespeed.repo  y agregar




RHEL/CentOS/Fedora 32-Bit

[mod-pagespeed]
name=mod-pagespeed
baseurl=http://dl.google.com/linux/mod-pagespeed/rpm/stable/i386
enabled=1
gpgcheck=0

RHEL/CentOS/Fedora 64-Bit

[mod-pagespeed]
name=mod-pagespeed
baseurl=http://dl.google.com/linux/mod-pagespeed/rpm/stable/x86_64
enabled=1
gpgcheck=0



Ejecutar en shell

# yum --enablerepo=mod-pagespeed install mod-pagespeed

reinicia apache y listo...

para comprobarlo revisa en phpinfo

HTTP Response Headers
X-Mod-Pagespeed1.0.22.7-2003


Existen muchos parámetros a personalizar,  aquí pueden ver ejemplos en acción

http://www.modpagespeed.com/


Almacenar el cache en RAM


Para ello editamos /etc/fstab y agregamos

tmpfs                   /var/www/mod_pagespeed/cache    tmpfs  size=256m,mode=0775,uid=httpd,gid=httpd    0    0 


// en shell
# mv /var/www/mod_pagespeed/cache /var/www/mod_pagespeed/cache_bak
mkdir /var/www/mod_pagespeed/cache
chown apache:apache /var/www/mod_pagespeed/cache
# mount -a




en donde 256m  es la cantidad de memoria asignada a la unidad virtual en RAM; la cantidad necesaria puede variar mucho según nuestras necesidades, un modo es ver cuanto espacio en disco ocupa despues de trabajar un rato con el comando

# du -hs /var/www/mod_pagespeed/cache

Esto puede tomar algunos minutos dependiendo el tipo de sitios alojados, en mi caso ocupo 500M  así que pondré 700M para asegurar que tendré lo suficiente

Desactivando y Activando mod_pagespeed con .htaccess

La sintaxis es:

<IfModule pagespeed_module>
ModPagespeed off
</IfModule>

o


<IfModule pagespeed_module>
ModPagespeed off

</IfModule>

o personalizar parámetros como:


<IfModule pagespeed_module>
  ModPagespeed on
  ...

  ModPagespeedDisableFilters inline_css,inline_javascript

  ModPagespeedEnableFilters move_css_to_head
  ModPagespeedEnableFilters rewrite_css,rewrite_javascript
  ModPagespeedEnableFilters outline_css,outline_javascript
  ...

</IfModule>








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.


jueves, 14 de junio de 2012

Optimizando el uso de swap

Algunas veces aun contando con suficiente memoria RAM  vemos que existe algo de swap,  he aquí un ejemplo


# free -m
             total       used       free     shared    buffers     cached
Mem:          2928       2869         59          0         26       1688
-/+ buffers/cache:       1154       1774
Swap:         2047        460       1587

Se preguntaran como es posible que si hay 1774M de memoria libre exista 460M de memoria en swap, como verán existen 1688M en cache. ¿Porque Linux prefirio utilizar swap a vaciar el cache?  Parte de la respuesta esta en este sitio, si no desean leerlo el resumen es: existen variables que dan preferencia de uso a la memoria.

¿Como forzar que prefiera la memoria RAM a swap?

Edita  /etc/sysctl.conf  y agrega:

vm.swappiness = 20

En el reportaje original utilizaron de valor en parámetro 30, pero en lo personal a mi me da mejor resultado 20 para servidores de hosting en los cuales tengo suficiente memoria RAM adicional

para aplicar el cambio  ejecutemos lo siguiente :

# sysctl -p

El parametro acepta valores del 0 al 100, en donde 0  es procurar no utilizar swap y 100 es liberar RAM utilizando swap,  y su valor predeterminado es 60.





lunes, 21 de mayo de 2012

mod_qos mejorando apache y previniendo ataques DDOS


mod_qos  (quality of service) es un modulo para apache por medio del cual nos es posible controlar la cantidad de accesos y trafico para optimizar la calidad del servicio, y así evitar que un ataque, usuarios traviesos o simplemente un exceso de visitas nos hagan pasar mal el rato.

Instalación en CentOS (aunque similar en las demás distribuciones),  antes que nada instalar las librerias necesarias ejecutando:


# yum install openssl-devel.x86_64


# yum install pcre-devel.x86_64


# yum install httpd-devel.x86_64

una vez instaladas descargar mod_qos desde http://sourceforge.net/projects/mod-qos/ o desde el sitio oficial http://opensource.adnovum.ch/mod_qos/ en donde encontraremos documentación adicional para personalizar la configuracion

y ejecutamos


# tar -xfz mod_qos-10.5.tar.gz
# mod_qos-10.5
# cd apache2
# apxs -i -c  mod_qos.c

si no salen mensajes de error  la ultima linea menciona que se genero el archivo

/usr/lib64/httpd/modules/mod_qos.so 


ahora creamos un archivo en nuestra configuración de apache /etc/httpd/conf.d/qos.conf  y agregamos:


LoadModule qos_module /usr/lib64/httpd/modules/mod_qos.so
## QoS Configuracion
<IfModule mod_qos.c>
        #Manejo de conexiones hasta 20000 IPs diferentes
        QS_ClientEntries 20000


        # Se permite solamente 20 conexiones por IP
        QS_SrvMaxConnPerIP 20


        # Maximo numero de conexiones TCP activas 156
        MaxClients              156


        # Desactivar la directiva keep-alive cuando el 70% de las conexiones TCP estan ocupadas:
        QS_SrvMaxConnClose      70%


        # Minimo de velocidad para peticiones / respuestas (niega a los clientes lentos que bloquean el servidor ,
        #Ejemplo; el script slowloris mantiene las peticiones HTTP :
        QS_SrvMinDataRate       150 1200


        # Limite de peticiones de encabezados y cuerpo (con cuidado, limita las cargas y las peticiones POST):
        # LimitRequestFields      30
        # QS_LimitRequestBody     102400


</IfModule>

reiniciamos apache  y listo...


Funcionando más que sobrado en un XEON 8 cores con mas de 300mil visualizaciones diarias a sitios con php/mysql  aun en hora pico, claro que también cuenta con APC Cache del cual hablare luego


CPU Usage: u20.77 s4.02 cu0 cs0 - .462% CPU load
16.9 requests/sec - 185.6 kB/second - 11.0 kB/request
3 requests currently being processed, 8 idle workers
__.W__.C_C._._.._...............................................
................................................................
......................


ACTUALIZACIÓN 6 Junio 2012

Si muestra el error "undefined symbol: EVP_DecryptFinal" la solución  es

Intenta instalar y después re compilar

# yum install libtool openssl*

Si persiste la falla busca en /etc/http/conf.d/


# LoadModule ssl_module modules/mod_ssl.so

colócalo como comentario y ahora agrégalo arriba de mod_qos  quedando :


LoadModule ssl_module modules/mod_ssl.so
LoadModule qos_module /usr/lib64/httpd/modules/mod_qos.so



y listo...










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










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