«Mejora de rendimiento de WPML 4.2.6 para sitios ocupados – WordPress»
En los últimos meses, hemos notado que nuestro propio sitio – wpml.org – estaba volviéndose más lento. Después de actualizar el servidor sin éxito, nos enfocamos en analizar a fondo el problema. El resultado es el lanzamiento de hoy, que redujo nuestra carga de CPU y tiempo de respuesta en un 70%.
Lo que hemos aprendido sobre Análisis de Rendimiento
El rendimiento también ha sido muy importante para nosotros. Hemos estado probando la memoria, las consultas y el tiempo de CPU de WPML durante años y mejorándolo en cada versión. Lo que aprendimos de esta ronda de desarrollo es que las pruebas estáticas no siempre revelan los problemas reales.
El método que solíamos usar para probar el rendimiento era:
- Crear una base de datos grande con muchas publicaciones, metadatos de publicaciones, categorías y usuarios
- Producir una lista de las páginas más «pesadas»
- Cargarlas muchas veces, medir el tiempo que tardan en cargarse y perfilar
Esto nos mostró las páginas front-end y admin que necesitamos depurar y optimizar. Nos aseguramos de reducir el número de consultas, evitar consultas largas y escribir código PHP eficiente.
¿Entonces, qué falta?
WordPress y WPML son un poco más complejos que «solicitar una página y esperar a que se cargue». Todo sucede a través de la base de datos, que es un recurso compartido. Lo que un visitante A hace con la base de datos puede afectar la experiencia que recibe el visitante B.
Para entender estos cuellos de botella, instalamos una herramienta llamada Appoptics en nuestro sitio de producción. Nos permitió medir qué funciones y consultas consumen tiempo, para que pudiéramos analizar por qué.
La Real Mejora de Rendimiento
Descubrimos que una operación aparentemente inofensiva en Traducción de Cadenas tenía un conflicto de recursos significativo con una consulta frecuente a la tabla de opciones de otro plugin. Si solo ejecutas esa llamada 1 millón de veces, no sientes ningún problema. Sin embargo, cuando otras páginas necesitan acceder a la tabla de opciones, tienen que esperar hasta que las cadenas no la estén utilizando. La lista de solicitudes pendientes crece, se desborda la base de datos y todo se descontrola.
Mirando el gráfico, puedes ver que la mayor parte del esfuerzo de nuestro servidor se dirigía a la base de datos (esa tabla que se bloqueaba y desbloqueaba constantemente). Puedes adivinar a qué hora aplicamos la solución.
Pero Tengo Otros Problemas de Rendimiento, ¿Puedes Solucionarlos?
Lo que descubrimos definitivamente ayudará no solo a wpml.org, sino a muchos otros sitios ocupados que utilizan WPML. Si tienes un sitio con una carga muy baja, apenas sentirás esta mejora. Solo afecta a sitios con mucha concurrencia y personas haciendo muchas cosas diferentes.
Es posible que otros sitios puedan beneficiarse de otras optimizaciones de rendimiento. Ahora hemos aprendido que la mejor manera de hacer este trabajo es instalando un perfil en el sitio de producción real, que sufre de un mal rendimiento. Incluso si recibimos una copia de tu base de datos, no podemos simular tu tráfico. Por eso, todas nuestras rondas anteriores no detectaron este problema específico.
Por cierto, nuestra ronda de mejora de rendimiento no reveló cuellos de botella solo en WPML. Arreglamos lo que encontramos en WPML, pero notamos problemas drásticos en otros lugares. Algunos los solucionamos nosotros mismos y otros los optimizamos a través de la base de datos.
Si estás interesado, avísanos y te ayudaremos a instalar análisis de rendimiento en tus sitios de producción. Luego, estaremos encantados de ayudarte a analizar los resultados. Si encontramos algo en WPML, lo corregiremos. Existe una buena posibilidad de que los sitios con problemas de rendimiento encuentren varios problemas provenientes de fuentes sorprendentes.
Qué más hay de nuevo en WPML 4.2.6
WPML Core 4.2.6
- Agregado el filtro wpml_post_edit_meta_box_priority para cambiar la prioridad del cuadro de meta edición de WPML
- Corregido problema al actualizar complementos en instalaciones de subcarpetas – utilizando siempre URLs del sitio
- Guardar las notificaciones solo cuando sea necesario para reducir escrituras adicionales en la tabla wp_options
- Corregida una vulnerabilidad de seguridad con los enlaces del selector de idioma
WPML String Translation 2.10.4
- Corregido un problema con la importación de archivos mo de ST para que la tabla wp_option no se actualice innecesariamente
WPML Translation Management 2.8.5
- Mejorada la apariencia de los controles de paginación en la página de Trabajos de Traducción
- Corregido un problema con la asignación de traductores en la página de Trabajos de Traducción cuando el idioma de administrador es diferente al inglés
- Corregido el contenido incorrecto de la columna «Traducido por» cuando el idioma de administrador es diferente al inglés
WPML Media Translation 2.5.2
- Guardar las notificaciones solo cuando sea necesario para reducir escrituras adicionales en la tabla wp_options
WPML CMS Nav 1.5.1
- Mejora de rendimiento al limpiar la caché solo cuando corresponda
Descarga y Actualización
Como siempre, recibirás esta actualización automáticamente para todos tus sitios registrados. Siempre puedes iniciar sesión en tu cuenta de WPML para descargar e instalar manualmente.
Recomendamos realizar copias de seguridad antes de actualizar cualquier cosa en tu sitio.
¿Feedback? ¿Preguntas? ¿Sugerencias?
Nuestros sitios ahora funcionan mucho más rápido, pero nos encantaría saber sobre tus sitios. Por favor, deja tus comentarios y te responderemos.
La entrada WPML 4.2.6 – Traducción de Cadenas más Rápida para Sitios Ocupados apareció primero en WPML.
Lee el artículo original en https://wpml.org/changelog/2019/04/wpml-4-2-6-faster-string-translation-for-busy-sites/ para conocer todos los detalles.
Haz que tu web sea más segura y eficiente con Zonsai.