puedo insertar iframes php performance iframe server ppc

php - insertar - iframes



Retraso y baja velocidad en la carga de contenido iframe en una gran visita (3)

Con 3k solicitudes por minuto, y con la esperanza de crecimiento, debe comenzar a utilizar big data arquitectura y las herramientas de big data .

Aquí hay algunos aspectos más destacados de la imagen a considerar:

  • Use un CDN separado para almacenar y servir las imágenes.
  • Utilice el software mapReduce para almacenar los datos, como hadoop .
  • Obtenga los servidores que se distributed , a diferencia de un servidor enorme.
  • Agregue un servidor de load balancing .
  • Desactiva todas las funciones y extensiones de php que no necesites.

Trabajando en un sistema que almacenará más de 4 million registros per day .
Para reducir la E / S y aumentar la velocidad, cambio el almacenamiento de la base de datos al archivo. Entonces los datos cambiarán a json y se escribirán directamente en el archivo.

Más información

El sistema es un sistema ppc escrito por PHP que muestra un banner en varios sitios con sus propios servidores a través de un iframe.

siempre que este banner se cargue en cualquier sitio, almacenaré un registro de su información en un archivo (fue una inserción en la base de datos anterior) y actualizaré los campos de arrastre en las tablas de arrastre en la base de datos.

Problema

Cuando las visitas aumentan y alcanzan casi las 3000 visitas por minuto, la velocidad de carga del iframe se reduce significativamente, y aún más, a veces se produce el tiempo de espera del servidor de impresión en el iframe.

Estoy buscando formas de reducir el uso de recursos y aumentar la velocidad de carga y también evitar el tiempo de espera.

Cualquier ayuda será muy apreciada ...


En este punto particular del tamaño de su aplicación, me centraría en dos mejoras específicas a su infraestructura y lógica de código.

  1. Desacople los procesos necesarios para servir activos de banner al usuario final a partir de los procesos necesarios para almacenar impresiones de anuncios.
  2. Implemente una infraestructura escalable horizontalmente para recibir solicitudes.

1. Desacoplamiento de banners de servicio desde el almacenamiento de impresiones

Al separar estas dos preocupaciones, podrá proporcionar un rendimiento más consistente para los clientes de su servicio ppc . Si aún no lo está, usar un CDN o descargar de otro modo la demanda de publicar las imágenes de sus servidores puede ayudar a mejorar considerablemente el tiempo de respuesta.

Otra área que le dará grandes ganancias es separar la porción del código de banner de los procesos que almacenan los datos de impresión en el disco. Hay varias maneras de hacerlo, pero una solución exitosa con la que he tenido experiencia es la utilización de ActiveMQ ( http://activemq.apache.org/ ) o un sistema de cola similar. Un sistema de colas ayudará a equilibrar la carga de almacenamiento de impresiones a lo largo del tiempo almacenando datos de impresiones en la memoria y enviando esos puntos de datos a un ritmo constante a procesos de consumidores (que también pueden ser empleados) que pueden almacenar esos datos en una base de datos u otro medio de almacenamiento. Esto permite que la carga de trabajo de almacenar las impresiones en el disco se separe del proceso de publicación de anuncios. También puede configurar múltiples procesos para consumir los trabajos en cola, lo que conduce a la segunda área de mejora.

2. Infraestructura escalable horizontalmente

La creación de una solución escalable horizontalmente significa básicamente que, en lugar de necesitar aumentar el tamaño y la potencia de un solo servidor, puede agregar servidores más pequeños que compartan de forma equitativa la carga de trabajo de las demandas del sistema. Esto tiene múltiples ventajas, una de las cuales es que es más fácil (y generalmente más económico) agregar algunos servidores pequeños a un grupo en lugar de actualizar un servidor grande para que sea más grande y más potente. También tenía la ventaja de ser más robusto en caso de que fallara un servidor.

En este caso, creo que una buena solución sería tener un servidor o proceso que actúe como un enrutador, que simplemente cargará las solicitudes de saldo enviándolas a diferentes servidores que están haciendo el procesamiento real de la solicitud. Hay muchos recursos buenos para construir guiones de enrutamiento de carga o balanceo de carga en PHP en Internet, pero básicamente recibirá solicitudes en un punto final y luego enviará esa solicitud a un servidor diferente para que realmente se cumpla. Si crea una lista dinámica de servidores que están listos para recibir solicitudes, puede aumentar fácilmente la cantidad de servidores que cumplen las solicitudes cuando comienza a ver un rendimiento inaceptable. Esto también le dará la ventaja de poder eliminar fácilmente un servidor de la lista si se cae, y luego cualquier tráfico simplemente se enrutaría a un servidor diferente que todavía estaba activo.

Si aún no lo ha hecho, sería bueno buscar en lighttpd ( http://www.lighttpd.net/ ) o nginx ( https://www.nginx.com/ ) como alternativas a Apache que están diseñadas para ser capaz de manejar grandes volúmenes de solicitudes con menos gastos generales. Estos serían especialmente adecuados para manejar las solicitudes en su servidor de enrutadores.

Una vez que haya configurado la escala horizontal para las solicitudes, sería bastante simple configurar la escala horizontal para los servidores de almacenamiento también. Puede hacerlo fácilmente modificando una ID por la cantidad de servidores en la agrupación para determinar dónde enviar la solicitud.

$serverNumber = $adID % $availableServers;

Resumen

Aunque definitivamente puede ver mejoras en el rendimiento mediante la optimización de los métodos de almacenamiento y el ajuste del servidor, en algún punto de una aplicación grande, es posible que desee agregar servidores adicionales para realizar el trabajo. Creo que con los pasos anteriores estarás en un muy buen lugar para escalar tu aplicación sin problemas a medida que crece en tamaño.


Es posible que pueda ahorrar tanto en rendimiento como en horas de desarrollo aprovechando su registro de acceso de Apache existente para que actúe como su rastreador de impresiones, y desactive completamente su código de lectura / escritura personalizado de base de datos / archivo plano.

Configure un nuevo host virtual Apache y apúntelo a un directorio webroot del sistema que será el único responsable de servir su script PHP de generación de anuncios. Dentro de esta configuración de host virtual, puede configurar un registro de acceso al sistema que es 100% exclusivo para publicar sus anuncios; Apache se encargará de agregar a este registro en cada visita (impresión) y rotar / archivar el registro según sea necesario. Puede señalar dónde desea almacenar el registro y qué tipo de datos del servidor / entorno / referencia / usuario-agente se almacenan en él.

Luego, a través de cron o un daemon, puede ejecutar cualquier analizador de registros de back-end que desee, recopilar estadísticas en una base de datos, calcular sus números, etc., sin combinar cualquiera de estos cambios más pesados ​​con las solicitudes web en vivo.

También encontré en la sugerencia de utilizar esta técnica con lighttpd en lugar de Apache para ampliar aún más los recursos de tu servidor.

Otras lecturas: