memcached ist perfekt zum cachen eigener Inhalte. Damit der Server damit ausgeruestet ist:
apt-get install memcached |
apt-get install memcached
Ist ein Server mit mehr als 2 Kernen ausgestattet, sollte das threaded Paket installiert.
Der memcached sollte den freien RAM vollstaendig ausnutzen (nicht ueberbuchen, damit’s nicht ins SWAP geht).
Die Speichermenge kann in
/etc/memcached.conf
eingestellt werden.
PHP kann eine API anbieten (die Applikationen muessen sich aber schon selbstaendig um die Verwendung und Organisation des Caches kuemmern: z.B. TYPO3 Extensions koennen vom TYPO3 Core Caching Framework via memcache profitieren )
Um die PHP Erweiterung zu installieren:
apt-get install php5-dev
pecl install memcache-3.0.6 |
apt-get install php5-dev
pecl install memcache-3.0.6
Ideale PHP Werte in
/etc/php5/conf.d/memcache.ini
sind
[memcache]
memcache.dbpath="/var/lib/memcache"
memcache.maxreclevel=0
memcache.maxfiles=0
memcache.archivememlim=0
memcache.maxfilesize=0
memcache.maxratio=0
memcache.protocol=ascii
… ergaenzend fuer TYPO3, ausgelagert in
/etc/php5/conf.d/t3memcache.ini
ist folgendes von Vorteil
memcache.allow_failover=1
memcache.chunk_size=32768
memcache.default_port=11211
memcache.hash_function=fnv
memcache.hash_strategy=consistent
memcache.max_failover_attempts=20
Das „binary“ Protokoll wird von PHP nicht vollstaendig unterstuetzt, daher muss „ascii“ als sehr parser-intensives und langsameres Protokoll verwendet werden.
Damit TYPO3 vom memcache profitiert, folgende Einstellungen in der localconf.php vornehmen:
// ----- Caching with MemCache 4.3 only ----
$TYPO3_CONF_VARS['SYS']['caching']['cacheConfigurations'] = array (
'cache_hash' => array(
'frontend' => 't3lib_cache_frontend_VariableFrontend',
'backend' => 't3lib_cache_backend_MemcachedBackend',
'options' => array(
'servers' => array('tcp://localhost:11211'),
)
),
'cache_pages' => array(
'frontend' => 't3lib_cache_frontend_VariableFrontend',
'backend' => 't3lib_cache_backend_MemcachedBackend',
'options' => array(
'servers' => array('tcp://localhost:11211'),
)
),
'cache_pagesection' => array(
'frontend' => 't3lib_cache_frontend_VariableFrontend',
'backend' => 't3lib_cache_backend_MemcachedBackend',
'options' => array(
'servers' => array('tcp://localhost:11211'),
)
),
);
$TYPO3_CONF_VARS['SYS']['useCachingFramework'] = '1';
// ----- /Caching with MemCache 4.3 only---- |
// ----- Caching with MemCache 4.3 only ----
$TYPO3_CONF_VARS['SYS']['caching']['cacheConfigurations'] = array (
'cache_hash' => array(
'frontend' => 't3lib_cache_frontend_VariableFrontend',
'backend' => 't3lib_cache_backend_MemcachedBackend',
'options' => array(
'servers' => array('tcp://localhost:11211'),
)
),
'cache_pages' => array(
'frontend' => 't3lib_cache_frontend_VariableFrontend',
'backend' => 't3lib_cache_backend_MemcachedBackend',
'options' => array(
'servers' => array('tcp://localhost:11211'),
)
),
'cache_pagesection' => array(
'frontend' => 't3lib_cache_frontend_VariableFrontend',
'backend' => 't3lib_cache_backend_MemcachedBackend',
'options' => array(
'servers' => array('tcp://localhost:11211'),
)
),
);
$TYPO3_CONF_VARS['SYS']['useCachingFramework'] = '1';
// ----- /Caching with MemCache 4.3 only----
hier eine aktualisierte Version, die nicht das komplette cacheConfigurations Array ueberschreibt (danke fuer den Hinweis, Steffen).
// ----- Caching with MemCache - doesn't overwrite cacheConfigurations array completely -----
$TYPO3_CONF_VARS['SYS']['caching']['cacheConfigurations']['cache_hash'] = array(
'frontend' => 't3lib_cache_frontend_VariableFrontend',
'backend' => 't3lib_cache_backend_MemcachedBackend',
'options' => array(
'servers' => array('tcp://localhost:11211')
)
);
$TYPO3_CONF_VARS['SYS']['caching']['cacheConfigurations']['cache_pages'] = array(
'frontend' => 't3lib_cache_frontend_VariableFrontend',
'backend' => 't3lib_cache_backend_MemcachedBackend',
'options' => array(
'servers' => array('tcp://localhost:11211')
)
);
$TYPO3_CONF_VARS['SYS']['caching']['cacheConfigurations']['cache_pagesection'] = array(
'frontend' => 't3lib_cache_frontend_VariableFrontend',
'backend' => 't3lib_cache_backend_MemcachedBackend',
'options' => array(
'servers' => array('tcp://localhost:11211')
)
);
$TYPO3_CONF_VARS['SYS']['useCachingFramework'] = '1';
// ----- /Caching with MemCache - doesn't overwrite cacheConfigurations array completely ----- |
// ----- Caching with MemCache - doesn't overwrite cacheConfigurations array completely -----
$TYPO3_CONF_VARS['SYS']['caching']['cacheConfigurations']['cache_hash'] = array(
'frontend' => 't3lib_cache_frontend_VariableFrontend',
'backend' => 't3lib_cache_backend_MemcachedBackend',
'options' => array(
'servers' => array('tcp://localhost:11211')
)
);
$TYPO3_CONF_VARS['SYS']['caching']['cacheConfigurations']['cache_pages'] = array(
'frontend' => 't3lib_cache_frontend_VariableFrontend',
'backend' => 't3lib_cache_backend_MemcachedBackend',
'options' => array(
'servers' => array('tcp://localhost:11211')
)
);
$TYPO3_CONF_VARS['SYS']['caching']['cacheConfigurations']['cache_pagesection'] = array(
'frontend' => 't3lib_cache_frontend_VariableFrontend',
'backend' => 't3lib_cache_backend_MemcachedBackend',
'options' => array(
'servers' => array('tcp://localhost:11211')
)
);
$TYPO3_CONF_VARS['SYS']['useCachingFramework'] = '1';
// ----- /Caching with MemCache - doesn't overwrite cacheConfigurations array completely -----
Steht ein weiterer, dezidierter memcache Server bereit, sollte der in die ’servers‘ Arrays mit aufgenommen werden. Um split-brain in den Caches zu vermeiden und die Last besser zu koordinieren, ist es aber besser fuer jedes Segment einen eigenen, einzelnen Server zu verwenden (wenn man 3 Server uebrig hat…)