2012-04-23 12 views
5

Estoy usando PHP APC en servidores de producción de un servicio web con hits de 10M/día exitosamente durante mucho tiempo.¿PHP APC como almacén de objetos locales tiene algún límite además del tamaño de almacenamiento?

Estoy considerando descargar muchos más datos a la memoria caché local de APC.

En teoría, me parece que, dado que la llamada APC es principalmente un acceso de memoria local. No debería convertirse en un problema llamarlo 10.000 veces por segundo. Por lo que puedo decir, sus límites pueden estar en el tamaño de la memoria, pero mientras el servidor tenga CPU libre no debería tener problemas de rendimiento o corrupción a altas velocidades.

¿Hay algún límite del que no tenga conocimiento que pueda evitar que use el caché de objetos local de APC en muy alta velocidad en el servidor de aplicaciones (ubuntu)?

Actualización: Aparentemente de acuerdo con las respuestas a continuación, mi pregunta no estaba clara. No estoy buscando opciones de almacenamiento en caché alternativo (Memcache, Redis, etc.). Mi pregunta es si existe alguna preocupación o límite en el uso de APC local en tasas muy altas y concurrencia de lectura.

+0

No se puede acceder a la memoria caché APC de un servidor desde otro servidor si se encuentra en un entorno multiservidor ... APC no se puede compartir con/entre tareas de la CLI –

+0

sí. Lo sé. para esto, utilizaré memcached como caché de segundo nivel, de modo que cuando un nuevo servidor de aplicaciones se inicie, leerá los datos de Memcache y no de la base de datos. pero durante las operaciones regulares necesito los datos lo más cerca posible para que se dupliquen en los servidores de la aplicación. – Nir

+1

Me encanta esta pregunta y APC es una capa de almacenamiento en caché totalmente subutilizada. Me encantaría saber la respuesta a esto también. – nate

Respuesta

4

Personalmente soy un gran fan de usar memcached para este tipo de almacenamiento. Tiene varias ventajas:

  • Es un programa que se centra completamente en el almacenamiento, y el desarrollo de memcached siempre se centrará en eso. APC es principalmente un caché para el código, que simplemente ofrece cierto acceso al almacenamiento del usuario.
  • Cuando recarga o reinicia Apache (o el servidor web que use), la caché de APC se vacía. Cuando utiliza una solución independiente, como memcached, puede controlar cuándo se vacía el caché. Esto es realmente algo que fue muy importante en mi caso, ya que a veces tengo que hacer cambios en la configuración de Apache y realmente no quiero borrar el caché cuando lo hago, ya que crea un gran pico de CPU (cargando datos en el caché de nuevo)
  • Tiene la posibilidad de crear un caché distribuido, lo que lo hace más escalable. Cuando tiene que agregar un segundo servidor porque su sitio web se vuelve grande, no quiere dos cachés que almacenan en caché lo mismo. Memcached escala bien, mientras que la memoria caché de APC no.

hay muchas otras ventajas de usar memcached más de caché de usuario de APC, pero para mí estos eran los principales tres razones para no utilizar la memoria caché de usuario de APC. Utilizo APC, por supuesto, pero no el caché del usuario.

+0

Y una nota RE: @ Comentario de MarkBaker sobre la pregunta: memcached ** puede ** compartirse entre tareas de CLI, y es muy útil en entornos de servidores múltiples. –

+0

redis es incluso mejor porque múltiples servidores redis pueden replicar datos almacenados ... por lo que si pierde un servidor del clúster, los datos aún están disponibles en los demás .... además es rápido, rápido –

+0

Hola Tom, Uso memcached para parte de los datos. Para los datos específicos que deseo agregar, necesito algo mucho más rápido que Memcache. Planeo usar Memcache como buffer de segunda etapa para estos datos específicos, de modo que si no está en memcached de APC se buscará y si no está allí, se golpeará el db. La razón principal es que cuando se lanzan servidores de aplicaciones adicionales, no quiero que se golpee el db para estos datos específicos. – Nir

Cuestiones relacionadas