Acheter une offre plus grosse va vite, et c'est parfois juste. C'est aussi la façon la plus courante de dépenser de l'argent sur un problème qui était un index manquant ou un seul appel d'API lent. Dix minutes de mesure tranchent la question.

Manquez-vous vraiment de mémoire

free -h
vmstat 1 5

Dans vmstat, lisez les colonnes si et so : pages entrées et sorties du swap par seconde. Des valeurs non nulles qui durent veulent dire que la machine manque réellement de mémoire. Des zéros veulent dire que non, quoi que dise la colonne free.

Linux utilise exprès la mémoire libre comme cache disque. Une machine qui annonce presque pas de mémoire libre et aucun swap se porte bien - voyez RAM, swap, et quand le swap est un symptôme.

Ce que c'est plutôt, d'ordinaire

  • Une requête lente. Une requête sans index sur une table qui grossit. Voyez le journal des requêtes lentes.
  • L'attente de quelque chose d'autre - une API de paiement, un serveur de courrier, un flux distant - où le serveur est inactif et non occupé.
  • Le disque. Un iowait élevé dans top veut dire que le stockage est la limite ; plus de mémoire n'aide qu'en mettant en cache autour.
  • Un cœur de processeur saturé par une tâche mono-fil pendant que les autres restent inactifs.

Les lire séparément

top -b -n1 | head -15        # load, iowait, what is busy
iostat -x 1 3               # disk latency and utilisation
ss -s                       # connection counts

Quand plus de RAM est bel et bien la réponse

  • Un swap continu sous un trafic normal.
  • Un ensemble de travail de la base plus grand que ce que vous pouvez donner au buffer pool - voyez innodb_buffer_pool_size.
  • Un pool PHP que vous ne pouvez pas dimensionner assez grand pour votre trafic sans dépasser la mémoire.
Mesurez d'abord, montez d'offre ensuite. Un changement d'offre est facile à faire et pénible à défaire, et la requête lente est toujours là après - sur une machine plus chère, désormais.