2011-10-02 3 views
17

Comment faire la planification de la capacité du cache - par ex. combien de RAM allouer pour ehCache, memcache ou dynacache? Existe-t-il une formule standard dans l'industrie?Planification de la capacité de la taille du cache

Par exemple. J'ai environ 60 000 enregistrements dans la base de données. Ce sont les données de l'entreprise - qui contient le nom de l'entreprise, la description et le code de l'entreprise. Je veux implémenter une fonctionnalité typée utilisant jQuery et vouloir stocker les détails de ce nom de compagnie dans le cache.

Quelle serait la taille de cache idéale? Je sais que la taille de la mémoire cache est limitée à la quantité de mémoire libre disponible mais intéressée à connaître une manière spécifique? ou est un essai et une erreur où vous commencez avec une certaine taille et tester, tracer un graphique et continuer à ajuster la taille du cache.

Mise à jour

Société Id - CHAR (9)

Nom de la société - VARCHAR2 (250 CHAR)

Société Desc - NVARCHAR2 (1000 CHAR)

+0

Quelle est la longueur maximale de chaque champs les données de l'entreprise a? –

+0

J'ai mis à jour la question avec des détails supplémentaires de la longueur des colonnes – basav

+3

Je recommanderais d'utiliser INT au lieu de CHAR (9) pour l'ID de la société –

Répondre

38

1) Si vous avez un serveur de cache dédié, vous n'avez pas à vous soucier de l'espace mémoire que vous devez utiliser. Vous pouvez utiliser la quantité maximale de mémoire libre disponible (ou proche de) et laissez-le faire sa magie.

2) Si le serveur de mise en antémémoire est le même que votre serveur Web, vous devrez spécifier combien vous autorisez memcached (dynacache ou autre) à utiliser. Pour mon point de vue, il n'y a pas vraiment de taille de cache idéale. Tout dépend de la quantité de mémoire de votre serveur, de la quantité de données à mettre en cache, etc. Tant que votre mémoire est correctement équilibrée entre la mise en cache et le serveur web, vous êtes bon.

Dans ce cas, vous avez un peu moins de 100 Mo de données à stocker dans le cache. En fonction de la taille de votre serveur, c'est très petit mais vous devrez toujours penser à combien de données il y a de plus en plus, et vous devez ajouter des données supplémentaires (comme des clients, des produits, etc.). Donc, si vous mettez moins que ce dont vous avez besoin, vous devrez arrêter le service, augmenter la valeur de la mémoire allouée, démarrer le service.

Si votre serveur traite beaucoup d'informations nécessitant beaucoup de mémoire, vous devrez calculer la quantité de mémoire et les ressources nécessaires à ces processus.

Exemple rapide:

  • 1 serveur (cache et serveur web) avec 4G de mémoire totale.
  • ressources système et les processus, y compris cronjob, base de données, etc .: 3G
  • 60.000 clients avec un total de 100 Mo (toujours utiliser plus que la taille réelle juste au cas où)

Dans cet exemple, 1G de mémoire gauche (environ). Il n'est pas recommandé de calculer la somme totale puisque vous en aurez assez pour votre système. Je dirais que l'utilisation de 384 Mo ou moins pour votre cache sera un bon début. Vous permettez à votre cache de se développer et vous n'affectez pas la mémoire de votre système.

Je vous recommande de surveiller votre serveur pour vous assurer que l'allocation de mémoire pour votre système et votre cache sont parfaitement équilibrés.

est ici un bon article à ce sujet: http://techgurulive.com/2009/07/22/how-to-allocate-memory-within-memcached/

+0

Merci pour une explication détaillée (+1). Mon cas est le deuxième point au-dessus duquel vous avez décrit. En substance ce que vous dites est - d'abord trouver combien de mémoire libre est disponible après avoir pris en compte dans le système, OS et d'autres ressources. Puis allouer un peu plus que ce qui est nécessaire (en fonction de la disponibilité). Btw, comment avez-vous venir avec 100 Mo au-dessus - juste ajouté les caractères et varchars? – basav

+1

En calculant la valeur maximale de chaque champs * nombre de clients ou vous pouvez afficher l'état stable. Vous devriez voir un appel de champ "data_length" (C'est ce que je fais dans MySQL: 'show table status', je suis sûr qu'il existe une version Oracle de ça). Ensuite, vous pouvez facilement dire, voici combien mes données prennent, vous augmentez un peu juste pour être en sécurité. Mais comme je l'ai dit, il n'y a pas de solution parfaite. Vous devez vérifier quelle est la meilleure valeur pour votre serveur. –

+15

très bonne explication – eric

Questions connexes