Autor Subiect: Tutorial Instalare si configurare eAccelerator  (Citit de 13702 ori)

Tomoiaga

  • Webmaster
  • ****
  • Mesaje postate: 921
  • Karma: +18/-9
    • Vezi Profilul
    • http://elvsoft.com
Tutorial Instalare si configurare eAccelerator
« : August 01, 2006, 06:11:36 pm »
Pentru cei care inca nu stiu,
eAccelerator este un accelerator PHP gratuit, ce creste
performanta scripturilor PHP prin caching, dupa ce
acestea au fost compilate, eliminand astfel nevoia de recompilare
de fiecare data cand sunt accesate si optimizeaza scripturile
marind astfel viteza de executie a unui cod PHP considerabil.

Pasii de instalare si configurare au fost facuti pe CentOS v4.3.
Nu garantez ca totul o sa mearga exact asa cum am scris mai jos
si pe alte flavor-uri linux.
Daca intampinati probleme, sunt aici sa va ajut.

PASUL DE INSTALARE

Aveti nevoie de urmatoarele pentru a porni:
    * php4 sau php5
    * autoconf
    * automake
    * libtool
    * m4

Aveti de ales intre versiunile 0.9.4 sau 0.9.5-beta1 si beta2.
Eu am folosit beta2 si inca nu am intampinat probleme.
Sursa o puteti downloada de aici: http://kent.dl.sourceforge.net/sourceforge/eaccelerator/eaccelerator-0.9.5-beta2.tar.bz2
Dupa download si dezarhivare, intrati in directorul sursei si rulati urmatoarele comenzi:

Citat
Daca aveti doar o versiune de php instalata:

phpize
./configure
make


Citat

Citat
Daca aveti mai multe versiuni, ex: php4 si php5 pe acelasi server iar una
este instalata in directorul /opt/php si pentru aceasta
doriti instalarea eAccelerator:

export PHP_PREFIX="/opt/php"
$PHP_PREFIX/bin/phpize
./configure --enable-eaccelerator=shared --with-php-config=$PHP_PREFIX/bin/php-config
make


 Pentru mai multe optiuni de compilare urmatorul link este de ajutor: http://eaccelerator.net/wiki/CompileConfiguration
Dupa compilare ar trebui sa existe fisierul "eaccelerator.so" in subdirectorul "modules" din directorul sursa al eAccelerator.
Citat
Instalarea propriuzisa se face prin comanda(almost like always):

make install


In final, pentru a porni eAccelerator odata cu php-ul,
copiati urmatoarele linii, la sfarsitul fisierul php.ini al versiunii de php pentru care instalati eAccelerator:

Exista doua moduri de instalare:

Instalarea ca extensie Zend (unde /usr/local/lib/php este directorul unde
am instalat php-ul):

zend_extension="/usr/local/lib/php/extensions/eaccelerator.so"
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.shm_prune_period="0"
eaccelerator.shm_only="0"
eaccelerator.compress="1"
eaccelerator.compress_level="9"

Atentie, daca folositi o versiune de php thread safe trebuie
sa folositi "zend_extension_ts" in locul "zend_extension"


Instalarea ca extensie php:

extension="eaccelerator.so"
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.shm_prune_period="0"
eaccelerator.shm_only="0"
eaccelerator.compress="1"
eaccelerator.compress_level="9"

Citat
In urmatorul pas trebuie sa creati directorul pentru cache "/tmp/eaccelerator"

Cel mai simplu mod:

mkdir /tmp/eaccelerator
chmod 0777 /tmp/eaccelerator

Ultimul pas il reprezinta restartul apache.

Daca totusi apache nu porneste, pur si simplu comentati liniile pe care le-ati
introdus in fisierul php.ini si reporniti apache fara eAccelerator, asta daca nu doriti sa
aveti down time, iar motivul pentru care nu a pornit il gasiti in log-ul de erori apache.

Daca totul a decurs corect, apache trebuie sa reporneasca.
Pentru a verifica instalarea eAccelerator, creati un fisier test.php
intr-un director unde browserul are acces, cu urmatorul continut:
Citat
<?
phpinfo();
?>


apoi apelati acest fisier din browser.
Ar trebui sa vedeti mai jos un tabel cu
titlul eAccelerator si diverse informatii.

PASUL DE CONFIGURARE

Voi incerca sa explic configurarea eAccelerator, mai precis
optiunile pe care le consider mai importante:
modificarea setarilor presupune restartul apache.

eaccelerator.shm_size = "0" - optiune default
Permite controlul cantitatii de memorie shared in MB alocata pentru caching.

Eu am setat aceasta optiune pe 64 MB, 0 reprezentand valoarea default, nu 0 MB!
valoarea default poate fi 16 MB, 32 MB etc,
se poate verifica in informatiile afisate de fisierul creat mai sus, test.php

Atentie, pentru a seta o anumita valoare, mai mare decat valoarea default, presupune:
verificarea valorii kernel.shmmax din /etc/sysctl.conf sau, daca nu exista,
verificarea valorii din fisierul /proc/sys/kernel/shmmax
Daca valoarea setata pentru shm_size la eAccelerator este mai mare decat
cea din unul din fisierele de mai sus, apache nu o sa porneasca !
Daca dorim setarea unei valori, mai mare decat cea default, ca in cazul meu, 64 MB,
trebuie sa copiem valoarea in bytes, in fisierul /proc/sys/kernel/shmmax si daca nu
exista, in fisierul /etc/sysctl.conf atribuim variabilei kernel.shmmax valoarea tot in bytes.

eaccelerator.shm_ttl = "0" - valoare default
Daca eAccelerator nu mai dispune de memorie suficienta pentru a pune in cache un script nou,
va scoate din cache, scipturi care nu au mai fost accesate de cel putin shm_ttl secunde, in
cazul valorii default, 0, niciodata.
Eu am setat aceasta valoare la 86400 secunde, adica 24 ore.

eaccelerator.shm_prune_period = "0" - valoare default
Daca eAccelerator nu mai dispune de suficienta memorie pentru a pune in cache un script nou,
va incerca sa scoata din cache scripturi vechi, daca incercarea precedenta (la shm_ttl), a fost
facuta in urma cu shm_prune_period.
Eu am setat aceasta valoare la 43200 , 12 ore.

eaccelerator.compress = "1" - valoare default
Nu am vrut sa mai comprime nimic, mi s-a parut un pas in plus, asa ca am setat-o la 0

In rest totul poate fi lasat default ! Daca totusi se doreste modificarea altor variabile
sau mai multe informatii, gasiti pe pagina eAccelerator la link-ul "Ini settings".

Va doresc succes !

WBF

  • Furnizor servicii
  • Hostmaster
  • *****
  • Mesaje postate: 3476
  • Karma: +64/-57
    • Vezi Profilul
    • Webfactor
Tutorial Instalare si configurare eAccelerator
« Răspuns #1 : August 01, 2006, 08:37:36 pm »
Respectele mele.

beberonUS

  • Vizitator
Tutorial Instalare si configurare eAccelerator
« Răspuns #2 : August 01, 2006, 09:02:12 pm »
e excelent tutorialul tau..

pun si eu un tutorial (varianta in engleza) de pe LT. sper ca nu e o problema.

What is eAccelerator?
Eaccelerator is a PHP accelerator/encoder/caching utility that is based off of the old mmcache (which is no longer being maintained).

What Eaccelerator does is: it caches your PHP scripts so that the database is no longer being queried everytime someone needs a script. This is particularly useful for large forums, but pretty much anyone can benefit from it. Since these scripts are cached, you'll notice a decrease in memory use and server load.

$ wget http://yourmirror.dl.sourceforge.net....4-rc1.tar.bz2
$ tar -xzf eaccelerator-0.9.4-rc1.tar.bz2
$ cd cd eaccelerator-0.9.4-rc1
$ /usr/bin/phpize
$ ./configure --enable-eaccelerator=shared --with-php-config=/usr/bin/php-config
$ make
$ su
$ mkdir /tmp/eaccelerator
$ chown apache:apache-group /tmp/eaccelerator
$ chmod 1700 /tmp/eaccelerator
$ make install
(the italicized versions will vary on your system; Apache usually runs as "nobody")

After the install, you need to add a line in php.ini for it to load this extention. The line will look something like this:

zend_extension=/path/to/eaccelerator.so

and below it you well need to add something like: (for configuration)

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.shm_prune_period="0"
eaccelerator.shm_only="0"
eaccelerator.compress="1"
eaccelerator.compress_level="9"

Depending on your platform, this may take a few goes. When you have it installed and running, type:

$ php -v

This will output something like:

root@stargate [~]# php -v
PHP 4.3.11 (cli) (built: Dec 21 2005 16:51:25)
Copyright (c) 1997-2004 The PHP Group
Zend Engine v1.3.0, Copyright (c) 1998-2004 Zend Technologies
with eAccelerator v0.9.3, Copyright (c) 2004-2005 eAccelerator, by eAccelerator
with Zend Extension Manager v1.0.7, Copyright (c) 2003-2005, by Zend Technologies
with Zend Optimizer v2.5.10, Copyright (c) 1998-2005, by Zend Technologies

You should notice an immediate affect after restarting apache.

WBF

  • Furnizor servicii
  • Hostmaster
  • *****
  • Mesaje postate: 3476
  • Karma: +64/-57
    • Vezi Profilul
    • Webfactor
Tutorial Instalare si configurare eAccelerator
« Răspuns #3 : August 01, 2006, 09:05:51 pm »
Citat din: "beberonUS"


pun si eu un tutorial (varianta in engleza) de pe LT. sper ca nu e o problema.
.


Cred ca este nevoie de permisiunea minim a lui Jeremy de la LT ca sa copiezi si sa publici.

Tomoiaga

  • Webmaster
  • ****
  • Mesaje postate: 921
  • Karma: +18/-9
    • Vezi Profilul
    • http://elvsoft.com
Tutorial Instalare si configurare eAccelerator
« Răspuns #4 : August 01, 2006, 09:17:06 pm »
Tutorialul l-am pus pentru a fi completat, poate mai aflu si eu lucruri noi, poate aflati voi, iar cine citeste si este interesat sa inteleaga cat mai bine ce are de facut !
Insist din nou pe modificarea valorilor:
Citat
eaccelerator.shm_ttl
eaccelerator.shm_prune_period

La 16 MB, cache-ul se poate umple repede, in functie de server.
Momentan pe unul din servere am asa:
Memory Size  67,108,824 Bytes  
Memory Available  13,741,516 Bytes  
Memory Allocated  53,367,308 Bytes  
Cached Scripts  1403  

Iar la 16 MB, aveam abia 300 scripturi in cache !

Adrian Andreias

  • Webmaster
  • ****
  • Mesaje postate: 583
  • Karma: +13/-0
  • Elvsoft, Cluj-Napoca
    • Vezi Profilul
    • http://www.elvsoft.com/
Tutorial Instalare si configurare eAccelerator
« Răspuns #5 : August 01, 2006, 09:24:02 pm »
Cateva informatii de background pe care se bazeaza un astfel de accelerator.
Pentru lupii batrani treburile sunt clare (sau cei mai multi ditre ei :P), dar o sa postez totusi.

Exista 2 categorii de limbaje de programare:
- limbaje compilate: C, C++, Pascal etc etc
- limbaje interpretate (de scripting mai exact): PHP, PERL, Python, Ruby, ROR etc etc
(ar mai fi semi-compilate gen Java, C# si .NET in general dar e o alta discutie

Fiecare are dezavantaje si avantaje:
- limbajele compilate sunt foarte rapide pentru ca in urma copilarii se ajunge la cod masina (0 si 1) sau limba nativa a procesorului; dar sunt mai greu de debugut, de ex. e nevoie de artificii pentru a vedea exact linia de cod cu probleme pt ca in urma compilarii nu se poate face reverse la sursa (sau se poate dar e urat rezulatul, crackerii stiu de ce)
- limbajele interpretate sunt mai lente, dar mai usor de utilizat si invatat, de aici po*ularitatea lor

Si atunci, pentru sursa ca PHP nu e pe limba procesorului, ci pe limba omului, la fiecare rulare a unui script trebuie facuta trecerea cod sursa->cod masina (si apoi rulat de procesor).

eAccelerator salveaza codul PHP in format de cod masina (sau cel putin cod masina intermediar) sarind peste pasul de compilare. De aici boostul de perfomanta.

Elementul nr 2 de optimizare este cache-area codului compilat PHP in memoria RAM, in loc sa fie incarcat de pe disc la fiecare accesare a unui pagini PHP.

Se stie ca bottleneck-ul de astazi la sisteme de calcul este discul, cea mai inceata veriga dintr-un calculator. De aici alt boost de performanta.
(Discurile SCSI sunt inca scumpe)

Un alt element de optimizare ce poate fi facut, si pe care nu il face eAccelerator este cache-area in diferite feluri a datelor ce se iau dintr-o baza de date (mysql de ex.).

Tomoiaga

  • Webmaster
  • ****
  • Mesaje postate: 921
  • Karma: +18/-9
    • Vezi Profilul
    • http://elvsoft.com
Tutorial Instalare si configurare eAccelerator
« Răspuns #6 : Septembrie 22, 2006, 12:04:16 am »
Cred ca am uitat sa precizez. De fiecare data cand se recompileaza PHP-ul (update, adaugare/stergere module) trebuie recompilat si eAccelerator, altfel
apache nu o sa reporneasca !

Tomoiaga

  • Webmaster
  • ****
  • Mesaje postate: 921
  • Karma: +18/-9
    • Vezi Profilul
    • http://elvsoft.com
Tutorial Instalare si configurare eAccelerator
« Răspuns #7 : Martie 09, 2007, 03:58:49 pm »
In cazul in care va intrebati de ce Removed Scripts e tot timpul 0 desi sunt setate corect eaccelerator.shm_prune_period si eaccelerator.shm_tll , not to worry.
Removed Scripts ia valoarea 1,2 sau cate scripturi au fost scoase din cache doar in momentul executiei unui alt script  ce a fost introdus in cache si a fost nevoie de eliberare spatiu. Dupa care devine 0 din nou.

etp.ro

  • Moderator
  • Webmaster
  • *****
  • Mesaje postate: 821
  • Karma: +7/-0
    • Vezi Profilul
    • http://www.etp.ro
Tutorial Instalare si configurare eAccelerator
« Răspuns #8 : Martie 09, 2007, 05:04:17 pm »
Interesant.
Adica sa zicem ca pui un phpinfo, care prin cine stie ce minune nu a fost cache-uit. Ai sanse infime sa vezi valoarea aia pe 1? Apoi daca dai un refresh se pune iar 0?

In cazul asta chiar mi se pare inutila functia aia de afisare.
Eu eram convins ca pur si simplu nu functioneaza prune si ttl.

Unde ai gasit/citit ca e asa?

Adrian Andreias

  • Webmaster
  • ****
  • Mesaje postate: 583
  • Karma: +13/-0
  • Elvsoft, Cluj-Napoca
    • Vezi Profilul
    • http://www.elvsoft.com/
Tutorial Instalare si configurare eAccelerator
« Răspuns #9 : Martie 09, 2007, 06:25:32 pm »
Din cate inteleg eu, "Removed Scripts" poate fi intepretat ca un flag al bunei functionari a cache-ului.

Daca vezi valoare mai mare decat 0 constant, inseamna ca nu functionaza optim cache-ul. Adica spatiul alocat pentru cache este insuficient pentru numarul de scripturi de pe server. Si atunci operatiile [eliberare cache]+[cache script nou] repetate conduc la o scadere a performantei.

Asa imi zice mie logica, dar probabil ca o sa ne zica Cristi mai clar cand are vreme :).

Tomoiaga

  • Webmaster
  • ****
  • Mesaje postate: 921
  • Karma: +18/-9
    • Vezi Profilul
    • http://elvsoft.com
Tutorial Instalare si configurare eAccelerator
« Răspuns #10 : Martie 10, 2007, 12:56:36 pm »
Nu am gasit inca explicatii, dar am prins de cateva ori in phpinfo valori ca 1, 2, 3 etc si dupa refresh exact cum ai zis, a revenit la 0

xServers.ro

  • Webmaster
  • ****
  • Mesaje postate: 966
  • Karma: +1/-6
    • Vezi Profilul
    • http://www.xservers.ro
Răspuns: Tutorial Instalare si configurare eAccelerator
« Răspuns #11 : Mai 12, 2008, 06:34:56 am »
eaccelerator e foarte ok ca accelerator de php dar are o problema majora , e incompatibil in combinatia apache (worker mpm) + php ... seg fault la fiecare 3-5 secunde.

Tomoiaga

  • Webmaster
  • ****
  • Mesaje postate: 921
  • Karma: +18/-9
    • Vezi Profilul
    • http://elvsoft.com
Răspuns: Tutorial Instalare si configurare eAccelerator
« Răspuns #12 : Mai 12, 2008, 09:55:22 am »
aha, nu stiu ca la mine merge ok. Oricum daca nu merge eaccelerator merge xcache.

xServers.ro

  • Webmaster
  • ****
  • Mesaje postate: 966
  • Karma: +1/-6
    • Vezi Profilul
    • http://www.xservers.ro
Răspuns: Tutorial Instalare si configurare eAccelerator
« Răspuns #13 : Mai 12, 2008, 09:56:34 am »
cu mpm-prefork merge ok ... problema e la mpm-worker.

Tomoiaga

  • Webmaster
  • ****
  • Mesaje postate: 921
  • Karma: +18/-9
    • Vezi Profilul
    • http://elvsoft.com
Răspuns: Tutorial Instalare si configurare eAccelerator
« Răspuns #14 : Mai 12, 2008, 10:02:34 am »
de ala ziceam