Annak idején nagyon örültem, hogy egy bizonyos portál (direkt nem írom le a nevét) amely nagy reklámkampánnyal indult, drupal-t használt. Aztán nagyon nem örültem, hogy átváltottak egy másik rendszerre. A miértekre azóta sem kaptunk választ, de gondolom, hogy a teljesítmény lehetett a gond, mert ez szokott a drupal legnagyobb baja lenni. Persze erre is van megoldás.
Mostanában egy kicsit belemásztam a témába, és két teljesítményjavító cuccot próbáltam ki. Az egyik az APC (Alternative Php Cache) a másik pedig a Memcache (php függvények hozzá). Ezen kívűl van egy Cachrouter nevű drupal modul, ami elsősorban a memcache-hez hasznos.
A cacherouter beállításai APC esetén:
$conf['cacherouter'] = array(
'default' => array(
'engine' => 'apc',
'prefix' => '',
),
);
A cacherouter beállításai Memcached esetén:
$conf['cacherouter'] = array(
'default' => array(
'engine' => 'memcache',
'server' => array('localhost:11211'),
'shared' => TRUE,
'prefix' => '',
),
);
A teszteléshez az Apache benchmark programot használtam (Ubuntu alatt az apache2-tools csomagban van, ab a neve) a következőképen:
ab -n 100 -c 5 http://site.name/
Egy elég sok modullal rendelkező drupal-fejlesztői oldalon teszteltem. Itt már rengeteg modul be van kapcsolva, azonban a főoldalon még a telepítés utáni üzenet látható. Alapvetően nem az értékek fontosak, hanem az arányok. A szerver egy virtuális gépen futott 128 Mb memóriával...
Nézzük az eredményeket:
Egyik sincs bekapcsolva:
Requests per second: 2.53 [#/sec] (mean)
Time per request: 1975.748 [ms] (mean)
Time per request: 395.150 [ms] (mean, across all concurrent requests)
Apc, cachrouter nélkül:
Requests per second: 8.62 [#/sec]
Time per request: 580.063 [ms]
Time per request: 116.013 [ms]
Apc, cachrouter-el:
Requests per second: 6.00 [#/sec]
Time per request: 833.523 [ms]
Time per request: 166.705 [ms]
Apc, apc.shm_size=48 (ezt az .ini file-ban kell beállítani) cachrouter nélkül:
Requests per second: 8.98 [#/sec]
Time per request: 556.589 [ms]
Time per request: 111.318 [ms]
Apc, apc.shm_size=48 cachrouter-el:
Requests per second: 9.99 [#/sec]
Time per request: 500.349 [ms]
Time per request: 100.070 [ms]
A memcached-et nem érdemes kikapcsolt cacherouterrel nézni.
Memcached:
Requests per second: 3.32 [#/sec]
Time per request: 1506.420 [ms]
Time per request: 301.284 [ms]
Memcached, memcache.chunk_size=32768
Requests per second: 3.23 [#/sec]
Time per request: 1546.956 [ms]
Time per request: 309.391 [ms]
Egységben az erő:
Memcached, Apc együtt cacherouter bekapcsolva memcache-re:
Requests per second: 10.04 [#/sec]
Time per request: 498.255 [ms]
Time per request: 99.651 [ms]
Látható, hogy csak az APC bekapcsolásával 4-szeres teljesítménynövekedést lehetett elérni. A memcache valószínűleg azért nem produkált túl jó eredményeket, mert elég kevés adatbázis-lekérdezés történt. Bonyolultabb cck-val összeállított view-kkal mutogatott oldalaknál valószínűleg, nagyobb lett volna a javulás.
Remélem ezután a felhasználóbarát cikk után sokaknak kedve támad teljesítmény-teszteket végezni. Ehhez egy kis segítség. (Ubuntuhoz elsősorban.)
APC install:
sudo apt-get update; apt-get upgrade
sudo apt-get install php5-dev make apache2-threaded-dev php-pear
pecl install apc
Ezután létre kell hozni a /etc/php5/conf.d/apc.ini file-t a következő tartalommal:
# configuration for php APC module
extension=apc.so
apc.shm_size=48
Memcached install:
Ennél jobbat én sem tudok.
Annyi még, hogy a /etc/php5/conf.d/memcache.ini végére:
memcache.chunk_size=32768
Illetve ne felejtsük el kivenni a pöttyös vesszőt a extension=memcache.so
elől.
Mára csak ennyi. Ha valakinek van tapasztalat más teljesítményfokozókkal, szívesen venném őket.
-->
Trackback URL ehhez a bejegyzéshez:
http://amon.hu/trackback/65