Pregunta

Para un sitio web como reddit con muchos votos arriba / abajo y muchos comentarios por tema, ¿con qué debo ir?

Lighttpd / Php o Lighttpd / CherryPy / Genshi / SQLAlchemy?

y para la base de datos, ¿qué escalaría mejor / sería más rápido MySQL (4.1 o 5?) o PostgreSQL?

¿Fue útil?

Solución

No puedo hablar sobre la pregunta de MySQL / PostgreSQL porque tengo una experiencia limitada con Postgres, pero mi proyecto de investigación de Masters fue sobre sitios web de alto rendimiento con CherryPy, y no creo que se sienta decepcionado si lo usa CherryPy para su sitio. Puede escalar fácilmente a miles de usuarios simultáneos en hardware básico.

Por supuesto, lo mismo podría decirse de PHP, y no conozco ningún punto de referencia razonable que compare el rendimiento de PHP y CherryPy. Pero si se preguntaba si CherryPy puede manejar un sitio de alto tráfico con una gran cantidad de solicitudes por segundo, la respuesta es definitivamente sí.

Otros consejos

La configuración ideal estaría cerca de esto :

caching

En resumen, nginx es un servidor web / servidor frontal rápido y ligero con un módulo único que permite obtiene datos directamente de la tienda RAM de memcached , sin golpear el disco, o cualquier aplicación web dinámica. Por supuesto, si la URL de la solicitud ya no estaba en caché (o si ha caducado), la solicitud continúa con la aplicación web como de costumbre. La parte genial es que cuando la aplicación web ha generado la respuesta, una copia de ella va a memcached, lista para ser reutilizada.

Todo esto es perfectamente aplicable no solo a las páginas web, sino también a las consultas / respuestas de AJAX.

en el artículo, los servidores 'back' son http, y específicamente hablan de mongrel. Sería aún mejor si el respaldo fuera FastCGI y otro marco (¿más rápido?); pero es mucho menos crítico, ya que el equipo nginx / memcached absorbe la mayor parte de la carga.

tenga en cuenta que si su esquema de url para el tráfico AJAX está bien diseñado (REST es el mejor, IMHO), puede colocar la mayoría de la base de datos directamente en memcached, y cualquier POST (que pasará a la aplicación) puede actualizar de manera preventiva el caché.

En la pregunta de DB, diría que PostgreSQL se escala mejor y tiene mejor integridad de datos que MySQL. Para un sitio pequeño, MySQL puede ser más rápido, pero por lo que he escuchado, se reduce considerablemente a medida que aumenta el tamaño de la base de datos. ( Nota: nunca he usado MySQL para una gran base de datos, por lo que probablemente debería obtener una segunda opinión acerca de su escalabilidad. ) Pero PostgreSQL definitivamente se adapta bien, y sería una buena opción para un alto tráfico sitio.

Va ??a necesitar más datos. Jeff tenía algunos artículos sobre los mismos problemas y la respuesta fue esperar hasta que llegues a un problema de rendimiento.

para comenzar, ¿quién está hospedando y qué tienen disponible? ¿Cuál es tu habilidad de talento en casa? ¿Vas a contratar una empresa externa? ¿Qué recomiendan? ¿Proyecto nuevo con un equipo dispuesto a aprender un nuevo marco?

Lo segundo es hacer algunas maquetas: cómo va a funcionar la interfaz. ¿Qué datos necesita cargar y persistir? la idea es mantener el tráfico entre la web y la parte inferior de la base de datos. p.ej. No hay páginas de chat con muchas consultas. etc.

Una vez que tenga una mejor idea de los requisitos y el flujo de datos, entonces trabaje en el diseño de la base de datos. hay muchas reglas a seguir, pero una de las mejores es seguir las reglas de normalización (sí, soy un tipo de DB, ¿por qué?)

Ahora tiene un par de páginas compuestas: ejecute sus pruebas. estas teniendo un problema? Sí, ahora mira lo que es. Página de servicio o tirones db? Medir y luego elegir un curso de acción.

Iría con nginx + php + xcache + postgresql

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top