La carga de la página de Magento lleva demasiado tiempo

10

Tengo el sitio web de magento. No hay ningún usuario (máximo 2-3 en el momento).

Nuestro servidor es: CPU: 2000MHz RAM: 2048Mb HDD: 50000Mb.

Instalé ZendServerCE (apc + memcached + Zend Optimizer + Zend Data Cache). Apagué memcached, porque el sitio web cargó mucho peor. Establecí la estructura de tipo plano, los datos reindexados y en caché en la consola de administración.

Entonces tengo apc + Zend Optimizer + Zend Data Cache .

  1. El primer problema es que verifiqué en tiempo de ejecución cómo funciona el despacho. Las llamadas a start_session () tardan entre 500 y 700 ms. Parece que no es un buen resultado. ¿Por qué tanto tiempo? No lo sé.

  2. He leído este: http://dev.mysql.com/doc/refman/5.0/en/server-system-variables.html#sysvar_key_buffer_size y descubrí las opciones óptimas para mi servidor.

Por hora:

Key_read_requests = 8887
Key_reads         = 252
Key_write_request = 187
Key_writes        = 146 

Usted ve que 252/8887> 0.01, pero no demasiado. Es el valor óptimo que he recibido. Otros resultados comenzaron desde> 6.

Aquí está my.cnf:

key_buffer              = 48M
myisam_sort_buffer      = 2M
sort_buffer             = 2M
read_buffer_size        = 2M
join_buffer             = 2M
read_rnd_buffer         = 2M
max_allowed_packet      = 128M
thread_stack            = 192K
thread_cache_size       = 16
query_cache_type        = 1
myisam-recover         = BACKUP
max_connections        = 50
table_cache            = 256
#thread_concurrency     = 10
query_cache_limit       = 8M
query_cache_size        = 98M

3. Memcached por alguna razón no era bueno. Lo apagué. Pero el caché de datos zend y el optimizador zend aún funcionan.

4) APC parece correcto. Para cargar la acción del controlador, toma de 3 a 4 segundos por primera vez (configuré die () allí para verificarlo) y por primera vez toma de 1 a 1.3 segundos.

5) Después de varios minutos reinicé mysql obtuve un buen resultado. Las páginas se cargaban de 1,5 a 2,5 segundos. Pero ahora (después de varias horas) toma de 6 a 10 segundos. No puedo encontrar la razón.

Entonces, ¿ves alguna configuración incorrecta aquí? ¿Puede ser que mi servidor no sea adecuado para magento?

ACTUALIZACIÓN 1: aproximadamente 600 categorías y 1000 productos hoy y aproximadamente 20000 categorías (para diferentes tiendas web) y 1500-3000 productos en el futuro.

No hay muchos atributos.

ACTUALIZACIÓN 2 He notado que la consola ssh funciona demasiado lento. Reinicié el servidor y ahora funciona rápido. significa que tengo un problema con la RAM. No hay suficiente espacio.

Es el estado inicial sin apache:

             total       used       free     shared    buffers     cached
Mem:          2048        600       1447

ACTUALIZACIÓN 3 Lo tengo. Ahora se carga durante 0.5-1.5 segundos

Aquí está la configuración: mysql

[mysqld]
key_buffer_size         = 256M
tmp_table_size      = 32M
max_heap_table_size     = 32M
myisam_sort_buffer      = 4M
sort_buffer             = 4M
read_buffer_size        = 4M
join_buffer     = 4M
read_rnd_buffer     = 4M
max_allowed_packet  = 64M
thread_stack        = 192K
thread_cache_size       = 16
query_cache_type        = 1
myisam-recover          = BACKUP
max_connections         = 20
table_cache             = 1024
innodb_buffer_pool_size = 128M
query_cache_limit   = 24M
query_cache_size        = 256M

php

[apc]
apc.stat=1
apc.enabled=1
apc.optimization=0
apc.cache_by_default=1
apc.shm_segments=10
apc.shm_size=256M
apc.ttl=0
apc.user_ttl=0
apc.num_files_hint=10000
;apc.mmap_file_mask="/tmp/apc"
apc.max_file_size=5M
apc.enable_cli=1
apc.mmap_file_mask="/tmp/apc.XXXXXX"
apc.slam_defense=0
apc.user_entries_hint=10000

Todo funciona perfecto, pero queda una pregunta. APC me muestra esta estadística: ingrese la descripción de la imagen aquí

¿Por qué golpes tan pequeños? ¿Algunas ideas?

Antonio
fuente
Sería bueno si deja caer un par de líneas sobre su instalación de Magneto (por ejemplo, tamaño del catálogo, modificaciones, extensiones, etc.).
user487772
No hay forma de que alguien pueda publicar una serie de archivos de configuración para que pueda configurar correctamente su servidor. Hay docenas de archivos; revisiones específicas de software y cambios en el nivel del sistema que deben realizarse para aprovechar al máximo su hardware disponible.
Ben Lessani - Sonassi
Por favor, describa por qué establece el voto negativo
Anthony
@Tim He actualizado la pregunta
Anthony
2
Me gustaría llegar xhprofe intentar obtener una visualización de lo que está tardando más en cargar. ¿Es este un servidor de producción bajo carga o simplemente para pruebas?
philwinkle

Respuestas:

6

Como la pregunta parece no estar muy centrada en el magento, aquí está mi respuesta no muy centrada en el magento.

El almacenamiento en caché de OpCode y las optimizaciones de base de datos son una buena manera de acelerar sus aplicaciones web hasta cierto punto. Pero el beneficio será relativamente moderado. Para obtener un aumento real de la velocidad, debería considerar usar caché de barniz. Es de código abierto, fácil de configurar y fácil de integrar con magento gracias a los módulos disponibles gratuitamente para magento.

También hay un buen artículo con una breve descripción de cómo funciona: http://www.fabrizio-branca.de/make-your-magento-store-fly-using-varnish.html

Considere especialmente la tabla:

páginas / segundo

mryvlin
fuente
44
El barniz es excelente si ya tienes una tienda rápida y quieres compensar los recursos. Pero nunca debe usarse para ocultar el hecho de que una tienda es lenta. Las páginas aún deben generarse en primer lugar, por lo que siempre serán tiempos de carga de página de 6-10 segundos, independientemente.
Ben Lessani - Sonassi
Parece que sería como memcached que he usado antes. Creo que hago algo mal en las propiedades mysql o el servidor es demasiado débil
Anthony
2

Si su negocio depende de que su hosting funcione bien, ¿por qué está tratando de administrar el servidor sin experiencia?

Seguramente se beneficiaría simplemente contactando a un anfitrión especialista de Magento y dejándoles encargarse de la administración del sistema, mientras hace lo que hace bien, administrando su tienda.

Mirando sus especificaciones, no tiene suficiente RAM para intentar ejecutar una tienda Magento. Hay un montón de preguntas similares como la tuya,

/server//a/400748/113375 .
/server/430565/magento-hosting-on-a-budget

choco-loo
fuente
Porque nuestro cliente tiene un presupuesto limitado. Debería pagar por el anfitrión de magento más de 50 euros por mes. Tenemos un límite para el anfitrión 150-200 euros por año-) De todos modos, gracias por los enlaces
Anthony
1
Entonces, el cliente puede esperar obtener ingresos de ~ $ 20-40,000 / año con una optimización del 100% (el alojamiento es 0.5-1% de los ingresos). Mucha gente aquí puede darle todos los detalles y configuraciones técnicas, pero está tratando de hacer demasiado con muy poco. Es posible que funcione en el aspecto técnico, pero en el aspecto comercial no funcionará. A menos que las cargas de sus páginas dinámicas (sin fpc) sean inferiores a 3, perderá el 56% de los visitantes, lo ideal es apuntar a 1-2; las conversiones de Google y de visitantes castigarán al sitio de otra manera: una decisión difícil. Dada la situación, existe una probabilidad del 95-99% de que se cargue la página> 3s y / o el sitio caiga.
1

¿Es este hardware físico o un servidor privado virtual? Probablemente debería mover su base de datos a su propio servidor dedicado. Esto también le brinda la ventaja de poder aislar si sus problemas de velocidad están en Apache / PHP o en MySQL.

start_session () ser lento significa que probablemente estés sufriendo de hardware con poca potencia. No sé si sus opciones tecnológicas significan que las sesiones se almacenan en el disco o en la RAM, pero 500-700 ms casi seguro significa que se almacenan en el disco y que tiene problemas de rendimiento de E / S, probablemente porque su base de datos es cambiar a disco porque no cabe en la RAM ... pero eso es todo especulación.

¡Buena suerte!

Ralph Tice
fuente
¡Gracias por tu respuesta! Yo uso VPS. No es muy adecuado para magento, pero tengo la tarea de optimizarlo en este ámbito. ¿Es posible verificar si la base de datos se cambia al disco?
Anthony
1
free -mle dirá si está utilizando el intercambio, y las últimas versiones del topcomando le indicarán si presiona O y P para ordenar por uso de intercambio. De lo contrario, debe recurrir al uso de la identificación de proceso de mysqld con algo como esto: awk '/^Swap:/ { SWAP+=$2 } END { print SWAP" kB" }' /proc/$(pidof mysqld)/smaps Todo se describe aquí: dbasquare.com/2012/04/10/…
Ralph Tice
1

Obviamente, no hay forma de mostrarle una 'configuración de trabajo' que aumente su rendimiento, pero Magento realmente intenta hacer algo como esto y publica un ejemplo de una pila LAMP altamente configurada en sus informes de rendimiento. La metodología de estos documentos técnicos se aplica a CE y EE. Recomiendo leer ambos libros blancos por completo, ya que las ideas sugeridas allí hacen eco de gran parte de este hilo y proporcionaron recomendaciones muy específicas de Magento, directamente de la fuente: http://www.magentocommerce.com/whitepaper/


fuente
1

Configuración

ZendFramework (optimizador zend y caché de datos zend) + APC + Memcache + Nginx

funciona perfecto para mi

Más de 30 usuarios con experiencia pueden cargar la página en menos de un segundo (~ 0.4s-0.6s)

Configuré nginx en el puerto 80 (como proxy) y apache en 8080.

Gracias a @MattSchweers por los enlaces. Me habia olvidado de eso. Me ayuda a configurar MySQL

Antonio
fuente
¡No hay problema! De hecho, usé esos libros blancos para algunos ajustes de MySQL esta semana, funcionó bien.
1

en mi experiencia, el servidor litespeed aumenta el rendimiento 2 veces bien vale la licencia de $ 32 / mes 1cpu. Me dijeron que solo necesita la licencia 1cpu ya que php se ejecuta por separado en litespeed.

Kevin Chavez
fuente
El servidor web no es el cuello de botella. PHP es, cambiar a Litespeed no cambiará nada en absoluto.
Ben Lessani - Sonassi
Aunque generalmente estoy de acuerdo en que Litespeed es una gran opción para Magento, esta respuesta probablemente no solucionará el problema planteado por el OP y está fuera de su presupuesto declarado.
Preston
0

Cuando tiene múltiples tiendas web y múltiples categorías, Magento está esencialmente creando un tipo de producto caretsian de entradas para todas las tiendas web, categorías y productos, lo que supondrá una carga significativa en la Base de Datos. Sus fallos de APC son bastante altos, y deberá investigarlo. Sin embargo, incluso si arregla APC, creo que su problema de rendimiento puede persistir, especialmente si aumenta su tráfico. Para acelerar su sitio, necesitará instalar un caché operativo, Varnish o caché de página completa (si es Enterprise Edition).

Magento realiza muchas escrituras de lectura en la base de datos, por lo que también puede intentar que su MySQl en un modo de replicación Master Slave haya recibido todas las lecturas de magento del esclavo, mientras que las escrituras le suceden al maestro.

usuario427
fuente
0

Intentaría cambiar las siguientes opciones de APC y ver si los éxitos se recuperan.

apc.shm_segments 1

apc.ttl 7200

apc.user_ttl 7200

En un sitio en vivo, puede usar lo siguiente también.

apc.stat 0

Esto detendrá la comprobación de APC si el archivo ha cambiado desde la última vez que se compiló, lo que le brinda un buen aumento de velocidad. Simplemente no olvide vaciar su caché APC cuando edite archivos PHP.

PeteZero1
fuente
0

Un par de otros pensamientos. Es posible que desee aumentar su tamaño innodb_buffer_pool_size, 128M puede ser un poco bajo e incluso los sitios pequeños pueden crecer rápidamente. La variable dicta la cantidad de datos que se guardan en la memoria.

Magento usa esto para todas sus tablas, incluidas las tablas de registro que crecen rápidamente. Deberá asegurarse de limitar la cantidad de datos que conserva. Ejecutar "php shell / log.php --status" desde la línea de comandos le dará una idea de dónde se encuentra y si se está yendo de las manos. También hay opciones para limpiar las tablas de registro con él.

No es mucho para trabajar con 2 GB de RAM, por lo que debe tener cuidado con la ubicación de su memoria.

También un calentador de caché de página completa + caché puede ayudar a mantener el catálogo de su sitio y las páginas de cms preparadas y rápidas. Puedes ver el nuestro aquí: http://ecommerce.brimllc.com/full-page-cache-magento.html

Borde
fuente