APC -> APCu / OPCache, Performance schlecht

Lesezeit: 4 Minuten

APC APCu OPCache Performance schlecht
Großer Junge

ich habe ein m3.xlarge EC2-Instanz, auf die ich aktualisiert habe PHP 5.5.11 heute.

Mit diesem Update wurde es überschrieben php55-pecl-apc mit php55-pecl-apcu.

Nach dem Lesen und Experimentieren ist mein Verständnis das APC wurde durch ersetzt OPCachemit Ausnahme eines Schlüsselwertspeichers, der mit zurückgebracht werden kann APCu.

Nachdem ich meine Konfiguration auf etwas angepasst habe, das vernünftig aussieht, ist die Verwendung von WordPress, während ich angemeldet bin, jetzt furchtbar langsam, mindestens 300-900 ms schlechter (das Frontend wird über Lack zwischengespeichert und funktioniert perfekt … aber wenn Sie den Admin verwenden, ist es wird absichtlich nicht zwischengespeichert und ist langsam wie die Sünde).

Während des Upgrades habe ich eine Reihe von Benchmarks mit einer kleinen Stichprobengröße für jeden Schritt durchgeführt. Es verschlechterte sich immer schlimmer, als ich weitermachte.

  • APC (vor dem Upgrade) -->
  • OPCache + kein APCu -->
  • OPCache + APCu + WP-Plugin für APCu

Im Moment hänge ich nur mit OPCache und ohne APCu herum.

  1. Wie erreiche ich die gleiche Leistung? Ich liebte die Admin-Oberfläche, ich liebte, wie schnell sie war. Ich verstehe ehrlich gesagt nicht, wie das überhaupt eine Verbesserung sein soll, es ist wirklich ziemlich deprimierend … es sei denn, es gibt da draußen eine Superbibliothek, die ich nicht kenne. Es ist sicherlich nicht das, was ich habe, oder vielleicht ist es nicht gut konfiguriert.
  2. Angenommen, die Antwort auf Nr. 1 lautet: „Sie haben es wie Bälle konfiguriert“, würden Sie sich das dann ansehen und prüfen, ob dies vernünftig ist?

Für mein Setup verwende ich das neueste WordPress, ein paar große Plugins, aber ich kann sie nicht entfernen, weil sie wichtig sind. Zum Glück übernimmt der Lack die meiste Arbeit. Ich habe 4 Kerne, 16 GB Speicher, ~ 10.000 Dateien im Stammverzeichnis meiner Website. Ich habe auch keine echten Hardcore-Apps oder irgendetwas anderes als WordPress, es ist ein ziemlich einfaches Setup. Ich denke, das war es für Sachen, die helfen könnten.

Konfig:

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

  • Sind Sie überhaupt sicher, dass OPCache tatsächlich geladen und aktiv ist? Erstellen Sie eine Datei testopcache.php mit <?php var_dump(opcache_get_status()); ?> drinnen und versuchen, darauf zuzugreifen, sollte es Ihnen sagen, ob OPCache funktioniert. Versuchen Sie auch zu erhöhen opcache.max_file_size zu 5M oder noch mehr.

    Benutzer2629998

    30. April 2014 um 14:46 Uhr

  • Ich habe es auf 10M erhöht. Es läuft definitiv, ich sehe eine riesige Müllhalde.

    – Großer Junge

    30. April 2014 um 15:57 Uhr

  • Können Sie Ihre aktuelle Installation sichern und versuchen, diese zu entfernen few large plugins und sehen, ob das etwas ändert?

    Benutzer2629998

    30. April 2014 um 16:59 Uhr

  • @Tallboy Ich muss sehen, wie APCu von der Person konfiguriert wurde, die es gepackt hat, finde für mich die Konfigurationszeile aus dem src rpm/pkg/whatever …

    – Joe Watkins

    4. Mai 2014 um 7:34 Uhr

APC APCu OPCache Performance schlecht
knrdk

Im Moment überprüfen Sie jede Datei bei jeder Änderungsanforderung, was auf einem Produktionssystem wahrscheinlich nicht das ist, was Sie wollen.

Normalerweise deaktiviere ich es einfach (denken Sie daran, den Webserver neu zu starten, nachdem Sie Änderungen vorgenommen haben):

opcache.validate_timestamps=0

Alternativ können Sie versuchen, die Frequenz auf etwas anderes als 0 einzustellen und aktiviert zu lassen:

opcache.validate_timestamps=1  
opcache.revalidate_freq=300

Dies sollte theoretisch nur alle 5 Minuten nach Änderungen suchen.

1646170147 852 APC APCu OPCache Performance schlecht
ach

Sie haben auch

opcache.consistency_checks=1

Was laut den Dokumenten sagt, wird die Leistung verlangsamen. Schalt das aus.

opcache.consistency_checks integer

Wenn nicht Null, überprüft OPcache die Cache-Prüfsumme alle N Anfragen, wobei N der Wert dieser Konfigurationsanweisung ist. Dies sollte nur beim Debuggen aktiviert werden, da es die Leistung beeinträchtigt.

Aus dem RFC, der für die Integration von OPCache in PHP verantwortlich war:

APC kann den Speicher alter ungültig gemachter Skripte zurückfordern. APC verwendet einen Speichermanager und kann Speicher zurückfordern, der einem Skript zugeordnet ist, das nicht mehr verwendet wird; Optimizer+ funktioniert anders und markiert solchen Speicher als „verschmutzt“, fordert ihn aber nie wirklich zurück. Sobald der Dirty-Prozentsatz über einen konfigurierbaren Schwellenwert steigt, startet sich Optimizer+ neu. Beachten Sie, dass dieses Verhalten sowohl Stabilitätsvor- als auch -nachteile hat.

Ich vermute, dass Sie den Schwellenwert erreichen, der den Neustart des Opcode-Cache auslöst.

Referenz: https://wiki.php.net/rfc/optimizerplus#advantages_of_apc_over_optimizer

905060cookie-checkAPC -> APCu / OPCache, Performance schlecht

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy