2009-07-12 40 views

Respuesta

10

Si espera que su sitio escale más allá de las capacidades de un único servidor, deberá planificar cuidadosamente. Diseñe de modo que lo siguiente sea posible: -

  • Haga que su base de datos pueda estar en un servidor separado. Esto no es normalmente muy difícil.
  • Asegúrese de que todo su contenido estático se pueda mover a una CDN, ya que esto normalmente sacará mucha carga de sus servidores.
  • Prepárese para gastar mucho dinero en hardware. Más RAM y discos más rápidos ayudan MUCHO.
  • Se vuelve mucho más difícil cuando necesita dividir la base de datos o el php de un único servidor a varios servidores, así que optimice todo, desde su código, su esquema de base de datos, su configuración de servidor y todo lo que pueda imaginar ponga este último paso el mayor tiempo posible.

Aparte de eso, todo lo que puedes hacer es poner a prueba tu sitio, descubrir dónde están los cuellos de botella y tratar de diseñarlos.

+1

De acuerdo, solo añadiría que el almacenamiento en caché es probablemente lo primero que debe hacer al crear un sitio grande. – usoban

+0

Sí. Asegúrese de que las características de caché de MySQL estén bien configuradas y haga uso de un caché robusto para su código. Hay varios mencionados en otras respuestas que son excelentes. –

17
  1. Pruebe su sitio web con mucha carga.
  2. Monitor de todas las estadísticas
  3. Búsqueda de cuello de botella
  4. Fix cuello de botella
  5. Ir de nuevo a 1

buena suerte

0

Desarrolle su sitio utilizando técnicas sólidas de OOP. Necesitará que su sitio sea modular ya que no todos los cuellos de botella de rendimiento son obvios desde el principio. Esté preparado para refactorizar partes de su sitio a medida que aumenta el tráfico. La primera oración que escribí te ayudará a hacerlo de manera más fácil y segura. Además, utilice el desarrollo basado en pruebas, como refactor significa nuevos errores introducidos, y un buen TDD es bueno para atraparlos antes de que entren en producción.
Separe tanto como sea posible el código del lado del cliente del código del lado del servidor, ya que es probable que se sirva desde diferentes servidores, si el tráfico de su sitio lo justifica.
Lea los artículos (lea los consejos de YSlow, por ejemplo).

GL

4

Salida this talk por Rasmus Lerdorf (creador de PHP)

Especialmente Página 8 y más allá.

+0

Gracias Ólafur Waage – webkul

1

muy similar: How Is PHP Done the Right Way?

escalabilidad no es poca materia y ciertamente más material del que pueda razonablemente cubierto en una sola pregunta.

Por ejemplo, con algunos tipos de aplicaciones, las uniones (en SQL) no se escalan, lo que trae a colación todo tipo de estrategias de caché y fragmentación.

Beanstalk es otra herramienta de escalabilidad y rendimiento en sitios PHP de alto rendimiento. Como es Memcache (tipo diferente).

1

En orden de importancia:

  1. Si ejecuta PHP, utiliza una caché de código de operación como APC. (Esto es lo suficientemente importante como para ser incorporado en la próxima generación de PHP.)

  2. Use YSlow o Google Page Speed para identificar los cuellos de botella. (Esto revelará problemas estructurales con su sitio web que afectan el rendimiento tanto del cliente como del servidor).

  3. Asegúrese de que su servidor web envíe un encabezado Expires apropiado para contenido estático (imágenes, Javascript, CSS), de modo que el navegador pueda almacenar en caché es correcto (YSlow también le advertirá acerca de esto.)

  4. Use un acelerador HTTP, como Varnish. (This picture lo dice todo - y ya tenido un acelerador HTTP en su lugar.)

2

Un número de personas han mencionado herramientas para identificar los cuellos de botella, y que por supuesto es necesario. No puede pasar tiempo productivo acelerando algo sin saber dónde está lento. Pero la otra cosa que necesita saber es dónde se encuentra la escalabilidad de su destino. ¿Vale la pena invertir un par de meses para que su sitio alcance el mismo número de usuarios que Twitter si va a ser utilizado por tres personas en Recursos Humanos? ¿Tiene una tasa conocida de transacciones, o latencia de respuesta, o número de usuarios, en los requisitos del producto? Si es así, apunte esos números con su estrategia de optimización. Si no, encuentra los antes de perseguir la rata de rendimiento por el agujero.

1

El mayor problema para la escalabilidad suele ser recursos compartidos como DBMS. El problema surge porque los SGBD generalmente no tienen forma de relajar las garantías de consistencia.

Si desea aumentar la escalabilidad cuando utiliza algo como MySQL, debe cambiar el diseño del esquema para relajar la coherencia.

Por ejemplo, puede separar su esquema de base de datos para tener su modelo de datos normalizado para escrituras, y una parte de desnormalización de solo lectura replicada para el 90% de las operaciones de lectura. Los datos de solo lectura pueden distribuirse en varios servidores.

Otra forma de aumentar la escalabilidad de una base de datos es dividir los datos, p. separe los datos en una base de datos para cada departamento y agréguelos en el ORM o en el DBMS.

+0

La agregación de datos en la capa ORM presenta una complejidad de nivel de aplicación que puede ser lenta para lenguajes como Ruby y PHP. Además, es más difícil de manejar. –

0

Además de las otras sugerencias, busque dividir sus sitios en niveles, como en multitier architecture. Si se hace bien, puede usar un servidor por nivel.

Cuestiones relacionadas