Haut% de charge CPU wa lors de l'exécution PHP comme CLI

voix
2

Désolé pour la question vague, mais je viens d'écrire un code php qui s'exécute comme CLI, et je suis sûr qu'il est mauvais comportement. Quand je lance « top » sur la ligne de commande, il est montrant très peu de ressources données à un processus individuel, mais entre 40-98% à temps iowait (% wa). J'ai habituellement environ 0,7% réparti entre% et nous% sy, avec les ressources restantes vont au ralenti des processus (quelque part entre 20-50% habituellement).

Ce serveur exécute requêtes MySQL dans, facilement, 300x le temps qu'il faut d'autres serveurs pour exécuter la même requête, et il faut même ce qui semble être une éternité pour se connecter via SSH ... donc, malgré qu'il y ait un peu de temps cpu ralenti reste, il semble clair que quelque chose de très mauvais se passe. Quels que soient les scripts sont en cours d'exécution, mettent à jour ma base de données MySQL, mais il semble être plus lent de façon exponentielle alors quand ils ont commencé.

J'ai besoin des idées pour servir de points de lancement pour moi de diagnostiquer ce qui se passe.

Certaines choses que je voudrais savoir sont les suivants:

  1. Comment puis-je confirmer combien de scripts sont en cours d'exécution en fait
  2. Y at-il de toute façon de confirmer que ces scripts sont effectivement en train de fermer quand ils sont à travers, et pas seulement « traîner » prendre le temps de CPU et de la mémoire?
  3. Quel genre de goulots d'étranglement dois-je vérifierai pour vous assurer que je ne crée pas trop de cas de ce script si cela ne se reproduise pas.

Je sais que cela est probablement une grande question, mais je suis plus que disposé à suivre les liens fournis et lire sur ce ... Je veux juste savoir où commencer à chercher.

Créé 17/08/2010 à 16:55
source utilisateur
Dans d'autres langues...                            


2 réponses

voix
4

Haut iowait signifie que la bande passante de disque est saturé. Cela pourrait être juste parce que vous inonder votre serveur MySQL avec trop de requêtes, et il plafonnait le disque en essayant de charger les données pour les exécuter.

Sinon, vous pourriez être à court de mémoire physique, ce qui provoque de grandes quantités de disque IO pour échanger.

Pour commencer le diagnostic, exécutez vmstat 60pendant 5 minutes et vérifiez la sortie - les siet socolonnes swap et échange-out, et biet bolignes montrent d' autres IO. (Modifier votre question et coller la sortie dans plus d' aide).

Créé 18/08/2010 à 04:54
source utilisateur

voix
0

Haut iowait peut signifier que vous avez un disque lent / défectueux. Essayez le vérifier avec un moniteur de disque SMART.

http://www.linuxjournal.com/magazine/monitoring-hard-disks-smart

  1. ps auxww | grep SCRIPTNAME
  2. même.
  3. Pourquoi vous utilisez plus d'une instance de votre script pour commencer?
Créé 18/08/2010 à 02:51
source utilisateur

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more