Arquitectura de server para un website de lectura pesada

El sitio es una aplicación PHP personalizada escrita con una database Mysql de casi 3NF (altamente relacional, muchas foreign keys). Este website tiene un 90% de lectura / 10% de escritura.

Actualmente, estamos en un VPS con 2Gig de memory y con alnetworkingedor de 1000 visitantes únicos por día, y estamos encontrando que este host está fallando.

Por varias razones, la estabilidad del Web site es solamente una razón (otras razones incluyen la ayuda de mala calidad del cliente, pero ésa no es ni aquí ni allí), estamos moviendo huéspedes. Las tres prioridades principales para este negocio al seleccionar una opción de server son:

  1. Estabilidad
  2. Precio
  3. Escalabilidad

Estoy considerando un deployment de EC2. Una opción que me parece muy atractiva es comenzar con dos instancias EBS micro de un server MySQL y un server Apache. Mientras que esto pone mi memory total debajo de 2G de mi VPS actual, esto parece una manera realmente buena de separar las necesidades de la database y de la porción de la tela. ¿Sería mejor con una sola instancia de memory superior? ¿Qué otras configuraciones de server están ahí fuera que debo considerar antes de esto?

En una nota lateral, hay muchas posibles vías de optimization. Algunas páginas (las más afectadas) alcanzan 1000+ consultas de database por página. MySQL también no está tan completamente afinado como podría ser. APC está instalado pero no se utiliza en ningún código.

3 Solutions collect form web for “Arquitectura de server para un website de lectura pesada”

Si tiene un sitio de lectura intensiva que está fallando, debe examinar la estrategia de almacenamiento en caching de la database. Antes de hacer cualquier cosa con el hardware, examine su uso de caching de MySQL en detalle y vea si puede ajustarlo mejor. También vale la pena comprobar que todas sus combinaciones están utilizando índices. 1000 visitantes únicos por día es tráfico muy bajo, y realmente debería ser capaz de manejarlo desde su server actual.

Si necesita más hardware, seguramente encontrará que necesita más memory RAM para poder tener una caching de database más grande, y que lo hará mejor con un solo server con más RAM en lugar de dos serveres con less RAM. En Amazon, me gustaría ver una única gran instancia, que casi cuadruplicar su memory – aunque costaría mucho más de dos instancias de micro, 34 centavos por hora en lugar de 2 x 2 centavos por hora.

Personalmente, nunca implementaría ninguna database (no importa la plataforma) en un server con 2 Gigs de RAM (mucho less los 613 Megs que viene con una micro instancia). Cuando se trata de bases de datos más RAM es mejor. Usted wan para conseguir tanto de la database en memory como sea posible que usted no está esperando el disco.

Una carga de 1000 visitantes únicos al día suena como casi ninguna carga. Aunque para get un performance, es posible que no quiera search visitantes únicos, sino vistas de página. Pero sólo 1000 visitantes únicos es como less de 1 visitante por minuto. Su server apenas tiene concurrency y está inactivo la mayor parte del time.

Esto significa que puede probar su aplicación en cualquier PC o computadora portátil y ver cómo funciona. Si no tiene problemas de performance durante esta testing de usuario único, debería ejecutarse en su server.

En términos generales, yo diría que una simple aplicación basada en web CRUD debe ejecutarse en un server web con 2 GB. Si la database es de sólo 100MB creo que debería volar. Pero es posible que desee comprobar si configura su configuration my.cnf correctamente, especialmente si utiliza INODB (aunque un pequeño db de 100 MB debería encajar fácilmente en la caching estándar del sistema de files).

Pero yo no soy un fan de alojamiento compartido y VPS, ya que nunca está seguro de lo que se obtiene:

  • No siempre la memory especificada, es la memory garantizada (overselling)
  • Compartir resources significa que depende de las otras cargas que están en su server compartido
  • Con un VPS su memory principal no siempre se utiliza como una caching del sistema de files (bye bye performance!)
  • Algunas soluciones de VPS son muy descendentes en el poder de procesamiento de progtwigción, compartiendo IO es una historia diferente (bye bye performance).
  • A pesar de que lo llaman una SAN, podría ser sólo un NAS (latencias más altas, por lo tanto bye bye performance)
  • A pesar de SAN suena bien, no tienes idea con qué tipo de carga de trabajo tiene que manejar en total, por lo que podría ser mucho más lento de lo esperado.

Por lo tanto, si desea un performance fiable, puede ir mejor para un host dedicado IMO.

  • Malas secuencias de commands de php que llevan al server a una parada
  • Apache reporta un estado de 200 para las URL de WordPress inexistentes
  • no puede get mssql trabajando con SQL Server 2005
  • ¿Cómo arreglar Apache de estrellarse con PHP + Curl en una request de SSL?
  • ¿Por qué PHP Composer tiene CA certs en su file de installation?
  • El server no puede procesar files .php - los descarga en su lugar
  • fopen: no se pudo abrir la secuencia: permiso denegado en el directory con 755
  • Permitir ver el código fuente de PHP de mis files de testing desde el browser web
  • Qué marco (PHP?) Para utilizar para un front-end SOAP con AJAX
  • Cómo quitar require_once llamadas en un directory (Win)
  • Actualización de la versión de libxml2 que usa mi installation de PHP
  • Cómo utilizar xdebug con eclipse IDE para PHP?
  • ¿Cómo agregar soporte de Postgres a PHP instalado por Homebrew?
  • El linux y los temas del servidor de Windows, como ubuntu, centos, apache, nginx, debian y consejos de red.