Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
953 connectés 

  FORUM HardWare.fr
  Programmation
  PHP

  Utilisation processeur Apache/php

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Utilisation processeur Apache/php

n°2101943
grosbin
OR die;
Posté le 17-09-2011 à 14:21:42  profilanswer
 

Bonjour,
en observant de plus près les logs de mon serveur ..  
Lorsque mon script de sauvegarde de ma db (php) tourne, ainsi que certains traitements lourds d'entretien .. ce dernier monopolise tout le processeur, parfois sur 40, voir 50 sec ..
 
Le fait accomplit, lorsque le serveur reçoit d'autres connexions (lorsque ce script tourne),  
de nombreuses lignes de logs de visiteurs normaux aboutissent à une erreur 500
( timeout > 30 sec d'éxecution php ), en cascade ..
 
Y'à t-il un moyen de limiter l'usage du processeur par processus php, genre 50%,  
ou de déclarer cela via un "ini_set", afin de limiter ces congestions soudaines ?
 
Merci  :jap:

Message cité 1 fois
Message édité par grosbin le 17-09-2011 à 14:31:36

---------------
Photos Panoramiques Montagnes Haute Savoie
mood
Publicité
Posté le 17-09-2011 à 14:21:42  profilanswer
 

n°2101967
spamoi
Posté le 17-09-2011 à 18:13:13  profilanswer
 

Question peut-être bête, mais pourquoi ne pas laisser le proc à 100% ? tu as d'autres services sur ton serveur ?

n°2101974
grosbin
OR die;
Posté le 17-09-2011 à 19:11:25  profilanswer
 

pour permettre aux visiteurs sur d'autres page d'accèder aux sites au lieu d'être bloqués ..


---------------
Photos Panoramiques Montagnes Haute Savoie
n°2102048
spamoi
Posté le 18-09-2011 à 11:29:24  profilanswer
 

Sous Windows tu peux toujours utiliser cet utilitaire http://bitsum.com/prolasso.php  
 
Sous Linux il y a ça: http://www.howtoforge.com/how-to-l [...] ian-ubuntu


---------------
₪₪₪ Waze, GPS gratuit pour Androïd et iPhone ₪₪₪
n°2102210
CyberDenix
Posté le 19-09-2011 à 14:23:31  profilanswer
 

1) Assure-toi que tu n'es pas en mode php-cgi (ce mode est très consommateur de ressources)
 
2) Fait de temps à autre des sleep ou des usleep (Voir la doc PHP)
 
3) Choppe la consommation CPU si t'es sous Unix :
 

Code :
  1. <?php
  2.  
  3. function getCpuUsage() {
  4.  $out      = shell_exec('ps aux|awk \'NR > 0 { s +=$3 }; END {print s}\'');
  5.  $cpuUsage = strtr(trim($out), array("\n"=>'', "\r"=>''));
  6.  return $cpuUsage;
  7. }
  8.  
  9. while (getCpuUsage() > 50) {
  10.  sleep(1);
  11. }
  12.  
  13. ?>


Message édité par CyberDenix le 19-09-2011 à 14:28:36

---------------
Directeur Technique (CTO)
n°2102216
grosbin
OR die;
Posté le 19-09-2011 à 14:53:00  profilanswer
 

pas bête, mais si par exemple, le script appelle du shell, qui met 50 sec à s'executer ..  
le process ne pourra pas sleeper tant que le retour du shell n'est pas complet ??


---------------
Photos Panoramiques Montagnes Haute Savoie
n°2102227
CyberDenix
Posté le 19-09-2011 à 15:13:01  profilanswer
 

Je te rassure, un ps aux, c'est très rapide. Mais tu peux aussi l’exécuter en background avec un &, si tu veux :)


---------------
Directeur Technique (CTO)
n°2102236
grosbin
OR die;
Posté le 19-09-2011 à 15:30:28  profilanswer
 

Mhhh ce serait sympa que tu m'indiques la démarche du "&" merci bcp pour ta réponse :)


---------------
Photos Panoramiques Montagnes Haute Savoie
n°2102284
CyberDenix
Posté le 19-09-2011 à 17:50:13  profilanswer
 

A la fin de la ligne de commande tu ajoutes :
 
 > /dev/null 2>/dev/null &
 
Ce qui a pour effer de lancer la commande en background, en redirigeant les sorties 1 (standard) et 2 (erreur) vers /dev/null (poubelle).
 
C'est à mon avis inutile dans ton cas, pour récupérer un ps aux !
Autant faire le sleep() tout seul dans ce cas :sweat:  
 
Par contre, pour lancer un programme en arrière plan et/ou faire du multithreading, c'est d'la bombe atomique [XP perso inside] :)


Message édité par CyberDenix le 19-09-2011 à 17:52:41

---------------
Directeur Technique (CTO)
n°2102385
MEI
|DarthPingoo(tm)|
Posté le 20-09-2011 à 10:34:54  profilanswer
 

grosbin a écrit :

Bonjour,
en observant de plus près les logs de mon serveur ..  
Lorsque mon script de sauvegarde de ma db (php) tourne, ainsi que certains traitements lourds d'entretien .. ce dernier monopolise tout le processeur, parfois sur 40, voir 50 sec ..
 
Le fait accomplit, lorsque le serveur reçoit d'autres connexions (lorsque ce script tourne),  
de nombreuses lignes de logs de visiteurs normaux aboutissent à une erreur 500
( timeout > 30 sec d'éxecution php ), en cascade ..
 
Y'à t-il un moyen de limiter l'usage du processeur par processus php, genre 50%,  
ou de déclarer cela via un "ini_set", afin de limiter ces congestions soudaines ?
 
Merci  :jap:


D'un côté on ne fait pas de traitement de maintenance sur une base de prod. n'importe quand.
Programme la nuit le via crontab ou autre et puis voilà... :spamafote:
 
D'autant que vu qu'il n'y a aucune raison qu'une instance PHP ralentisse drastiquement une autre instance PHP, je suppose que le timeout est du à la BDD qui doit être +/- à la ramasse et/ou lockée à cause des traitements de maintenance.


---------------
| AMD Ryzen 7 7700X 8C/16T @ 4.5-5.4GHz - 64GB DDR5-6000 30-40-40 1T - AMD Radeon RX 7900 XTX 24GB @ 2680MHz/20Gbps |
mood
Publicité
Posté le 20-09-2011 à 10:34:54  profilanswer
 

n°2102392
grosbin
OR die;
Posté le 20-09-2011 à 11:18:28  profilanswer
 

c'est exact je l'ai programmé pour 3h du mat, à usage minimum.
Le lockage se fait car attente de résultats d'une commande de shell (30sec)
et lockage bdd sur 15 sec environ pour le backup


---------------
Photos Panoramiques Montagnes Haute Savoie
n°2102412
CyberDenix
Posté le 20-09-2011 à 12:35:10  profilanswer
 

Aaaaahhh, d'accord !  
 
Si c'est réellement la commande shell qui bloque (et non la BDD), alors effectivement lancer cette commande en arrière plan pourra t'aider !
 

Code :
  1. ma_commande > /dev/null 2>/dev/null &


 

Code :
  1. <?php
  2.  
  3. // Background process :
  4. // We do not wait the command execution to return
  5. shell_exec('ma_commande > /dev/null 2>/dev/null &');
  6.  
  7. ?>


---------------
Directeur Technique (CTO)

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  PHP

  Utilisation processeur Apache/php

 

Sujets relatifs
utilisation de la propriete innerHTML dans une fonction JS[apache] protection sur un alias
Problème de l'utilisation de Scanner ( dans java )Installer conjointement les dernières versions PostgreSQL et Apache 2
[Qt] Utilisation de telnet dans une application[Scilab] Problème utilisation fonction datafit
Utilisation d'une liste chainées[Apache 2] Configurer un Proxy pour être accessible sur un réseau
EXCEL VBA - Utilisation chemin d'accès d'1 formuleXSLT: utilisation de la fonction position() dans <for-each> imbriqués
Plus de sujets relatifs à : Utilisation processeur Apache/php


Copyright © 1997-2025 Groupe LDLC (Signaler un contenu illicite / Données personnelles)