J'ai une application Facebook avec 250K DAU. J'utilise Memcached pour mettre en cache les fichiers et MySql sélectionne car sans cela mon serveur devient fou.Memcached problème étrange!
J'ai mis en place le code comme ceci:
$memcache = new Memcache;
$memcache->connect('127.0.0.1', 11211) or die ("Could not connect");
// POUR LES FICHIERS
$doc = $memcache->get('mem_index_html');
if ($doc == null)
{
$doc = new Document(HTML.'index.html');
$memcache->set('mem_index_html', $doc, 0, 86400);
}
// POUR SQL
$sql=sprintf('count(qtn_id) FROM tb_questions where qtn_lang="EN"));
$total_pages = $memcache->get($sql);
if ($total_pages == null)
{
$query_id = DB::query($sql);
list($total_pages) = DB::nextRow($query_id);
DB::free($query_id);
$memcache->set($sql, $total_pages, 0, 86400);
}
Le problème est que, après un certain temps - habituellement 24 heures, les erreurs commencent à apparaître. Aucun journal n'est créé mais je reçois un délai d'expiration si j'essaie de recharger la page. Je suppose qu'il y a beaucoup de trafic dans ce moment, le Memcached ne fonctionne pas correctement et tout ralentit. Ma solution temporaire est de vider le memcache - $memcache->flush(),
mais ce n'est pas une bonne solution.
Est-ce que je fais quelque chose de mal? Y at-il quelque chose à optimiser ou je ne sais pas. J'ai trouvé la recherche par le biais de ce Web http://code.google.com/p/memcached/wiki/TutorialCachingStory sur la fabrication de plus d'un serveurs Memecached. Est-ce la meilleure solution?
Merci pour vos réponses.
Darko
temporel ne signifie pas temporaire. Cela signifie avoir à faire avec le temps. Même racine, significations différentes. – DampeS8N