MySQL Server Performance on Microsoft Azure, a lesson learned from a Linux Distribution

Microsoft Azure support infrastructure as a service, that is, support for creating your custom virtual machines with the operating system of your choice. So you can chose Linux as your operating system. Linux has a huge list of different distributions to choose from. In this post I want to show the different in performance found when you host a MySQL Server on different Linux distributions.

Supported and no supported Linux distributions

Inside the Azure portal you can create virtual machines from the gallery. Those images include Windows Server images and Linux. For Linux there are Ubuntu, Centos and OpenSuse. Microsoft support is limited to the Azure platform and services and a support case through support agreement is required to engage the Azure support team. Microsoft support will not offer assistance in the design, architecture, development, or deployment of applications or solutions on Azure. If Linux support is needed, customers should reach out to the vendors directly for support. For more info click here.

Also you can download to your Azure Storage images made by the community, by selecting Virtual Machines on left side, and on that panel, selecting “Images” tab and there clicking on ”Browse VM Depot”.

clip_image002

There you can select a wide range of Linux distribution with a lot flavors, that is. You can download an image with all necessary software to run WordPress, Alfresco, ect.

On the list there are a Debian GNU/Linux 7.0 wheezy that we are going to use on our demo too. That is because when want to show the different between a Microsoft’s supported Linux distribution and a community Linux distribution.

Mysqlslap

Mysqlslap is a command line tool that is included on the mysql-client package that helps database administrator to simulate work load on the server. This tool can simulate multiple concurrent users, multiple queries and can work with string and int types while simulating the work load.

This tool is great for a performance comparison because you can create work load on every machine and using the same tool.

A typical command line for this tool could it be like this.

mysqlslap --user=root -p --auto-generate-sql --concurrency=1 --number-of-queries=100 --number-char-cols=8 --number-int-cols=10 
--iterations=10

During this load test I’m going to change the currency value to simulate more users on the test, this will help to measure the performance on the Linux distributions.

All test are going to be executed on machines that doesn’t have swap partition, only have one disk for the system, the Virtual Machine Size is A3 (4 cores, 7GB of memory).

IOPS

All virtual machine have a limit on the number of IOPS (Input/Ouput Operation per Seconds) of 300 IOPS for basic virtual machines and 500 IOPS for Standard virtual machines.

To increase this number you can add more disk to your machine and set them as a RAID0 to enable striping. With this level there is no redundancy and no level of fault tolerance. The more disk you add to the virtual machine the more IPOS per second you can have.

Results

Concurrency

Debian 7.0

Ubuntu 14.10

CentOS 13

Debian 7.0

Ubuntu 14.10

CentOS13

1

1.991

1.9740

0.0470

2.24

2.179

0.069

10

0.442

0.3670

0.0240

0.393

0.461

0.049

100

0.098

0.0930

0.0250

0.145

0.138

0.051

500

9.778

9.5290

8.0280

14.249

13.353

12.546

clip_image004

Conclusion

The best Linux distribution for MySQL performance is CenOS, it has the best time executing all queries, and obviously the standard tier is the best option too.

All machines on this series of test doesn’t have a swap partition, so that mean that there is no noise on the hard drive, affecting performance.

Luis Guerrero.

Technical Evangelist Microsoft Azure

@guerrerotook

3 formas diferentes de publicar una Web en Windows Azure.

Introducción

Windows Azure es una plataforma muy flexible en la que se pueden publicar y consumir todo tipo de aplicaciones. En este post se repasarán las 3 formas que hay de publicar un Web, viéndose las ventajas e inconvenientes de las tres formas.

Las tres maneras son: Máquinas virtuales (Infraestructura como servicio IaaS), Servicios de nube (Plataforma como servicio, PaaS) y Windows Azure Web Sites.

Maquinas Virtual, IaaS

Las máquinas virtuales, como su nombre indica es la capacidad que tiene Windows Azure de hostear una máquina virtual basada en ficheros vhdx. Desde el portal de Windows Azure se puede seleccionar nueva máquina virtual y seleccionar creación rápida. De esa manera se tiene una maquina encendida y funcionado.

Una vez generada la VM se puede instalar desde ahí, Internet Information Services y copiar nuestra aplicación Web en la máquina.

Ventajas

  • Se tiene toda la flexibilidad para instalar y administrar la máquina virtual desde escritorio remoto.
  • Se puede alojar la aplicación web en Linux.
  • La máquina virtual es persistente.

Inconvenientes

  • No hay mecanismo definido para publicar la web. Copiar los ficheros por escritorio remoto a mano o cualquier otro mecanismo.
  • Hay que configurar e instalar IIS y ASP.NET.
  • Se tiene que configurar y administrar el balanceo de carga a mano para el puerto de HTTP/HTTPS. Cuando se quieran agregar más maquinas se tiene que hacer a mano.
  • Las tareas de administración se tienen que repetir para todas las máquinas.
  • El usuario es responsable del mantenimiento del S.O.

Servicios en la nube (Plataforma como servicio)

Este fue el primer servicio con el que se lanzó Windows Azure. Permite empaquetar una aplicación Web, independientemente del tipo de lenguaje o runtime, y publicar esa aplicación en el número de máquinas que se hayan designado en el fichero de configuración.

En este método de publicar aplicaciones web, se genera una máquina virtual, se instala y configura IIS con los valores presentes en el fichero de configuración del servicio y se copia el código de la aplicación web al directorio de publicación de IIS.

El proceso es completamente automático y no requiere atención por el usuario en ningún momento. No tiene límite en cuanto al número de instancias de máquinas. (Cómo curiosidad decir que el máximo de máquinas que el autor ha configurado han sido 750, toda una pasada)

Ventajas

  • Flexibilidad para empaquetar y publicar la aplicación.
  • No requiere configuración por parte del usuario, está completamente automatizado.
  • Permite incrementar y reducir el número de instancias a petición del usuario, también de manera automática.
  • Tiene soporte para el autoscale de Windows Azure.
  • Permite configurar aplicaciones web en subdominios y subcarpetas como aplicaciones (en IIS).
  • Permite configurar todos los certificados SSL que se deseen.

Inconvenientes

  • Las máquinas donde se ejecutan no son persistentes. Hay que guardar todos los datos fuera de la máquina donde se ejecuta. Por ejemplo en un Windows Azure Storage.
  • Las peticiones Http al servicio no tienen afinidad, lo que significa que cualquier petición puede ir a cualquiera de las maquinas del servicio en la nube. Hay que configurar la sesión de ASP.NET para que se guarde en Sql Server, Windows Azure Cache Service o Windows Azure Storage.
  • Hay que ser capaz de empaquetar la aplicación web y todas sus dependencias de software.

Windows Azure Web Sites

Windows Azure Web Sites es otro servicio de Windows Azure enfocado a la publicación de aplicaciones Web pero, ¿Cuál es la diferencia con un servicio en la nube? Los servicios en la nube pueden contener, además de un rol de tipo Web, un rol de tipo de trabajo. Es decir un servicio en la nube es una colección de roles de trabajo y de web. Un rol de trabajo es como un servicio de Windows, pero que se ejecuta en Windows Azure y ejecuta tareas en segundo plano. Esas tareas pueden ser generar informes, consolidad información en la base de datos, envíos masivos de emails, cambio de resolución de imágenes y todo aquello que se tiene que hacer en nuestra aplicación web, pero que no se quiere que se impacte en el rendimiento del sitio web.

Volviendo al tema de Windows Azure Web Sites, este servicio ofrece tres modos de funcionamiento:

  • Gratis: los usuarios tienen hasta un máximo de 10 sitios web de manera gratuita, 1 Gb de espacio en disco y 165 megas de salida al día.
  • Compartida: hasta un máximo de 100 sitios web, que se pueden escalar hasta un máximo de 6 instancias, con 1 Gb de espacio en disco y el tráfico de salida se factura al precio estándar.
  • Estándar: hasta un máximo de 500 sitios web con una CPU dedicada, 10Gb de espacio en disco y el tráfico de salida se factura al precio estándar.

Con estas tres configuraciones se ofrecen diferentes maneras y precios de alojar tu aplicación web según los requerimientos del usuario.

Otra de las diferencias con respecto a los servicios en la nube, es la forma de publicar tu sitio web. WAWS ofrece varias maneras de publicar:

  • Microsoft Web Publishing: Permite publicar un proyecto de web directamente desde Visual Studio.
  • Team Foundation Service: se pude publicar directamente desde TFS Service, la solución en la nube de TFS. No funciona con TFS on premises.
  • Repositorio local de Git: puedes hacer push desde un repositorio local a uno online que representa tu sitio web.
  • Github es un servicio de hosting en Git de terceros.
  • Dropbox: te permite configurar una carpeta de la cuenta para publicar directamente en tu sitio web.
  • Bitbucket: otro servicio de hosting de Git como Github.
  • Codeplex: el servicio de hosting de proyectos de Microsoft.
  • External repository: un repositorio externo en una URL.

Otro de los aspectos que se pueden configurar en el servicio es la versión de .NET Framework en la que se ejecuta la Web, V3.5 o V4.5. Otro de los lenguajes que vienen instalados es PHP que se puede deshabilitar o cambiar la versión de 5.3 a 5.4.

Ventajas

  • Flexibilidad en cuanto al método de publicación de la web.
  • Perfecta para trabajo en equipo.
  • Rapidez, dar de alta un sitio web en Windows Azure son segundos y tener tu web online también.

Inconvenientes

  • No se puede acceder a la configuración de IIS, solamente la configuración que se ofrece desde el portal de administración de Windows Azure.
  • El número de instancias de los modos de compartido y estándar son máximo 6 y 10 respectivamente. En los servicios de la nube no hay límite.

Espero que el artículo haya sido de ayuda para decidirse con qué servicio de Windows Azure se ajusta mejor a las necesidades de cada proyecto.