2012-01-10 17 views
5

También soy un programador de php. Siempre me pregunté cómo las páginas de Facebook se cargan tan rápido con tantos usuarios conectados a ellas en cualquier instancia. Mi sitio nunca alcanzó tal velocidad incluso cuando el tráfico era menor. ¿Qué hacen tan bien para sus sitios?Lo que hace que las páginas de Facebook carguen tan rápido

¿De qué debería ocuparme, incluso si quiero hacer que un sitio web tenga incluso la mitad de velocidad que Facebook? Me refiero a los sitios web php, mysql y jquery.

+0

¿Qué tipo de máquina aloja su página? ¿Qué tipo de conexión de internet tiene esa máquina?Creo que el equipo de Facebook con respecto a eso es de primera clase, para empezar. Además, utilizan hiphop, que transforma php en C++ ... – codeling

Respuesta

7

Tome un vistazo a este post reddit por alguien que pasante en Facebook:

http://www.reddit.com/r/programming/comments/nav19/facebook_releases_hhvm_60_percent_faster_than_its/c37pitt

partes más relevantes del puesto:

  • llamadas bases de datos tienen claves de caché. Los cortocircuitos de Memcached golpean la base de datos. Facebook tiene una tasa de aciertos> 99.9%. Ocasionalmente, puede haber un problema que hace que la tasa de aciertos disminuya al 95%. Esto probablemente no suceda mucho, pero cuando lo hizo, hizo que todo el sitio fuera indescriptiblemente lento.

  • Las llamadas de base de datos estúpidas que obtienen mucho son generalmente mejores que las llamadas de bases de datos inteligentes que captan mínimamente. ¿Por qué? Debido a que la mayoría de las estúpidas llamadas a la base de datos son las mismas, y por lo tanto muy cachuables, el uso de los recursos del servidor para filtrar cosas es, por lo tanto, mucho más económico que usar recursos de la base de datos. O, en otras palabras, disminuye la complejidad de las llamadas a la base de datos y hace menos a expensas de más datos por llamada a la base de datos, y una mayor cantidad de la carga cambia a memcached.

2

Básicamente:

  • Escala horizontal
  • compilar sus código PHP
  • Uso de MySQL de una manera altamente distribuida como si fuera una base de datos NoSQL (esto quiere decir que don' t join that much when consultarlo)
  • Caché mucho
+0

No entendí el concepto de "no unirse". ¿Quiere decir que los datos se guardan en una sola tabla? – Hacker

+0

tipo de. Eso es lo que NO_SQL hace básicamente. Almacenan datos en hashes enormes. Y evitan unirse a las relaciones para mejorar el rendimiento de las consultas. –

3

Facebook tiene un caché muy ajustado y una configuración de clúster MySQL muy ajustada. Intente buscar 'MySQL en Facebook' dentro de Facebook. ¡Algunos de sus consejos y consejos son legendarios!

Sin saber cuál es su sitio, cómo está codificado, la estructura de la base de datos, etc. sería imposible decir cómo optimizar su sitio.

Trabajar con bases de datos grandes día tras día, incluso el cambio más insignificante a una consulta puede tener implicaciones masivas para el rendimiento. No solo ejecute un índice en toda la tabla, use un motor de índice decente como Sphinx, no solo el índice interno de MySQL. Optimice todas sus llamadas a la base de datos dentro de sus vidas.

también configurar MySQL registro para Slow_queries etc.

O'Reilly hacer un par de buenos libros electrónicos en MySQL rendimiento.

Dave

Cuestiones relacionadas