Qu'est-ce qui est plus rapide/meilleur pour la mise en cache, le système de fichiers ou Memcached?
Je ne pense pas que ce soit clair pour moi Encore, est-ce plus rapide de lire des choses à partir d'un fichier ou de memcached? Pourquoi?
7 réponses
Memcached est plus rapide, mais la mémoire est limitée. Le HDD est énorme, mais les entrées / sorties sont lentes par rapport à la mémoire. Vous devez mettre le plus chaudes de choses à memcache et tous les autres aller pour les fichiers de cache.
(Ou d'un homme et d'investir un peu d'argent en plus de la mémoire comme ces gars-là:)
Pour certains tests, voir: comparaison des performances de Cache (File, Memcached, Query Cache, APC)
dans théorie:
Read 1 MB sequentially from memory 250,000 ns
Disk seek 10,000,000 ns
http://www.cs.cornell.edu/projects/ladis2009/talks/dean-keynote-ladis2009.pdf
il y a plusieurs aspects différents qui pourraient favoriser l'un ou l'autre:
- avez-vous besoin/envie de partager ces données entre plusieurs serveurs? Le système de fichiers est local, memcached est accessible via un réseau.
- Quelle est la taille de votre cache? Le système de fichiers est susceptible d'être meilleur pour les objets de grande taille.
- combien de requêtes memcached pourrait-il y avoir par page? Les connexions TCP et les démontages peuvent prendre plus de temps qu'un simple système de fichiers stat() sur la machine locale.
je vous suggère de regarder votre cas d'utilisation, et faire un peu de profilage des deux approches. Si vous pouvez vous en sortir en utilisant le système de fichiers alors je le ferais. L'ajout de memcached ajoute une autre couche de complexité et de points potentiels d'échec (client/serveur memcached).
pour ce qu'il en vaut la peine les autres commentaires sur le disque vs la performance de mémoire pourraient bien être académique comme si les données du système de fichiers est consulté régulièrement alors il sera probablement assis dans le système D'exploitation ou la mémoire cache de disque de toute façon.
"plus Rapide" ne peut pas être utilisé sans contexte. Par exemple, l'accès aux données dans memcached sur un serveur distant peut être "plus lent" en raison de la latence du réseau. En revanche, la lecture de données à partir de la mémoire du serveur distant via un réseau de 10 Go peut être "plus rapide" que la lecture des mêmes données à partir du disque local.
la principale différence entre la mise en cache sur le système de fichiers et l'utilisation de memcached est que memcached est une solution de mise en cache complète. Il y a donc des listes de LRU, le concept d'expiration( fraîcheur des données), certains de haut niveau opérations, comme ac/inc/dec/ajouter/ajouter/remplacer.
Memcached est facile à déployer et à surveiller (comment pouvons-nous distinguer la charge de travail "cache" sur le système de fichiers, disons le noyau? Peut-on calculer la quantité totale de données cachées? Distribution des données? Planification des capacités? Et ainsi de suite).
il y a aussi des systèmes hybrides, comme cachelot Fondamentalement, c'est memcached qui peut être intégré directement dans l'application, donc le cache serait accessible sans aucun appel de système ou les e / s réseau.
Vous êtes awefully vauge sur les détails. Et je crois que la réponse que vous cherchez dépend de la situation. À ma connaissance, très peu de choses ont tendance à être meilleures que l'autre tout le temps.
évidemment, il ne serait pas plus rapide de lire des choses du système de fichiers (en supposant que ce soit un disque dur). Même un SDD sera sensiblement plus lent que les lectures en mémoire. Et la raison en est que HDD / FileSystem est construit pour la capacité et non la vitesse, tandis que la mémoire de DDR est particulièrement rapide pour que la raison.
une bonne mise en cache signifie garder en mémoire les pièces fréquemment consultées et les choses moins fréquemment consultées sur le disque (stockage persistant). De cette façon, le cas normal serait grandement amélioré par votre implémentation de cache. Qui est votre objectif. Assurez-vous d'avoir une bonne compréhension de votre politique de mise en cache idéale. Qui nécessiteront une évaluation comparative et d'essais.
en fait, il n'est pas aussi simple que la lecture de mémoire est beaucoup plus rapide que la lecture de HDD. Comme vous le savez, Memcached est basé sur la connexion tcp, si vous faites la connexion à chaque fois que vous voulez obtenir sth ou mettre sth sur le serveur memcached(c'est ce que font la plupart des programmeurs), il fonctionne probablement mal que d'utiliser le cache de fichiers. Vous devez utiliser l'objet memcached statique, et réutiliser l'objet. Deuxièmement, les systèmes D'exploitation modernes vont mettre en cache des fichiers qui sont fréquemment utilisés, ce qui rend les caches de fichiers peut être plus rapide que les memcaches qui sont en fait des connexions TCP.
Ça dépend si le cache est stocké localement. Memcache peut stocker des données sur un réseau, qui n'est pas nécessairement plus rapide qu'un disque local.
Type de Cache / Cache Gets / sec
Array Cache / 365000
APC Cache / 98000
Fichier Cache / 27000
Memcached Cache (TCP / IP) / 12200
MySQL Query Cache (TCP / IP) / 9900
MySQL Query Cache (Unix Socket) / 13500
Selecting from table (TCP / IP) / 5100
Sélection à partir de la table (Unix Socket) / 7400
Source:
https://surniaulula.com/os/unix/memcached-vs-disk-cache/
Source de ma source :)
https://www.percona.com/blog/2006/08/09/cache-performance-comparison/