Servidor EC2, ¿Sería suficiente una Micro Instancia?

He estado desarrollando un sitio web que importará ~12 millones de líneas de código por hora (~1 GB/datos) a una base de datos mySQL. Después de mirar diferentes VPS y luego Amazon ec2, estaba pensando en optar por la solución más rentable.

En cuanto a los visitantes del sitio web, solo debe haber entre 300 600 y 15 XNUMX páginas vistas al mes (un máximo de XNUMX GB de ancho de banda), distribuidas uniformemente a lo largo del día.

Cuando importo los datos, uso "IN FILE" e importa ~ 200-350k líneas a la vez y solo toma ~ 1-3 segundos. Las importaciones se ejecutan a través de un trabajo cron y se ejecutarán 1 cada minuto (eso es ~ 1400 veces al día).

¿Sería mejor tener un VPS o optar por Amazon EC2? Y si elijo Amazon EC2, ¿los picos de CPU serían demasiado para una micro o incluso una pequeña (necesitaría una instancia mediana de alta CPU)?

Si alguien pudiera compartir alguna idea sobre la cantidad de CPU que mySQL realmente extraería en esos ~ 1-3 segundos o cuánto se permite una micro Instancia en tiempo de CPU.

Si elijo la ruta VPS, obtendré el paquete S1 de http://x10vps.com/self-managed-vps.php y actualice a S3 si es necesario.

preguntado el 22 de mayo de 12 a las 20:05

1 Respuestas

Es difícil decir mucho sobre esto sin saber nada sobre los detalles de los datos que está cargando. ¿MySQL tiene que actualizar los índices en la tabla? ¿Ya está todo ordenado correctamente? ¿Cuántas columnas hay? ¿Está realizando alguna operación de uso intensivo de CPU en su LOAD DATA INFILE declaración (por ejemplo, reemplazando partes de cadenas)? ¿Se eliminan los datos antiguos después de un cierto período de tiempo o se deben conservar todos los datos durante la vida útil de su aplicación?

Habiendo dicho eso, parece que una sola instancia de Micro probablemente tendrá problemas para lidiar con esto. La importación de datos debería estar bien siempre que haga una copia de seguridad de la instancia con suficiente almacenamiento de EBS (tal vez en una configuración RAID), pero si esa única instancia también será responsable de ejecutar consultas de usuario en un conjunto de datos tan grande, eso probablemente no va a funcionar. correr muy suavemente. En el mejor de los casos, terminará con una latencia de unos segundos para las solicitudes de los usuarios cuando se esté ejecutando el script de importación. Dependiendo de su aplicación, eso puede o no ser aceptable.

Si va a ejecutar consultas costosas en sus datos, puedo decir ahora mismo que eso no funcionará muy bien en una sola instancia de Micro :) Puede escalar a una instancia más grande o, según sus necesidades, también puede desea considerar usar SimpleDB o una solución NoSQL similar en su lugar (aunque eso requeriría más código en su secuencia de comandos de importación, ya que tendrá que hacer envíos por lotes de un máximo de 25 elementos por lote).

Pero estos son sólo algunos pensamientos generales. Y AWS en realidad proporciona a los nuevos usuarios un nivel de uso gratuito, que le permite ejecutar una instancia EC2 Micro de forma continua durante un año completo sin tener que pagar un centavo, entonces, ¿por qué no registrarse para obtener una cuenta y ejecutar sus propias pruebas? Más detalles aquí. AquíHay más información general sobre cómo funcionan las microinstancias y para qué aplicaciones serían adecuadas.

contestado el 22 de mayo de 12 a las 21:05

Antes de importar, trunco ​​la tabla, luego, al importar, solo toma los datos del archivo y los coloca en la base de datos. La tabla en la base de datos contiene 6 columnas (mediumint,varchar(26),smallint,smallint,int,smallint). En cuanto a las claves, hay una primaria en el índice id (mediumint) en el int y una única en una unión de los 2 smallints. En cuanto a las consultas, buscarán específicamente a través de la clave principal, la clave única o la clave de índice. Cada consulta generalmente devolverá una sola coincidencia, tengo algunas consultas que devolverán 1-1000resultados a través de la clave de índice, y algunos son resultados basados ​​en cálculos. - Steven10172

Cuando ocurran las consultas, me gustaría que fueran casi instantáneas, y cada vista de página tendrá algún tipo de consulta, generalmente una simple obtención de la identificación, que es una clave principal. - Steven10172

Mmm. Probablemente sería mejor importar en una tabla separada para evitar que los usuarios no puedan acceder a ningún dato después del truncamiento, mientras aún está cargando datos nuevos. Creo que el problema para usted será que MySQL no puede construir estos índices lo suficientemente rápido en una instancia Micro, tal vez si todo ya está ordenado y si no hay problemas clave únicos, pero aún así, será un gran éxito. a una micro instancia. - Daan

Gracias. Tengo una PC vieja (Intel(R) Pentium(R) 4 CPU 3.00GHz, 2 núcleos con 768mb DDR) y cuando ejecuto una consulta de línea de 250k tarda ~5.6 segundos en truncar y luego importar. Creo que lo haré con una opción de VPS y actualizaré si es necesario. - Steven10172

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.