Analyse des performances du server Linux NFS

J'aimerais faire une parsing de notre server NFS pour aider à repérer les goulets d'étranglement potentiels dans nos applications. Le server exécute SUSE Enterprise Linux 10.

Le genre de choses que je cherche à savoir sont:

  • À quels files sont accessibles par lesquels les clients
  • Taux de lecture / écriture par client
  • Frais généraux imposés par d'autres appels RPC
  • Temps passé à attendre d'autres requests NFS, ou E / S disque, pour desservir un client

Je connais déjà les statistics disponibles dans /proc/net/rpc/nfsd et, en fait, j'ai écrit un article sur le blog en les décrivant en profondeur. Ce que je cherche est un moyen de creuser plus profondément et d'aider à comprendre les facteurs qui consortingbuent à la performance observée par un client particulier. Je souhaite parsingr le rôle joué par le server NFS dans la performance d'une application sur notre cluster afin que je puisse penser à des moyens de l'optimiser.

8 Solutions collect form web for “Analyse des performances du server Linux NFS”

Juste une idée, essayez de renifler le trafic nfs avec wireshark. Pourriez-vous vous dire quel user a accédé à quel file:

 tshark -R nfs -i eth0 

Je dois dire de tous les différents utilitaires * stat disponibles pour l'un, nfsstat est de loin le pire! Cela vous permet de regarder un tas de counturs, mais c'est tout. Si vous les regardez deux fois, VOUS devez faire le travail en essayant de déterminer combien chaque countur a changé et si vous souhaitez connaître le taux de changement, vous devez split par le nombre de secondes entre les échantillons. En toute équité, nfsstat remonte à de nombreuses années où les choses étaient encore assez grossières et n'est entravé par personne qui veut changer le format de sortie, car cela risquerait de briser beaucoup de choses.

En ce qui concerne l'utilisation de collectl pour surveiller nfs, il fournit une sortie nfsstat dans un format beaucoup plus facile à lire, mais ce qui est encore mieux, vous pouvez le laisser fonctionner pendant des heures ou des jours et lire datatables que vous avez collectées en arrière-plan. En ce qui concerne la request de voir les process en cours, collectl peut également recueillir des données de process, y compris la quantité d'E / S que chaque process effectue et même le reproduire en montrant les users d'E / S supérieurs. Vous pouvez également utiliser la fonctionnalité supérieure en time réel.

Si vous voulez regarder le thème des disques, collectl peut aussi le faire et afficher tout dans un affichage coordonné.

Vérifiez … -mark

collectl (en particulier son sous-système NFS ) est un très bon utilitaire qui pourrait être utile pour votre parsing, mais il ne correspond pas à votre list de besoins. Je ne connais aucun utilitaire Linux qui le fait.

(S'il vous plaît permettez-moi d'append cette note hors sujet: il existe un logiciel qui correspond à vos besoins: Analyste basé sur DTrace de Sun (pdf) – mais malheureusement n'est pas disponible sur Linux. Vous findez de nombreux exemples dans le blog de Brendan Gregg qui illustrent les capacités de cet outil.)

Consultez nfsstat. Cela ne montre pas tout ce que vous voulez, mais au less un bon sous-set.

http://linux.die.net/man/8/nfsstat

À mon avis, cela souligne le problème avec les outils d'aujourd'hui. On nous mentionne au less 3, y compris nfsstat, iostat et iotop. Ensuite, il y avait une mention passante de wireshare et nfsreplay. Est-ce que cela ressemble vraiment à une façon normale de faire les choses? Outre wireshark avec une catégorie à part entière, ne souhaiteriez-vous pas un outil?

Pour les openers, alors que je trouve la sortie d'iostat très utile, il est trop difficile à lire avec tous ces .00 dans les nombres. Collectl rapporte exactement les mêmes données, mais formaté beaucoup plus facilement sur les yeux. Vous savez déjà ce que je pense de nfsstat et puisque collectl peut lire toutes datatables, il n'est pas nécessaire d'utiliser un utilitaire 'replay'. En ce qui concerne 'iotop', collect peut également afficher les process sortingés par tout ce qui inclut les E / S.

Donc, vous l'avez tout inclus, avec des horodatages. Si vous avez besoin d'un intervalle de surveillance plus fin, vous pouvez toujours revenir à l'échantillonnage à 0,1 ou 0,5 seconde ou à tout autre élément, bien que vous génériez plus de frais généraux si vous surveillez les process rapidement, mais que vous utiliserez n'importe quel utilitaire de surveillance de process.

ET le bonus final est tout ce que vous collectez avec collectl, vous pouvez charger dans une feuille de calcul et compléter facilement ou utiliser colletto qui fait partie de collectl-utils.

-marque

Vous pouvez essayer nfswatch partir de http://nfswatch.sourceforge.net

Vous pouvez voir un exemple de sortie à http://prefetch.net/blog/index.php/2009/06/16/monitoring-nfs-operations-with-nfswatch/

nfswatch est un peu comme le top (même si je ne suis pas sûr s'il y a un mode batch). Une fois qu'il est en cours d'exécution, vous pouvez modifier l'affichage en appuyant sur une touche (p. Ex. "C" pour afficher les clients NFS à l'aide de votre server NFS).

Toutefois, nfswatch mes brefs essais, nfswatch ne semble pas fonctionner avec NFSv4.

Vous pouvez consulter nfsreplay. Cela pourrait vous aider à comprendre ce qui se passe. Aussi, vous pouvez find l'information et les liens utiles ici.

Je n'ai pas de meilleures réponses pour le moment, mais vous pouvez suivre le disque IO avec précision avec

 iostat -mx <delay in sec.> <devices> 

Il donne des numbers très utiles, en particulier la taille moyenne de la queue et le time d'attente (en ms) pour vos IO. Cela montre très facilement si vos disques sont un goulet d'étranglement, et si le goulot d'étranglement est un count ou un débit d'IO.

Ensuite, avec

 netstat -plaute | grep nfs 

Vous verrez les connections client et les octets transférés de chaque client en time réel. bouclez-le pour get des données continues. Il serait assez facile de créer un script qui fournit des données continues … Je travaille là-dessus 🙂

Maintenant, pour get IO par process, vous pouvez utiliser l'excellent iotop . Vous devez toujours find un moyen de faire correspondre les process nfsd avec les clients.

Pour quels files sont accessibles par quel client, je suis bloqué. Actuellement, les files actuellement lus / écrits à partir d'un client NFS n'apparaissent même pas dans la sortie de lsof.

Juste pour étendre sur netstat, utilisez watch -d pour voir comment les choses changent et sortingent par l'hôte

 watch -d "netstat -plaute | grep nfs | sort -k 4,5" 
  • SAN I / O est horrible
  • Comment les IOPS de stockage changent en réponse à la capacité du disque?
  • Comment puis-je réduire la charge du server pour un site inactif de WordPress utilisant W3 Total Cache?
  • Apache2 sur linux - comment suivre les problèmes de performances
  • Pourquoi mon access de lecture RAID1 est plus lent que l'access en écriture?
  • Centos exécutant Apache Tomcat continue à get "java.net.SocketException: trop de files ouverts"
  • Performances étranges nfs: 1 thread mieux que 8, 8 mieux que 2!
  • Puis-je avoir 2Gbit sur 1Gbit Nics
  • La requête brute PostgreSQL vs «Fonction returnne TABLE» - différence de performance insensée. Pourquoi?
  • Utilisation élevée du processeur sur machine Linux
  • Est-ce que l'IO lent sur mon server cloud provoque mes problèmes de redémarrage du server lent?
  • Les astuces du serveur de linux et windows, tels que ubuntu, centos, apache, nginx, debian et des sujets de réseau.