[Processus] Priorité de processus sur un serveur (résolu)
[Processus] Priorité de processus sur un serveur (résolu)
Bonjour,
Dans le cadre d'un script de conversion de vidéos sur serveur je cherche à réduire la priorité du processus de conversion afin que le site ne soit pas ralentin durant l'opération.
Le serveur est un quad core à 2.6Ghz.
J'ai tenté d'utiliser cpulimit ( -l 50 ) et nice -n 10 sans succès aucun !! (le script est lancé en root)
Je ne trouve rien d'autre que ces deux commandes dans mes recherches ...
Dans le cadre d'un script de conversion de vidéos sur serveur je cherche à réduire la priorité du processus de conversion afin que le site ne soit pas ralentin durant l'opération.
Le serveur est un quad core à 2.6Ghz.
J'ai tenté d'utiliser cpulimit ( -l 50 ) et nice -n 10 sans succès aucun !! (le script est lancé en root)
Je ne trouve rien d'autre que ces deux commandes dans mes recherches ...
Dernière modification par Feng le dim. 21 oct. 2012, 21:28, modifié 2 fois.
- chipster
- Maître du Kyudo
- Messages : 2063
- Inscription : ven. 11 août 2006, 22:25
- Localisation : Saint-Étienne (42)
- Contact :
Re: Priorité de processus
Bonjour
Merci de modifier le titre du sujet comme il l'a été demandé lors de l'édition de celui-ci
Merci de modifier le titre du sujet comme il l'a été demandé lors de l'édition de celui-ci
- benjarobin
- Maître du Kyudo
- Messages : 17254
- Inscription : sam. 30 mai 2009, 15:48
- Localisation : Lyon
Re: [Processus] Priorité de processus sur un serveur
Tout d'abord pour nice 10 est la valeur par défaut donc tu ne risques pas d'avoir une limitation...
Il faut que tu lances le programme de cette façon
Il faut que tu lances le programme de cette façon
Code : Tout sélectionner
nice -n 19 mon-programme
Zsh | KDE | PC fixe : core i7, carte nvidia
Titre d'un sujet : [Thème] Sujet (état) / Règles du forum
Titre d'un sujet : [Thème] Sujet (état) / Règles du forum
Re: [Processus] Priorité de processus sur un serveur
Hum, c'est pas faux, ceci dit ça ne change rien en fait ^^'
Mes autres sites sur ce serveur tournant normalement, je me demande si c'est pas le fait que ce soit lancé en sous-processus apache qui créé ce ralentissement. En fait j'en suis convaincu ^^ . Est-ce que lancer la fonction de conversion via la commande system (présente dans quasiment tous les langages de programmation) pourrait éviter ce soucis ? Peut-être en nohup ?
Mes autres sites sur ce serveur tournant normalement, je me demande si c'est pas le fait que ce soit lancé en sous-processus apache qui créé ce ralentissement. En fait j'en suis convaincu ^^ . Est-ce que lancer la fonction de conversion via la commande system (présente dans quasiment tous les langages de programmation) pourrait éviter ce soucis ? Peut-être en nohup ?
- benjarobin
- Maître du Kyudo
- Messages : 17254
- Inscription : sam. 30 mai 2009, 15:48
- Localisation : Lyon
Re: [Processus] Priorité de processus sur un serveur
Je crains de comprendre... Dis moi pas que tu passe par un cgi pour lancer la conversion et que le programme de conversion reste toujours attaché à apache
Zsh | KDE | PC fixe : core i7, carte nvidia
Titre d'un sujet : [Thème] Sujet (état) / Règles du forum
Titre d'un sujet : [Thème] Sujet (état) / Règles du forum
Re: [Processus] Priorité de processus sur un serveur
Un script php qui lance un shell_exec (pas taper)
- benjarobin
- Maître du Kyudo
- Messages : 17254
- Inscription : sam. 30 mai 2009, 15:48
- Localisation : Lyon
Re: [Processus] Priorité de processus sur un serveur
Ok dans ce cas appel ce script avec ton shell_exec
Et tu l'appel de cette façon
J'ai mis sleep 30 comme exemple mais tu peux mettre n'importe quelle autre commande
Mais encore mieux, via un paquet
Puis
Code : Tout sélectionner
#!/bin/bash
daemonize() {
((
[[ -t 0 ]] && exec </dev/null
[[ -t 1 ]] && exec >/dev/null
[[ -t 2 ]] && exec 2>/dev/null
cd /
eval exec {3..255}\>\&-
exec setsid "$@"
) & ) &>/dev/null
}
daemonize nice -19 "$@"
shell_exec("chemin-script sleep 30");
J'ai mis sleep 30 comme exemple mais tu peux mettre n'importe quelle autre commande
Mais encore mieux, via un paquet
Code : Tout sélectionner
yaourt -S daemonize
Code : Tout sélectionner
shell_exec("daemonize /usr/bin/nice -19 sleep 30");
Zsh | KDE | PC fixe : core i7, carte nvidia
Titre d'un sujet : [Thème] Sujet (état) / Règles du forum
Titre d'un sujet : [Thème] Sujet (état) / Règles du forum
Re: [Processus] Priorité de processus sur un serveur
Merci !!
Par contre du coup je dois changer de stratégie, puisqu'en procédant ainsi, le script php n'attend pas la fin de la commande démonisée, je dois rajouter un curl pour informer le site que la conversion est terminée
Par contre du coup je dois changer de stratégie, puisqu'en procédant ainsi, le script php n'attend pas la fin de la commande démonisée, je dois rajouter un curl pour informer le site que la conversion est terminée
- benjarobin
- Maître du Kyudo
- Messages : 17254
- Inscription : sam. 30 mai 2009, 15:48
- Localisation : Lyon
Re: [Processus] Priorité de processus sur un serveur (RESOLU
daemonize possède une option pour écrire le PID de l’action en court, avec un peu d'Ajax cela se fait bien
Zsh | KDE | PC fixe : core i7, carte nvidia
Titre d'un sujet : [Thème] Sujet (état) / Règles du forum
Titre d'un sujet : [Thème] Sujet (état) / Règles du forum
Re: [Processus] Priorité de processus sur un serveur (RESOLU
La conversion est asynchrone : lorsqu'une nouvelle vidéo est envoyée, elle est mise en attente, puis sera convertie quand ce sera son tour. Je n'ai donc pas besoin de suivi pour le client via de l'Ajax :p
Néanmoins je peux mettre un while & sleep qui vérifiera si le processus est toujours en cours ou pas, dès qu'il ne l'est plus, on sort de la boucle. C'est pas super clean mais bon ...
Néanmoins je peux mettre un while & sleep qui vérifiera si le processus est toujours en cours ou pas, dès qu'il ne l'est plus, on sort de la boucle. C'est pas super clean mais bon ...
- benjarobin
- Maître du Kyudo
- Messages : 17254
- Inscription : sam. 30 mai 2009, 15:48
- Localisation : Lyon
Re: [Processus] Priorité de processus sur un serveur (RESOLU
En gros tu as besoin d'une FIFO, personnellement j'aurais implémenter ceci différemment.
Un petit script en python qui écoute sur un port UDP en local, et qui empile les messages et les dépile depuis un thread...
Le PHP ne ferait qu'envoyer l’événement via un message UDP au script python qui s'occupe de dépiler la FIFO
Je cite python mais cela peut très bien être Qt comme tout autre langage
Un petit script en python qui écoute sur un port UDP en local, et qui empile les messages et les dépile depuis un thread...
Le PHP ne ferait qu'envoyer l’événement via un message UDP au script python qui s'occupe de dépiler la FIFO
Je cite python mais cela peut très bien être Qt comme tout autre langage
Zsh | KDE | PC fixe : core i7, carte nvidia
Titre d'un sujet : [Thème] Sujet (état) / Règles du forum
Titre d'un sujet : [Thème] Sujet (état) / Règles du forum
Re: [Processus] Priorité de processus sur un serveur (RESOLU
Malheuresement je ne connais ni python ni Qt, je ne connais que le bash dans lequel j'arrive à me débrouiller.
Si je comprends bien tu parles d'un service indépendant qui recevrais l'instruction "converti la vidéo 1337" , qui irais la chercher et la convertirais, puis renverrais un signal à apache pour l'informer que la vidéo a été convertie ?
Si je comprends bien tu parles d'un service indépendant qui recevrais l'instruction "converti la vidéo 1337" , qui irais la chercher et la convertirais, puis renverrais un signal à apache pour l'informer que la vidéo a été convertie ?
Re: [Processus] Priorité de processus sur un serveur (résolu
Visiblement daemonize a un bug... je teste avec :
Et quand je fais un cat test, il est vide !
Tu pourrais m'expliquer ta fonction daemonize à toi stp ? Je veux bien l'utiliser mais je comprends tout juste sa structure :/
Code : Tout sélectionner
daemonize -p test /bin/echo "plop"
Tu pourrais m'expliquer ta fonction daemonize à toi stp ? Je veux bien l'utiliser mais je comprends tout juste sa structure :/
- benjarobin
- Maître du Kyudo
- Messages : 17254
- Inscription : sam. 30 mai 2009, 15:48
- Localisation : Lyon
Re: [Processus] Priorité de processus sur un serveur (résolu
Hum c'est normal, pour le PID
soit
On va dire que c'est un petit bug de daemonize
Code : Tout sélectionner
daemonize -c /chemin/ -p foo /usr/bin/sleep 0
Code : Tout sélectionner
daemonize -p /chemin/foo /usr/bin/sleep 0
Zsh | KDE | PC fixe : core i7, carte nvidia
Titre d'un sujet : [Thème] Sujet (état) / Règles du forum
Titre d'un sujet : [Thème] Sujet (état) / Règles du forum
Re: [Processus] Priorité de processus sur un serveur (résolu
Autant pour moi ... fallait comprendre que le working dir pour le démon c'était en fait pour daemonize et pas pour l'application démonisée !
Avoue que ça porte à confusion !!
Merci en tout cas
Code : Tout sélectionner
[feng@firemoon-desktop ~]$ daemonize --help
daemonize: illegal option -- -
Bad option: --
daemonize, version 1.7.3
Usage: daemonize [OPTIONS] path [arg] ...
OPTIONS
-a Append to, instead of overwriting, output files. Ignored
unless -e and/or -o are specified.
-c <dir> Set daemon's working directory to <dir>.
-e <stderr> Send daemon's stderr to file <stderr>, instead of /dev/null.
-E var=value Pass environment setting to daemon. May appear multiple times.
-o <stdout> Send daemon's stdout to file <stdout>, instead of /dev/null.
-p <pidfile> Save PID to <pidfile>.
-u <user> Run daemon as user <user>. Requires invocation as root.
-l <lockfile> Single-instance checking using lockfile <lockfile>.
-v Issue verbose messages to stdout while daemonizing.
Merci en tout cas