Es necesario que la opción de desactivación de estadísticas de xcache esté activada. Instalación de XCache, configuración de xCache, matices

Como sabes, PHP es un lenguaje interpretado, es decir. cada vez que se accede a un script, se compila el script. Si tiene 1 script, entonces no hay nada de qué preocuparse, ya que el tiempo de compilación no es largo. Pero en los CMS y marcos modernos, al mostrar una página, se utilizan entre 10 y 300 archivos php separados (en otras palabras, incluyen). Cuantas más inclusiones y más pesadas sean, más tardará el proceso de compilación.

Para resolver este problema, se nos ocurrió la idea de almacenar la versión compilada del script en la memoria. Hay módulos especiales para almacenar código compilado en la memoria. Se llaman aceleradores.

Los más famosos: eAccelerator, APC, XCache. Cada uno tiene sus pros y sus contras. Utilizo XCache como el más rápido y confiable. Aunque cada uno tiene su propia opinión sobre la fiabilidad.

Algunos aceleradores le permiten almacenar no solo scripts en la memoria, sino también resultados de cálculos. Por ejemplo, muestras de una base de datos. En la práctica, esto se parece a almacenar un caché en Memcache. Pero yo uso Memcache; así es como sucedió históricamente.

Administrador de XCache

XCache tiene un pequeño panel de administración para mostrar estadísticas y restablecer el caché. Generalmente se encuentra aquí /usr/local/share/examples/xcache/admin/. Por lo tanto, debe mover esta carpeta a algún lugar de la raíz del sitio o a su panel de administración para poder verla desde el navegador. Puedes descargar el panel de administración.

Esto es lo que me parece

La primera tabla muestra estadísticas generales. Contiene 2 líneas, ya que tengo un procesador de 2 núcleos y XCache distribuye el caché entre ambos núcleos. En total tengo asignados 512M.

El panel de administración puede mostrar el error Error fatal: xcache_count(): xcache.admin.user y xcache.admin.pass
Esto significa que tiene la autorización habilitada en la configuración de xCache.
La forma más sencilla es apagarlo. Estoy solo en mi servidor y no necesito establecer contraseñas dentro del servidor.
La autorización está deshabilitada en la configuración xcache.admin.enable_auth = Off

La configuración de xCache generalmente se encuentra en /etc/php5/conf.d/xcache.ini
Después de editar la configuración, debes reiniciar Apache.

Estadísticas de xCache

Volvamos al panel de administración (vea la imagen de arriba).

Tragamonedas- número de ranuras de caché. Esta es mi comprensión de en cuántas partes se divide la memoria asignada. En mi caso es 8000. Cuanto mayor sea este valor, más rápida será la búsqueda, pero se requerirá más memoria.

Tamaño- tamaño de memoria para XCache

Aprovechar- cuánta memoria queda. Aparentemente no me queda nada. Los 512 Mb están llenos

Claro- botón de reinicio de caché

Golpes- cuántos accesos a archivos se realizaron

falla- cuántas llamadas a archivos se realizaron, pero estos archivos no estaban en la memoria. Este es un proceso normal. Los archivos cambian: salen volando del caché. Pero en mi caso, todos los archivos simplemente no caben en la memoria, por lo que no están allí y, en consecuencia, se producen errores.

Zuecos- Así es como entiendo cuántas veces fuimos al caché para buscar algunos archivos, pero en ese momento estos archivos todavía se estaban compilando, es decir. hubo un bloqueo.

OOM- cuántas veces los archivos no se incluyeron en el caché por falta de memoria.

En caché- número de archivos en el caché. En total tengo 6400 archivos.

configuración de xcaché

Algunas palabras sobre cuánta memoria se debe asignar. Inicialmente, asigné 128 Mb, pero esta memoria se llenó en 10 minutos. Por lo tanto, asigné 512 Mb y este volumen ya se llenó en 1 hora. Parecería que podrías asignar 1 Gb y definitivamente todo encajaría. Pero solo hay 4 GB de memoria y es mejor asignarla para MySQL (más sobre eso). Además, los archivos que no se almacenaron en caché en una hora rara vez se utilizan como scripts. Simplemente hay sitios que son visitados por entre 10 y 100 personas al día y puedes prescindir del almacenamiento en caché allí. Se trata de la llamada “cola larga”, que rara vez se utiliza, pero que ocupa mucho espacio. En mi caso es el 3% (Fallidos/Aciertos).

¿Qué más no se debe olvidar? Digamos que cambiaste algún código en un proyecto grande. Se ha liberado espacio de memoria y se pueden escribir archivos de proyectos de bajo volumen en este espacio vacío. En consecuencia, los archivos de un proyecto grande no se almacenarán en caché. En pocas palabras, XCache NO sabe cómo rastrear qué archivos se pueden eliminar del caché y los archivos solicitados con más frecuencia se pueden colocar en su lugar (este es el llamado caché "caliente"). Por lo tanto, debe restablecer el caché manualmente a través del panel de administración.

La tabla inferior muestra qué archivos se almacenan en caché y con qué eficacia.

Golpes- número de llamadas a este script en memoria. Cuanto más grande, mejor. Si para algunos archivos este valor es inferior a 10 durante mucho tiempo, entonces este archivo rara vez se usa y solo ocupa espacio en la memoria.

Tamaño- el tamaño de este archivo en la memoria. Aquí está la parte más interesante. Resulta que el archivo compilado ocupa 10 veces más espacio en la memoria que en el disco. ¡DIOS MÍO!

TamañoSrc- tamaño del archivo en el disco

Acceso- hace cuánto tiempo se accedió a este archivo

Crear- cuánto tiempo ha estado este archivo en el caché

mi configuración
xcache.tamaño = 512M
xcache.count = 2
xcache.ranuras = 8K
xcache.ttl = 0
xcache.gc_interval = 0
xcache.var_size = 0M
xcache.var_count = 2
xcache.var_slots = 8K
xcache.var_ttl = 0
xcache.var_maxttl = 0
xcache.test = Desactivado
xcache.cacher = activado
xcache.stat = Activado

Como puede ver, desactivé el uso de XCache para almacenar en caché los resultados de los cálculos (xcache.var_size = 0M). Para esto tengo Memcache.

Bueno, los resultados reales: aceleración de 2 a 3 veces. Si antes la página se generaba en 0,3 segundos (incluido Memcache), ahora tarda 0,1 segundos. Este es un ejemplo de un proyecto en CMS LiveStreet.

El almacenamiento en caché de código de bytes mediante aceleradores PHP aumenta significativamente el rendimiento del servidor y la respuesta a las solicitudes de los clientes. Existen varios aceleradores PHP populares, entre los cuales nuestra elección recayó en XCache.

La mayoría de la gente sabe que PHP funciona según el principio de un intérprete de traducción, es decir. Primero, se analiza el script, luego su contenido se traduce a código de bytes (http://ru.wikipedia.org/wiki/Bytecode), y solo entonces se interpreta y se produce el resultado.

aceleradores PHP Una vez creado, el código de bytes se almacena en caché durante un tiempo determinado para su posterior reutilización si la cripta original no ha estado sujeta a cambios. Por lo tanto, PHP se deshace de 2 etapas de trabajo: analizar el script y traducirlo a código de bytes; si hay un código de bytes PHP almacenado en caché, todo lo que queda es interpretarlo y devolver el resultado. Y el hecho de que el código de bytes esté almacenado/almacenado en caché memoria de acceso aleatorio, proporciona un aumento de rendimiento bastante notable.

Hay varios aceleradores más populares para PHP, APC ( Última versión beta: 3.1.13 (03/09/2012)) y eAccelerator ( Última versión estable: 0.9.6.1 (2010-05-31)), que se consideran potencialmente muertos, por lo que se desaconseja su uso. Por ejemplo, para eAccelerator, aunque se declaró soporte para PHP 5.4, se notaron repetidos fallos al usarlo y se expresaron, al parecer, en el error HTTP 500 en algunas páginas web que funcionaron perfectamente después de deshabilitar eAccelerator.

Hoy en día, XCache es el candidato ideal que admite todas las versiones de PHP, incluido PHP 5.6.

Lista de aceleradores PHP - Wikipedia, la enciclopedia libre: http://en.wikipedia.org/wiki/List_of_PHP_accelerators

Instalación y configuración inicial de XCache en Linux

Puede instalar XCache en Linux desde los siguientes paquetes:

$ yum instalar php-xcache xcache-admin $ apt-get instalar php5-xcache

xcache.ttl y xcache.var_maxttl predeterminado = 0, es decir La vida útil del caché es ilimitada, lo que en nuestra opinión no es bueno, en mi humilde opinión, los scripts ya se pueden eliminar y el caché se congelará, ocupando la RAM que tanto necesita. Por lo tanto, estableceremos la vida útil de la caché en 24 horas (86400 segundos), con un intervalo de recolección de basura "*gc_interval" de 3600 segundos. (una hora):

$ vi / etc/ php.d/ xcache.ini [ xcache-common] extensión = xcache.so [ xcache.admin] xcache.admin.enable_auth = Desactivado xcache.admin.user = "admin" xcache.admin.pass = [ xcache] xcache.shm_scheme = "mmap" xcache.size = 60M xcache.count = 1 xcache.slots = 8K xcache.ttl = 86400 xcache.gc_interval = 3600 xcache.var_size = 4M xcache.var_count = 1 xcache.var_slots = 8K xcache .var_ttl = 0 xcache.var_maxttl = 86400 xcache.var_gc_interval = 3600 xcache.var_namespace_mode = 0 xcache.var_namespace = "" xcache.readonly_protection = Desactivado xcache.mmap_path = "/tmp/xcache" xcache.coredump_directory = "" xcache.coredump_type = 0 xcache.disable_on_crash = Desactivado xcache.experimental = Desactivado xcache.cacher = Activado xcache.stat = Activado xcache.optimizer = Desactivado [ xcache.coverager] xcache.coverager = Desactivado xcache.coverager_autostart = Activado xcache.covergedump_directory = "" $ service httpd Reanudar

Puede comprobar si XCache se ha instalado correctamente utilizando un script php, cuyos resultados deben contener líneas con los parámetros de configuración de XCache:

Detalles sobre los ajustes de configuración aquí: http://xcache.lighttpd.net/wiki/XcacheIni#INIsettingsforXCache

Instalación del panel de administración de XCache

Panel de administración de XCacheútil para etapa inicial, cuando no estaría de más averiguar la eficiencia del uso del caché y si hay suficiente RAM asignada para ello ( memoria de acceso aleatorio), y luego el panel de administración se puede eliminar durante muchos años.

El panel de administración de XCache es un conjunto simple de scripts PHP, y si se instaló el paquete xcache-admin, estos mismos scripts del panel administrativo de PHP estarán disponibles en /usr/share/xcache, que se pueden copiar al directorio web que need (cp - r /usr/share/xcache /var/www/html/), o es mejor simplemente crear un alias para el host virtual que necesitamos:

< virtualhost ...>... Alias ​​​​/xcacadmin "/usr/share/xcache/"< Directory "/usr/share/xcache/" >Opciones Índices Vistas múltiples SeguirEnlaces simbólicos PermitirAnular todo Ordenar permitir, denegar Permitir de todos

Ahora creemos un hash MD5 de la contraseña y editemos nuestro xcache.ini ( o php.ini) b y reinicie el servidor:

$ echo -n "contraseña secreta" | md5sum - $ vi / etc/ php.d/ xcache.ini [ xcache.admin] xcache.admin.enable_auth = En xcache.admin.user = "admin" xcache.admin.pass = "3cb1cc80547422c9ef667953f00e9a17"$ /etc/init.d/httpd reiniciar

El panel de administración de XCache ahora debería estar disponible en http://my-host.com/xcacadmin. Pero en mi caso, la autorización no tuvo éxito y el Panel de administración de XCache repetía constantemente "Error de autenticación".

Según algunos informes (#339 (xache3.1.0 La ventana emergente repetida requiere autenticación) – XCache), el problema se debe a que HTTP_AUTHORIZATION no llega al backend. .htaccess parece ayudar a alguien con la línea “SetEnvIf Authorization .+ HTTP_AUTHORIZATION=$0”, pero se decidió “olvidar” todos estos problemas y deshabilitar completamente “xcache.admin.enable_auth = Off” esta autorización XCache no válida y usarla directamente del mismo .htaccess:

AuthUserFile "/path/to/.htpasswd" AuthName "Sólo administrador" AuthType Básico requiere usuario válido Satisfacer todos los #Permitir pedidos, denegar #Permitir desde xxx. xxx. xxx. xxx

¡ATENCIÓN! Esto significa que las estadísticas del panel de administrador, como el propio almacenamiento en caché del código de bytes, no son globales, sino que se aplican exclusivamente a cada host virtual (dominio) por separado.

Si el panel de administración no está disponible en los paquetes, entonces se puede "extraer" del archivo del código fuente (directorio httpd); para obtener más detalles, siga los enlaces:

  • InstalarAdministración - XCache
    • http://xcache.lighttpd.net/wiki/InstallAdministration
    • http://xcache.lighttpd.net/wiki/GettingSource

XCache elimina el caché cada 10 minutos

Si durante la vida útil del caché xcache.ttl, el número de aciertos en las estadísticas de uso del código de bytes almacenado en caché no aumenta y el tamaño de la RAM disponible (libre, disponible) no disminuye, o estos indicadores se modifican regularmente (cada 5-10 minutos) se restablecen a cero. Esto significa que es necesario hacer algo con la configuración.

La caché de XCache se restablece después de cada reinicio del servidor (recarga, reinicio ordenado o reinicio). Algunas personas, en lugar de ajustar y configurar prudentemente el servidor, simplemente dejan las configuraciones predeterminadas y luchan contra las pérdidas de memoria habituales y las caídas del servidor con el comando apachectl elegante ejecutado desde cron. Por lo tanto, primero debe verificar las tareas cron en busca de comandos que reinicien el servidor web.

Si no hay nada sospechoso en la corona, entonces debe profundizar en la configuración del servidor, especialmente si los scripts, también conocidos como FastCGI, se ejecutan en él:

$ vi / etc/ httpd/ conf.d/ fcgid.conf # FcgidProcessLifeTime 3600 FcgidProcessLifeTime 0 # predeterminado: FcgidIdleTimeout 300 FcgidIdleTimeout 86400 # Valor predeterminado: FcgidMaxRequestsPerProcess 0 #debe<= PHP_FCGI_MAX_REQUESTS FcgidMaxRequestsPerProcess 0 ... DefaultInitEnv PHP_FCGI_CHILDREN 1

Lo anterior es una configuración funcional, donde la vida útil y el número máximo de solicitudes para los procesos Fcgid no se verifican (es decir, = 0), con la excepción de verificar los procesos en espera, es decir, si el proceso que espera una solicitud no recibe una dentro de FcgidIdleTimeout ( 24 horas), se eliminará y XCache se restablecerá en consecuencia.

El problema de vaciar periódicamente el caché surgió cuando algunos usuarios optaron por almacenar sesiones usando XCache, y dado que los procesos Fcgid con configuraciones predeterminadas se eliminaban regularmente junto con el caché de XCache, los usuarios nuevamente tenían que autenticarse una y otra vez.

Lista de. Versiones de XCache: http://xcache.lighttpd.net/wiki/ReleaseArchive

AdMin BagoSeeker es un ardiente luchador por el funcionamiento libre de errores de cualquier mecanismo y organismo en todo el universo y, por lo tanto, está en una eterna búsqueda de todo tipo de errores, y quien busca, como sabemos, siempre encuentra. Cuando algo o alguien no puede curarse, con las palabras "Estoy en el infierno y ustedes son todos demonios", se da un atracón de bebida, y al salir de él nuevamente comienza a tratar a los incurables.

xCache es un programa de una serie de programas que almacenan en caché el código de bytes PHP para optimizar y acelerar la ejecución del script. Como, por ejemplo, eAccelerator o PHP-APC.

Este artículo cubrirá la configuración básica. Y luego podrás modificar los parámetros según tus propios deseos.

No tiene sentido retrasar mucho la instalación: todo se hace de serie.

Aptitud instalar php5-xcache

Configuración básica de caché

La primera prioridad será indicar las configuraciones básicas para el trabajo. Abre el archivo en tu editor favorito. . Todos los parámetros se recopilan en grupos. Por el momento necesitamos un grupo

xcache.tamaño = 32M

Esta directiva especifica la cantidad total de memoria para el caché. El valor predeterminado es 16 megabytes.

xcache.count = 1

Indicado por el número de procesadores (núcleos). Dos núcleos: configurados en 2. Y así sucesivamente. O dos procesadores de un solo núcleo.

xcache.ttl = 0

Vida útil de la caché. A veces es posible que necesites borrar el caché después de un cierto período de tiempo. El valor se indica en segundos.

Veamos los parámetros necesarios para almacenar en caché las variables. En determinadas condiciones, esto también puede resultar útil.

xcache.var_size = 8M

La cantidad total de memoria asignada a la caché de variables. Por defecto 0 - deshabilitado.

xcache.var_count = 1

Esta variable es similar a xcache.count.

xcache.var_ttl = 0

Aquí también podemos hacer una analogía con la variable xcache.ttl: establece la vida útil de la caché de variables.

xcache.var_maxttl = 0

Esta variable especifica la vida útil máxima de la caché.

Optimizador de caché X

A veces es posible que necesites habilitar el optimizador integrado de xCache. Para hacer esto, la siguiente directiva debe ser transferida del estado apagado en un estado en.

Xcache.optimizer = activado

Panel de administración de xCache

xCache viene con un panel de control que le permite ver estadísticas. Tengo una combinación de nginx+php-fpm, el ejemplo se escribirá teniendo esto en cuenta.

En primer lugar, configuramos nginx. Aquí deberá utilizar un alias para la ubicación.

Ubicación /x/ ( alias /usr/share/xcache/admin/; ubicación ~ .php$ ( fastcgi_index index.php; fastcgi_pass unix:/run/php-fpm.sock; incluir fastcgi_params; fastcgi_param PHP_ADMIN_VALUE "open_basedir =/usr/share/xcache/admin/:/var/php-temp-dir/"; fastcgi_param SCRIPT_FILENAME $request_filename; } } !}

Registramos la configuración para cualquier host virtual y reiniciamos nginx: recarga de servicio nginx. A continuación, abra la página en el navegador. http:// ejemplo.com/x/mkcontraseña.php. Reemplace Ejemplo.com con la dirección de su sitio web para el cual creó el alias.

Con este script, debe crear un hash md5 de la contraseña, que se utilizará para la autenticación en el panel de administración de xCache. Basta con especificar la contraseña, hacer clic en el botón "Enviar solicitud" y copiar el resultado.

Después de todos estos pasos, abra el archivo. /etc/php5/mods-disponibles/xcache.ini, en grupo editar los parámetros necesarios.

xcache.admin.user = "nombre de usuario"

Especifique el nombre del usuario que tendrá acceso al panel de administración.

xcache.admin.pass = "..."

Aquí debe especificar el hash md5 de la contraseña del usuario entre comillas.

Guarde el archivo editado y reinicie Apache, php-cgi o php-fpm.

Ahora el administrador de xcache debería estar disponible en http://example.com/x/. Intente iniciar sesión y ver estadísticas.

Para acelerar la ejecución de los scripts PHP, existen los llamados aceleradores. Su esencia es que una vez que se llama el script PHP, se compila y va al caché del acelerador. Después de lo cual, cuando se accede nuevamente al script, se devuelve en forma compilada. Lo que afecta en gran medida la carga en el servidor, ya que ahora ya no es necesario volver a compilar el script cada vez.

xcaché- un muy buen acelerador PHP, en mi opinión, que aumenta varias veces la velocidad de ejecución de los scripts PHP.

El uso de un acelerador reduce varias veces el tiempo de generación de páginas y también reduce la carga en el procesador del servidor. Entonces, después de configurar Xcache en el servidor, la cantidad de tiempo de procesador utilizado disminuyó casi a la mitad. Y como uso un servidor virtual para alojar mis sitios, donde pago solo por el uso de los recursos, usar un acelerador PHP reduce el costo total de alquilar un servidor.

Entonces, comencemos a instalar el acelerador de código PHP en el servidor: Xcache.

Estoy ejecutando Ubuntu 10.04 en el servidor, pero los más nuevos, como el recientemente lanzado Ubuntu LTS 12.04 14.04 con soporte a largo plazo, tendrán el mismo aspecto. Todo funciona igual en Debian 7.

Instalar:

Sudo apt-get install php5-xcache Se instalará la última versión estable, por lo que no es necesario compilar nada.

Después de la instalación, abra el archivo de configuración en /etc/php5/conf.d/xcache.ini

Para mí se ve así:

Xcache.tamaño = 128M

xcache.count = 14

xcache.ranuras = 8K

xcache.ttl = 36000

xcache.gc_interval = 36000

xcache.var_size = 8M

xcache.var_count = 14

xcache.var_slots = 8K

xcache.var_ttl = 36000

xcache.var_maxttl = 604800

xcache.cacher = activado

xcache.stat = Activado

Parámetros principales:

xcache.tamaño— es responsable de la cantidad de memoria para almacenar el caché. Si el valor es demasiado pequeño, el efecto de almacenamiento en caché no funcionará realmente.

xcache.count- el número de bloques en los que se dividirá el caché. Se recomienda configurarlo según la cantidad de núcleos del procesador.

xcache.slots— Número de ranuras de caché, cuantas más ranuras, más rápida será la velocidad de búsqueda en la caché. Pero el consumo de memoria también aumenta. Se recomienda dejar el valor predeterminado: 8K

xcache.ttl-Vida útil del objeto almacenado en caché en segundos. Si no se ha accedido a un objeto durante un tiempo específico, el objeto se marca como no en uso y posteriormente el recolector de basura lo elimina de la memoria caché.

xcache.gc_interval- Intervalo de inicio del recolector de basura en segundos. Especifica el período de tiempo después del cual se ejecutará el recolector de basura. Una vez iniciado, busca entradas caducadas (xcache.ttl) y las elimina del caché.

Los dos últimos parámetros (xcache.ttl y xcache.gc_interval) son muy importantes al configurar Xcache, pero en muchos sitios los valores de estos parámetros se establecen en 0, respectivamente, no se elimina nada del caché y cuando está completamente completo, los nuevos scripts ya no entran en él. Es decir, si aloja un sitio nuevo en el servidor, sus scripts ya no irán al caché, ya que está completamente lleno de scripts del sitio anterior.

Los parámetros que comienzan con xcache.var_ son responsables de almacenar en caché los resultados de los cálculos. Y sus parámetros son similares.

Después de guardar la configuración, debe reiniciar el servidor web.

Sudo /etc/init.d/apache2 reiniciar

Ver estadísticas de Xcache

Xcache tiene su propio panel de administración, que le permite ver el estado actual y borrar el caché. Para que funcione, debe copiar la carpeta de administración de /usr/local/share/examples/xcache/admin/ al directorio de su sitio. (Ubuntu)

En Debian 7, este directorio se encuentra en la ruta /usr/share/xcache

Pero antes de eso, debes establecer una contraseña en el archivo de configuración. Los parámetros son responsables de esto.

Xcache.admin.enable_auth

xcache.admin.user= "usuario"

xcache.admin.pass= "contraseña"

La contraseña debe especificarse como md5hash para mayor confiabilidad.

Puedes obtener md5hash haciendo

Php echo md5("contraseña"); ?> o puedes obtener el hash, por ejemplo, en el sitio web http://mainspy.ru/shifrovanie_md5

Ranuras: número de ranuras de caché; cuantas más ranuras, más rápida será la velocidad de búsqueda en la caché. Pero el consumo de memoria también aumenta. Se recomienda dejar el valor predeterminado: 8K

Tamaño- tamaño de memoria para Xcache.

Aprovechar- cuánta memoria queda.

Claro- restablecer caché.

Golpes- cuántos accesos a archivos se realizaron

falla- cuántas llamadas a archivos se realizaron, pero estos archivos no estaban en la memoria.

Zuecos- archivos bloqueados temporalmente en el caché.

OOM- La cantidad de archivos que no pudieron ingresar al caché debido a falta de memoria.

En caché- El número total de archivos en el caché.

La tabla inferior muestra qué archivos se almacenan en caché y con qué eficacia.

Golpes- número de llamadas a este script en memoria. Cuanto más grande, mejor. Si para algunos archivos este valor es inferior a 10 durante mucho tiempo, entonces este archivo rara vez se usa y solo ocupa espacio en la memoria.

Tamaño- el tamaño de este archivo en la memoria. Aquí está la parte más interesante. Resulta que el archivo compilado ocupa 10 veces más espacio en la memoria que en el disco. ¡DIOS MÍO!

TamañoSrc- tamaño del archivo en el disco

Acceso- hace cuánto tiempo se accedió a este archivo

Crear- cuánto tiempo ha estado este archivo en el caché

Compartir