Heim  >  Artikel  >  Backend-Entwicklung  >  Über PHP-Beschleunigung eAccelerator, Xcache, APC und Zend Optimizer

Über PHP-Beschleunigung eAccelerator, Xcache, APC und Zend Optimizer

WBOY
WBOYOriginal
2016-08-08 09:30:551085Durchsuche

Ich hatte vorher nur auf Zend Optimizer geachtet, weil Gao Fattys Buch es so lehrte, aber als ich auf eine Interviewfrage von einer seltsamen Firma stieß, die fragte, wie viele PHP-Beschleuniger/Caches Sie kennen, war ich fassungslos, weil ich... Ich wusste, dass PHP5.2.x nur Zend Optimizer verwendet hat und verschlüsselte PHP-Programme nur unter Zend Optimizer laufen können. Allerdings kann Zend Optimizer php5.3.x oder höher nicht unterstützen, geschweige denn eAccelerator, Xcache und APC. Der Zend Guard Loader kann PHP5.3.x oder höher und die neueste Version von PHP5.5.x unterstützen. Auf der offiziellen Website heißt es, dass Zend Guard integriert ist, sodass PHPer dem Beschleuniger keine Aufmerksamkeit schenken sollte. Nachdem ich auf ein solches Problem gestoßen bin, habe ich Dinge aus dem Internet zusammengefasst. Internetnutzer können es einfach lesen und müssen es nicht testen.

Welches soll installiert werden? Welche Auswirkungen wird es auf die Leistung haben? Nehmen Sie sich Zeit, es auszuprobieren.

Von woanders aus gesehen.

Wenn die Programmumgebung Zend Optimizer nicht erfordert, wird pecl-APC bevorzugt (es ist nicht mit Zend Optimizer kompatibel).
Zusammenfassung:
1. pecl-APC ist die erste Wahl für PHP-Pufferung (Beschleunigung) mit hervorragender Kompatibilität und Leistung.
2. Wenn Ihre PHP-Umgebung Zend Optimizer erfordert, installieren Sie eAccelerator und stellen Sie die Komprimierungsstufe von Zend Optimizer auf 0 ein.

Zend Optimizer ist ein Code-Optimierungsmodul, das PHP-Code optimieren kann. Das Prinzip der Implementierung besteht darin, den vom Laufzeit-Compiler (Run-Time-Compiler) generierten Code zu optimieren, bevor er endgültig ausgeführt wird. Die Codeleistung kann um 40 bis 100 % verbessert werden. Aus dieser Sicht sollte es keine starke Caching-Funktion geben. Ich habe den Quellcode nicht gelesen und weiß daher nicht, ob es einen Cache gibt Qualität ist.
eAccelerator ist ein Modul, das kompilierten PHP-Code im gemeinsamen Speicher zwischenspeichert. Durch den Zugriff auf den gemeinsam genutzten Speicher kann der kompilierte Code abgerufen und direkt ausgeführt werden, um die Effizienz zu verbessern. Dadurch wird die Ausführungseffizienz von PHP erheblich verbessert. Gleichzeitig kann eAccelerator auch Daten in Dateien zwischenspeichern. Da es sich bei diesem Teil um einen Vorgang für Dateien handelt, sind die Prinzipien und die Leistung meiner Meinung nach bei den meisten Datei-Caches ähnlich.
APC ähnelt im Prinzip eAccelerator, daher gibt es keinen großen Unterschied. Ohne detaillierte Tests durch Änderung der Parameter sind die Vor- und Nachteile der beiden nicht erkennbar. Wählen Sie also einfach eine aus.

Vergleich von drei kostenlosen PHP-Beschleunigern: APC, eAccelerator und XCache

1. Einführung in den PHP-Beschleuniger

PHP Accelerator ist ein Programm, das PHP-Opcodes zwischenspeichert, um die Effizienz der PHP-Ausführung zu verbessern, sodass PHP später bei der Ausführung nicht analysiert und konvertiert werden muss, was die Geschwindigkeit erheblich verbessert.

Der Anforderungs- und Antwortausführungsprozess mit mod_php in Apache:

1. Apache empfängt die Anfrage.
2. Apache leitet die Anfrage an mod_php weiter.
3. mod_php findet die Festplattendatei und lädt sie in den Speicher.
4. mod_php kompiliert den Quellcode in einen Opcode-Baum.
5. mod_php führt den Opcode-Baum aus.

Der PHP-Beschleuniger entspricht dem vierten Schritt. Sein Zweck besteht darin, zu verhindern, dass PHP bei jeder Anfrage wiederholt PHP-Code kompiliert, da auf stark frequentierten Websites häufig viele Kompilierungen nicht so schnell ausgeführt werden. Hier gibt es einen Engpass, der darin besteht, dass sich die wiederholte Kompilierung von PHP sowohl auf die Geschwindigkeit als auch auf die Serverlast auswirkt. Um dieses Problem zu lösen, wurde der PHP-Beschleuniger geboren.

2. Installation und Konfiguration des PHP-Beschleunigers

1. APC installieren und konfigurieren

Der vollständige Name von APC lautet „Optional PHP Cache“. Es scheint, dass Facebook es verwendet 🎜>$wget http ://pecl.php.net/get/APC-3.0.19.tgz
$tar xvzf APC-3.0.19.tgz
$cd APC-3.0.19/APC-3.0 .19
$/usr/local/php/bin/phpize
$./configure –enable-apc –enable-apc-mmap –with-php-config=/usr/local/php/bin/php -config
$make
$sudo make install

Als nächstes konfigurieren wir APC. Da sich mein PECL-Erweiterungspfad geändert hat, muss ich die kompilierte Datei verschieben:

$sudo mv /usr/local/php/lib/php/extensions/no-debug -non-zts -20060613/apc.so /usr/local/php/lib/php/extensions/PECL

Dann bearbeiten wir die php.ini-Datei zur Konfiguration. Bitte fügen Sie den folgenden Code zu php.ini hinzu:

extension_dir = "/usr/local/php/lib/php/extensions/PECL"
extension = apc.so
; APC
apc.enabled = 1
apc.shm_segments = 1
apc.shm_size = 64
apc.optimization = 1
apc.num_files_hint = 0
apc.ttl = 0
apc.gc_ttl = 3600
apc.cache_by_default = on

Auf diese Weise wird der Neustart von Apache in den phpinfo()-Informationen angezeigt.

2. Installieren und konfigurieren Sie eAccelerator

Der Vorgänger von eAccelerator ist eigentlich Truck-MMcache. Da die Person, die Truk-MMcache entwickelt hat, von Zend rekrutiert wurde, hat die Person, die eAccelerator entwickelt hat, einige Funktionen von TRUK-MMCache geerbt und den eAccelerator-Beschleuniger entworfen. Installieren Sie wie folgt:
$wget http://jaist.dl.sourceforge.net/sourceforge/eaccelerator/eaccelerator-0.9.5.tar.bz2
$tar -jxf eaccelerator-0.9.5.tar.bz2
$cd eaccelerator-0.9.5
$/usr/local/php/bin/phpize
$./configure –enable-eaccelerator=shared –with-php-config=/usr/local/php / bin/php-config
$make
$sudo make install
$sudo mv /usr/local/php/lib/php/extensions/no-debug-non-zts-20060613/eaccelerator.so / usr/local/php/lib/php/extensions/PECL

Fügen Sie den folgenden Code zur php.ini-Datei hinzu
extension = eaccelerator.so
; eAccelerator
eaccelerator.shm_size = "16"
eaccelerator.cache_dir = "/tmp/eaccelerator"
eaccelerator.enable = "1"
eaccelerator.optimizer = "1"
eaccelerator.check_mtime = "1"
eaccelerator.debug = "0"
eaccelerator.filter = ""
eaccelerator.shm_max = "0"
eaccelerator.shm_ttl = "0"
eaccelerator.prune_period = "0"
eaccelerator.shm_only = "0"
eaccelerator.compress = "1"
eaccelerator.compress_level = "9"

Cache-Verzeichnis erstellen und Apache neu starten

$sudo mkdir /tmp/eaccelerator
$sudo chmod 777 /tmp/eaccelerator
$sudo /usr/local/apache/apachectl restart

Überprüfen Sie, ob die Installation in phpinfo() erfolgreich war.

3. Installieren und konfigurieren Sie XCache

XCache ist etwas, das von Chinesen entwickelt wurde. Selbst als Neuling bin ich stolz darauf. Darüber hinaus leistet XCache gute Arbeit. Lass es uns jetzt probieren!

$wget http://xcache.lighttpd.net/pub/Releases/1.2.2/xcache-1.2.2.tar.gz
$tar xvzf xcache-1.2.2.tar.gz
$cd xcache-1.2.2
$/usr/local/php/bin/phpize
$./configure –enable-xcache –enable-xcache-coverager –with-php-config=/usr/local/ php/php-config
$make
$sudo make install
$sudo mv /usr/local/php/lib/php/extensions/no-debug-non-zts-20060613/xcache.so / usr/local/php/lib/php/extensions/PECL

Konfigurationsinformationen in php.ini hinzufügen:

extension = xcache.so
; "
;
xcache.size = 24M
xcache.shm_scheme = "mmap"
xcache.count = 2
xcache.slots = 8k
xcache.ttl = 0
xcache.gc_interval = 0

xcache.var_size = 8M

xcache.var_count = 1

xcache.var_slots = 8k
xcache.var_ttl = 0
xcache.var_maxttl = 0
xcache.var_gc_interval = 300
xcache.test = Aus
xcache.readonly_protection = Ein
xcache.mmap_path = "/tmp/xcache"
xcache.coredump_directory = ""
xcache.cacher = Ein
xcache.stat = Ein
xcache.optimizer = Aus
;
xcache.coverager = Ein
xcache.coveragedump_directory = ""

Cache-Verzeichnis erstellen und Apache neu starten

$sudo mkdir /tmp/xcache

$sudo chmod 777 /tmp/xcache

$sudo /usr/local/apache/bin/apachectl restart

Gehen Sie und überprüfen Sie die phpinfo()-Informationen!

3. PHP-Beschleunigertest

1. Testumgebung

Hardware: AMD Athlon 64 X2 Dual Core Prozessor 4400 @ 2,2 GHz CPU, 2 GB RAM 160 GB SATA-Festplatte

Software: Linux-Ubuntu-Server Gutsy 7.10, Apache 2.2.4, MySQL 5.0.45 und PHP 5.2.3

Testbefehl: ab -c5 -n3000 http://example.com/ (Wir verwenden das Apache Benchmark (ab)-Tool, die gleichzeitige Verbindung beträgt 5, 3000 Anfragen)

2. Testergebnisse

Kein Beschleuniger:

Dokumentpfad: /

Dokumentlänge: 21757 Bytes

Parallelitätsgrad: 5
Testzeit: 288,255212 Sekunden
Abgeschlossene Anfragen: 3000
Fehlgeschlagene Anfragen: 0
Schreiben Fehler: 0
Gesamtübertragung: 66777000 Bytes
Übertragenes HTML: 65271000 Bytes
Anfragen pro Sekunde: 10,41 [#/s] (Mittelwert)
Zeit pro Anfrage: 480,425 [ms] (Mittelwert)
Zeit pro Anfrage: 96,085 [ms] (Mittelwert, über alle gleichzeitigen Anfragen)
Übertragungsrate: 226,23 [Kbytes/Sek.] empfangen
Verbindungszeiten (ms)
min. Mittelwert[ /-sd] Median max
Verbinden: 0 0 0,5 0 19
Verarbeitung: 181 479 186,0 444 1822
Warten: 166 461 184,7 427 1708
Gesamt: 181 479 186,0 444 1822<.>Prozentsatz der innerhalb bearbeiteten Anfragen eine bestimmte Zeit (ms)
50% 444
66% 525
75% 577
80% 619
90% 732
95% 819
98% 946
99 % 1012
100 % 1822 (längste Anfrage)

APC-Beschleuniger:

Dokumentpfad: /
Dokumentlänge: 21757 Bytes
Parallelitätsgrad: 5
Testzeit: 98,530068 Sekunden
Abgeschlossene Anfragen: 3000
Fehlgeschlagene Anfragen: 0
Schreiben Fehler: 0
Gesamtübertragung: 66777000 Bytes
Übertragenes HTML: 65271000 Bytes
Anfragen pro Sekunde: 30,45 [#/s] (Mittelwert)
Zeit pro Anfrage: 164,217 [ms] (Mittelwert)
Zeit pro Anfrage: 32,843 [ms] (Mittelwert über alle gleichzeitigen Anfragen)
Übertragungsrate: 661,84 [Kbytes/Sek.] empfangen
Verbindungszeiten (ms)
min. Mittelwert[ /-sd] Median max
Verbinden: 0 0 0,0 0 2
Verarbeitung: 58 163 71,2 155 2452
Warten: 53 158 69,6 150 2329
Gesamt: 58 163 71,2 155, 2452
Prozentsatz der darin bearbeiteten Anträge eine bestimmte Zeit (ms)
50% 155
66% 178
75% 193
80% 204
90% 235
95% 258
98% 285
99 % 302
100 % 2452 (längste Anfrage)

eAccelerator加速器:

Dokumentpfad: /
Dokumentlänge: 21757 Bytes
Parallelitätsgrad: 5
Testzeit: 95,983986 Sekunden
Abgeschlossene Anfragen: 3000
Fehlgeschlagene Anfragen: 0
Schreiben Fehler: 0
Gesamtübertragung: 66777000 Bytes
Übertragenes HTML: 65271000 Bytes
Anfragen pro Sekunde: 31,26 [#/s] (Mittelwert)
Zeit pro Anfrage: 159,973 [ms] (Mittelwert)
Zeit pro Anfrage: 31,995 [ms] (Mittelwert, über alle gleichzeitigen Anfragen)
Übertragungsrate: 679,39 [Kbytes/Sek.] empfangen
Verbindungszeiten (ms)
min. Mittelwert[ /-sd] Median max
Verbinden: 0 0 0,1 0 3
Verarbeitung: 57 159 91,3 148 3830
Warten: 50 152 89,8 142 3704
Gesamt: 57 159 91,3 148, 3830
Prozentsatz der darin bearbeiteten Anträge eine bestimmte Zeit (ms)
50% 148
66% 174
75% 193
80% 205
90% 239
95% 263
98% 289
99 % 309
100 % 3830 (längste Anfrage)

XCache加速器:

Dokumentpfad: /
Dokumentlänge: 21757 Bytes
Parallelitätsgrad: 5
Testzeit: 99,76300 Sekunden
Abgeschlossene Anfragen: 3000
Fehlgeschlagene Anfragen: 0
Schreiben Fehler: 0
Gesamtübertragung: 66777000 Bytes
Übertragenes HTML: 65271000 Bytes
Anfragen pro Sekunde: 30,28 [#/s] (Mittelwert)
Zeit pro Anfrage: 165,127 [ms] (Mittelwert)
Zeit pro Anfrage: 33,025 [ms] (Mittelwert, über alle gleichzeitigen Anfragen)
Übertragungsrate: 658,19 [Kbytes/Sek.] empfangen
Verbindungszeiten (ms)
min. Mittelwert[ /-sd] Median max
Verbinden: 0 0 0,0 0 2
Verarbeitung: 59 164 83,4 155 3367
Warten: 52 156 66,4 148 1802
Gesamt: 59 164 83,4 155, 3367
Prozentsatz der darin bearbeiteten Anträge eine bestimmte Zeit (ms)
50% 155
66% 178
75% 196
80% 206
90% 237
95% 263
98% 287
99 % 305
100 % 3367 (längste Anfrage)

3、结果摘要

  请求时间(秒) 单次请求时间(毫秒) 最大内存占用(MB) 最小内存占用(MB)
None 10.41 96.08 24 24
APC 30.45 32.84 21 21
eAccelerator 31.26 31.99 23 18
XCache 30.28 33.02 29 19

四、PHP加速器比较结果总结

     1、通过测试得出eAccelerator在请求时间和内存占用综合方面是最好的.

     2、通过测试得出使用加速器比无加速器在请求时间快了3倍左右.

     3、通过各个官方观察,XCache是更新最快的,这也说明最有发展的。

       定比不用好, 其次每个加速器还有一些可以调优的参数, 所以要根据你的系统环 境而定, 然后, 我个人觉得你可以详细研究下eAccelerator, 这两款潜力还是很大的, 最后我从比较专业的测试网站搞了一张结果图:

原文链接地址:http://www.vpser.net/opt/apc-eaccelerator-xcache.html

Sie verwenden PHP, eAccelerator,帮助.

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn