php - present - APC-> APCu/OPCache, rendimiento pobre
php71 opcache (3)
Desde el RFC que se encargó de integrar OPCache en PHP:
APC puede reclamar la memoria de los viejos scripts invalidados. APC utiliza un administrador de memoria y puede reclamar la memoria asociada con un script que ya no se usa; Optimizer + funciona de manera diferente y marca esa memoria como "sucia", pero en realidad nunca la recupera. Una vez que el porcentaje sucio sube por encima de un umbral configurable, Optimizer + se reinicia. Tenga en cuenta que este comportamiento tiene ventajas y desventajas de estabilidad.
Creo que estás alcanzando el umbral que activa el reinicio del caché del opcode.
Referencia: https://wiki.php.net/rfc/optimizerplus#advantages_of_apc_over_optimizer
Tengo una instancia de m3.xlarge
EC2 que actualicé a PHP 5.5.11
hoy.
Con esta actualización, php55-pecl-apc
con php55-pecl-apcu
.
Después de leer y experimentar, tengo entendido que APC
ha sido reemplazado con OPCache
, a excepción de una tienda de valores clave que se puede traer de vuelta con APCu
.
Después de ajustar mi configuración a algo que parece razonable, usar Wordpress mientras estoy conectado ahora es terriblemente lento, al menos 300-900ms peor (la interfaz se almacena en caché mediante barniz, y funciona perfectamente ... pero cuando se usa el administrador, deliberadamente no está en la memoria caché, y lento como el pecado).
Hice una serie de puntos de referencia a medida que actualicé, a través de un tamaño de muestra pequeño para cada paso. Se degradaba cada vez peor a medida que avanzaba.
- APC (antes de la actualización)
-->
- OPCache + no APCu
-->
- OPCache + APCu + WP Plugin para APCu
Ahora mismo estoy saliendo con OPCache, y sin APCu.
- ¿Cómo puedo lograr el mismo rendimiento? Me encantó la interfaz de administración, me encantaba lo rápido que era. Honestamente, no veo cómo esto es una mejora en absoluto, es bastante deprimente en realidad ... a menos que haya alguna súper biblioteca por ahí de la que no tenga conocimiento. Ciertamente, no es lo que yo he pensado, o tal vez no está bien configurado.
- Asumiendo que la respuesta al # 1 es ''lo configuraste como bolas'', ¿te importaría echar un vistazo a esto y ver si esto es razonable?
Para mi configuración estoy usando la última versión de WordPress, algunos complementos grandes pero no puedo quitarlos porque son importantes. Afortunadamente, el barniz se ocupa de la mayor parte del trabajo. Tengo 4 núcleos, 16GB de memoria, ~ 10k archivos en la raíz de mi sitio web. Tampoco tengo aplicaciones realmente duras ni nada que no sea wordpress, es una configuración bastante simple. Creo que es por cosas que podrían ayudar.
Config:
zend_extension=opcache.so
opcache.enable=1
opcache.enable_cli=0
opcache.memory_consumption=128
opcache.interned_strings_buffer=8
opcache.max_accelerated_files=10000
opcache.max_wasted_percentage=5
opcache.use_cwd=1
opcache.validate_timestamps=1
opcache.revalidate_freq=0
opcache.revalidate_path=0
opcache.save_comments=0
opcache.load_comments=0
opcache.fast_shutdown=1
opcache.enable_file_override=0
opcache.optimization_level=0xffffffff
opcache.inherited_hack=1
opcache.dups_fix=0
opcache.blacklist_filename=/etc/php-5.5.d/opcache*.blacklist
opcache.max_file_size=2M
opcache.consistency_checks=1
opcache.force_restart_timeout=180
opcache.error_log=/var/log/php-fpm/5.5/opcache.log
opcache.log_verbosity_level=1
opcache.preferred_memory_model=
opcache.protect_memory=0
En este momento está revisando cada archivo en cada solicitud de cambios, que probablemente no sea lo que desea en un sistema de producción.
Normalmente lo desactivo (recuerde reiniciar el servidor web después de hacer cambios):
opcache.validate_timestamps=0
Alternativamente, puede intentar configurar la frecuencia a algo distinto de 0 y mantenerlo habilitado:
opcache.validate_timestamps=1
opcache.revalidate_freq=300
En teoría, esto debería verificar los cambios cada 5 minutos.
Tu también tienes
opcache.consistency_checks=1
Que de acuerdo con los documentos dice ralentizará el rendimiento. Apaga eso.
opcache.consistency_checks integer
Si no es cero, OPcache verificará la suma de comprobación de caché que cada N solicita, donde N es el valor de esta directiva de configuración. Esto solo debe habilitarse durante la depuración, ya que perjudicará el rendimiento.