Despliegue de PHP opcache+implementación estilo symlink
deployment (3)
Razones y dos soluciones posibles descritas en el problema ZendOptimizerPlus . Lo resolvimos usando $realpath_root
en la configuración de nginx:
fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name;
fastcgi_param DOCUMENT_ROOT $realpath_root;
Estoy tratando de restablecer PHP Opcache después de una implementación de estilo de enlace simbólico. Hay opcache_reset.php
archivo opcache_reset.php
en mi proyecto que se ejecuta por wget
después de la sustitución del enlace simbólico de la raíz del documento:
<?php
clearstatcache(true);
opcache_reset();
A pesar de eso, los archivos antiguos todavía se utilizan. De acuerdo con la opcache_get_status()
de opcache_get_status()
, el número de manual_restarts
aumenta, last_restart_time
mantiene actualizado, pero las rutas de los archivos permanecen desactualizadas. Necesito llamar a opcache_reset.php
manualmente después de opcache_reset.php
un minuto después de la implementación para hacer las cosas bien.
La versión de PHP es 5.5.6, ZendOpcache es 7.0.3-dev. Configuración de Opcache:
opcache.blacklist_filename => no value
opcache.consistency_checks => 0
opcache.dups_fix => Off
opcache.enable => On
opcache.enable_cli => On
opcache.enable_file_override => Off
opcache.error_log => no value
opcache.fast_shutdown => 1
opcache.force_restart_timeout => 180
opcache.inherited_hack => On
opcache.interned_strings_buffer => 8
opcache.load_comments => 1
opcache.log_verbosity_level => 1
opcache.max_accelerated_files => 4000
opcache.max_file_size => 0
opcache.max_wasted_percentage => 5
opcache.memory_consumption => 128
opcache.optimization_level => 0xFFFFFFFF
opcache.preferred_memory_model => no value
opcache.protect_memory => 0
opcache.restrict_api => no value
opcache.revalidate_freq => 60
opcache.revalidate_path => Off
opcache.save_comments => 1
opcache.use_cwd => On
opcache.validate_timestamps => On
Si por alguna razón no puede usar fastcgi_param con $realpath_root
y usa la implementación del estilo de enlace simbólico, intente configurar opcache.revalidate_path = On
en su configuración php ini. No pude encontrar ninguna buena documentación que explique cómo funciona este directorio ini bajo el capó, pero funcionó después de que cambié los enlaces simbólicos. Espero que esto ayude a cualquiera.
También me enfrenté a ese problema y finalmente finalmente hago una solución.
$ curl -sO http://gordalina.github.io/cachetool/downloads/cachetool.phar
$ chmod +x cachetool.phar
Puede conectarse a un servidor fastcgi adivinado automáticamente (si /var/run/php5-fpm.sock es un archivo o 127.0.0.1:9000)
apc
apc:bin:dump Get a binary dump of files and user variables
apc:bin:load Load a binary dump into the APC file and user variables
apc:cache:clear Clears APC cache (user, system or all)
apc:cache:info Shows APC user & system cache information
apc:cache:info:file Shows APC file cache information
apc:key:delete Deletes an APC key
apc:key:exists Checks if an APC key exists
apc:key:fetch Shows the content of an APC key
apc:key:store Store an APC key with given value
apc:sma:info Show APC shared memory allocation information
opcache
opcache:configuration Get configuration information about the cache
opcache:reset Resets the contents of the opcode cache
opcache:status Show summary information about the opcode cache
opcache:status:scripts Show scripts in the opcode cache
Ejemplo:
[root@ip-172-31-5-244 ~]# php cachetool.phar opcache:status
+----------------------+---------------------------------+
| Name | Value |
+----------------------+---------------------------------+
| Enabled | Yes |
| Cache full | No |
| Restart pending | No |
| Restart in progress | No |
| Memory used | 42.71 MiB |
| Memory free | 85.29 MiB |
| Memory wasted (%) | 0 b (0%) |
| Strings buffer size | 8 MiB |
| Strings memory used | 5.31 MiB |
| Strings memory free | 2.69 MiB |
| Number of strings | 103847 |
+----------------------+---------------------------------+
| Cached scripts | 1261 |
| Cached keys | 2748 |
| Max cached keys | 7963 |
| Start time | Thu, 08 Feb 2018 02:28:56 +0000 |
| Last restart time | Thu, 08 Feb 2018 03:10:19 +0000 |
| Oom restarts | 0 |
| Hash restarts | 0 |
| Manual restarts | 1 |
| Hits | 47839 |
| Misses | 1269 |
| Blacklist misses (%) | 0 (0%) |
| Opcache hit rate | 97.415899649752 |
+----------------------+---------------------------------+
[root@ip-172-31-5-244 ~]#
[root@ip-172-31-5-244 ~]#
[root@ip-172-31-5-244 ~]# php cachetool.phar opcache:reset
[root@ip-172-31-5-244 ~]#
[root@ip-172-31-5-244 ~]#
[root@ip-172-31-5-244 ~]# php cachetool.phar opcache:status
+----------------------+---------------------------------+
| Name | Value |
+----------------------+---------------------------------+
| Enabled | Yes |
| Cache full | No |
| Restart pending | No |
| Restart in progress | No |
| Memory used | 10.43 MiB |
| Memory free | 117.57 MiB |
| Memory wasted (%) | 0 b (0%) |
| Strings buffer size | 8 MiB |
| Strings memory used | 545.69 KiB |
| Strings memory free | 7.47 MiB |
| Number of strings | 103847 |
+----------------------+---------------------------------+
| Cached scripts | 0 |
| Cached keys | 0 |
| Max cached keys | 7963 |
| Start time | Thu, 08 Feb 2018 02:28:56 +0000 |
| Last restart time | Thu, 08 Feb 2018 03:19:00 +0000 |
| Oom restarts | 0 |
| Hash restarts | 0 |
| Manual restarts | 2 |
| Hits | 0 |
| Misses | 2 |
| Blacklist misses (%) | 0 (0%) |
| Opcache hit rate | 0 |
+----------------------+---------------------------------+
Puede notar que la memoria, las claves de caché, los aciertos se convirtieron en 0 :-). Es muy útil. También lo intrigé con Ansible fácilmente.
Su aplicación para apcu y otros productos: consulte más http://gordalina.github.io/cachetool/