L'idée de base ici n'est probablement pas si mauvaise (juste très naïve et trompeuse): Il est possible que certains fichiers soient mis en cache, il est très peu probable qu'ils soient accessibles dans un avenir proche, par exemple les fichiers journaux. Ces béliers "dévoreurs", qui devront être libérés ultérieurement si nécessaire par le système d'exploitation, d'une manière ou d'une autre.
En fonction de vos paramètres de swappiness, de modèle d’accès aux fichiers, de modèle d’allocation de mémoire et de nombreuses autres choses imprévisibles, il peut arriver que lorsque vous ne libérez pas ces caches, ils seront ensuite forcés d’être réutilisés, ce qui prend un peu plus de temps que nécessaire. allouer de la mémoire à partir du pool de mémoire inutilisée. Dans le pire des cas, les paramètres swappiness de linux entraîneront l’échange de mémoire programme, car linux pense que ces fichiers risquent davantage d’être utilisés dans un avenir proche que la mémoire programme.
Dans mon environnement, Linux suppose assez souvent que c'est faux, et au début de la plupart des bourses européennes (vers 9 heures, heure locale), les serveurs commenceront à faire des choses qu'ils ne font qu'une fois par jour, en ayant besoin d'échanger de la mémoire qui était auparavant remplacée, car l'écriture Les fichiers journaux, les compresser, les copier, etc. remplissaient le cache au point d’échanger des éléments.
Mais laisser tomber les caches est-il la solution à ce problème? certainement pas. La solution serait de dire à Linux ce qu’il ne sait pas: ces fichiers ne seront probablement plus utilisés. Cela peut être fait par l'application d'écriture en utilisant des éléments tels que posix_fadvise()
ou en utilisant un outil de ligne de commande tel que vmtouch
(qui peut également être utilisé pour examiner des éléments ainsi que des fichiers en cache).
De cette façon, vous pouvez supprimer des caches les données dont vous n'avez plus besoin et conserver les éléments qui doivent être mis en cache, car lorsque vous supprimez tous les caches, de nombreux éléments doivent être relus à partir du disque. Et cela au pire moment possible: quand il est nécessaire; provoquant des retards dans votre demande qui sont perceptibles et souvent inacceptables.
Ce que vous devriez mettre en place est un système qui surveille vos habitudes d'utilisation de la mémoire (par exemple, si quelque chose est en train de permuter), puis analysez en conséquence et agissez en conséquence. La solution pourrait consister à expulser de gros fichiers en fin de journée à l’aide de vtouch; il pourrait également s'agir d'ajouter plus de RAM, car l'utilisation maximale quotidienne du serveur correspond à cela.