Cámara de Zaragoza
Mejorar el rendimiento o velocidad de Magento (performance)
Existe numerosa documentación y artículos entorno a este tema. Este artículo busca ser un resumen o compendio de las principales funciones que ayudarán a mejorar el rendimiento y velocidad de nuestro Magento utilizando de ejemplo de distribución un Ubuntu Server 12.04 64 bits.
Vamos a distinguir las medidas de mejora del rendimiento según el nivel del sistema en el que influya:
- Servidor web Apache
- Configuración PHP
- Servidor de Base de Datos MySQL
- Magento
Servidor Web Apache
Es necesario tener activado el módulo «deflate» de apache para a nivel de Magento configurar la compresión de contenidos enviados a los usuarios con gzip.
Es muy interesante la instalación del módulo «pagespeed» para Apache. Este módulo realiza una serie de configuraciones a nivel de Apache para mejorar la velocidad y rendimiento y mantiene una caché de contenidos a nivel del servidor web.
La información sobre este módulo se puede encontrar en: https://developers.google.com/speed/docs/mod_pagespeed/download?hl=es
Para descargar e instalar ejecutamos en línea de comandos (el archivo a descargar cambiará para otros sistemas operativos):
- sudo wget https://dl-ssl.google.com/dl/linux/direct/mod-pagespeed-beta_current_amd64.deb
- sudo dpkg -i mod-pagespeed-*.deb
- sudo apt-get -f install
- sudo service apache2 restart
Configuración PHP
Instalar APC. APC es un sistema de caché a nivel de PHP, mejora el rendimiento en la recopilación de datos y ejecución. Puedes ver información sobre él u otros sistemas de caché PHP en http://en.wikipedia.org/w/index.php?title=Alternative_PHP_Cache#Alternative_PHP_Cache_.28APC.29.
Para instalar APC ejecutaremos las siguiente acciones:
- Ejecutar: sudo apt-get install php-apc
- Editar /etc/php5/apache2/php.ini y añadir estás líneas al final:
[APC]
extension=apc.so
apc.apc.stat = 0
apc.include_once_override = 0
apc.shm_size = 64
apc.include_once_override será igual a 0 si tenemos wordpress porque sino rompe el panel de administración en sus últimas versiones, en caso contrario o que se corriga este problema en wordpress pondremos el valor en 1.
Servidor de base de datos Mysql
La clave a nivel del MySQL pasa por configurar las conexiones y caché óptimos según los recursos del sistema; además la desactivación de logs puede ayudar también en la mejora del rendimiento.
Este es un ejemplo de archivo de configuración de MySQL (my.cnf):
[client]
port = 3306
socket = /var/run/mysqld/mysqld.sock
[mysqld_safe]
socket = /var/run/mysqld/mysqld.sock
nice = 0
[mysqld]
user = mysql
pid-file = /var/run/mysqld/mysqld.pid
socket = /var/run/mysqld/mysqld.sock
port = 3306
basedir = /usr
datadir = /var/lib/mysql
tmpdir = /tmp
lc-messages-dir = /usr/share/mysql
skip-external-locking
bind-address = 127.0.0.1
# MYSQLD
key_buffer = 384M
max_allowed_packet = 1M
wait_timeout = 180
connect_timeout = 120
thread_stack = 192K
thread_cache_size = 10
myisam-recover = BACKUP
table_cache = 1024
query_cache_size = 48M
tmp_table_size = 64M
read_buffer_size = 2M
# LOG
#log_bin = /var/log/mysql/mysql-bin.log
#expire_logs_days = 10
#max_binlog_size = 100M
# INNODB
innodb_buffer_pool_size = 1024M
innodb_additional_mem_pool_size = 2M
innodb_thread_concurrency = 3
innodb_autoextend_increment = 512M
[mysqldump]
quick
quote-names
max_allowed_packet = 16M
[isamchk]
key_buffer = 16M
!includedir /etc/mysql/conf.d/
Los datos de configuración de MySQL deberán responder a los recursos del sistema. Si el sistema es 32 bits no se podrá exceder el tamaño de 2 GB para la siguiente combinación: innodb_buffer_pool_size + key_buffer_size + max_connections*(sort_buffer_size + read_buffer_size + binlog_cache_size) + max_connections*2MB
Magento Performance
- Activar las cachés de Magento
En el menú System/Caché Management del panel de administración - Activar la compresión con GZIP en .htaccess
Para ello descomenta la línea
#php_flag zlib.output_compression on - Instalación de Extensión Fooman Speedster
Está extensión combina y aplica minify a los archivos javascript y CSS
Para instalar sigue los pasos de: http://www.magentocommerce.com/magento-connect/FOOMAN/extension/457/fooman-speedster
Estas configuraciones son el grueso de trabajo de optimización. Tanto la configuración pormenorizada de apache como de MySQL depende en gran medida de los recursos del servidor y del sistema operativo utilizado.
Última actualización: 12 de noviembre de 2012
¿Tienes alguna duda?
Contacta y te la resolvemos
Carlos Pérez Ximénez De Embún
Servicio de Tecnólogias
976 30 61 61 (ext. 108)
cperez@camarazaragoza.com