Vous êtes ici : Accueil Zaclys Astuces / Les rubriques / Informatique / Système d'exploitation / Linux / SysAdmin

Voir un article

nextcloud tuning : renice some users

pour ralentir certains users...

1/ crer un script php adapté, par exemple /var/www/html/zcool.php

<?php
 
// config                                                                                                      
$NBVCORES=40;
$DEBUG=0;
 
// inits                                                                                                        
$buf=$uid=$quota=null;
 
// letsgo                                                                                                       
$uid = OC::$server->getSession() ? OC::$server->getSession()->get('user_id') : null;
if ($uid != null ) $quota = OC_Util::getUserQuota( $uid );
 
// hopla                                                                                                        
if ( true  ) {
 
  $loadavg=100;
  // check load avg du serveur en %                                                                             
  $fd=@fopen('/proc/loadavg','r');
  if ( $fd ) {
    if ( $loadavg =  fscanf($fd, "%f")) {
      fclose ($fd);
      $loadavg = ceil( $loadavg[0] *100 / $NBVCORES );
    }
  }
 
  // hache si charge à 200%                                                                                     
  if ($loadavg > 200) exit();
 
  //  bride si charge > 30% :                                                                                   
  if ( $loadavg > 30 ) {
 
 
      $level=0;
      if ( $uid != null && $quota >0 ) $level = $quota / 5368709120;
      if ( $level<1 ) $level = 0 ;
 
      $bride= $loadavg / 100 * 1000000;   // 100% = 1 sec en millionieme de seconde                             
      if ($uid == null ) $bride/=5;  // anonymes : be cool (login et partages...)      
      else if ($level==0 ) $bride*=5;  // ecossais           
      else if ($level >= 2 ) $bride/= ( 3*$level);  // adhérents L2+ 
                    
      if ($bride<0) $bride=0;
      $bride=ceil($bride);
 
     // debug ?                                                                                                 
     if ($DEBUG) {
        if ($uid== null ) $uid = 'ANONYME';
        else if ($level == 0 ) $ecossais = "ECOSSAIS";
       $buf = "$loadavg% $bride microsec / level $level uid $uid $ecossais \n";
       $fd=fopen("/dev/shm/zcool.debug","a+");
       fputs($fd, $buf);
       fclose($fd);
     }
 
     usleep($bride);
 
  }
}
?>
 
 

2/ patcher nextcloud pour appeler ce "nice" script aux endroits stratégiques :

* on mode soft (tres insuffisant) modifier nextcloud/index.php                                                  
*     apres :  require_once __DIR__ . '/lib/base.php';                                                          
*   ajouter :  require('/var/www/html/zcool.php');                                                              
*                                                                                                               
* on mode sérieux (car certains appels ajax ne passent pas par index.php)                                       
* dans nextcloud/lib/private/legacy/user.php :                                                                  
*    dans la fonction : getUser()                                                                               
*    ajouter en 1ere ligne : require('/var/www/html/zcool.php');                                                
*    (NB : ici il sera appelé entre 5 et 15x pour chaque page... )                                              
*                                                                      


3 585 clics - Créé le 21/01/2015 17:54 par MereZaclys - Modifié le 06/09/2019 15:13



Réagissez, commentez, discutez ...

InfoSoyez le premier à réagir !



Partager ?

diaspora  G+  facebook  twitter  Digg  Yahoo  Delicious  Technorati  myspace


Voir d'autres articles en rapport avec celui-ci ?



Stats des clics sur cet article : cliquez ici »



Vous voulez contribuer et publier un article dans cette rubrique ?

InfoMerci de vous identifier ou de vous créer un compte si ce n'est pas déjà fait.


ATTENTION
Vous êtes ici sur l'ancien site de l'association Zaclys.
Depuis 2019 notre site est ici : nouveau site Zaclys

icone user Me connecter :

InfoMerci de saisir vos identifiants.




Me reconnecter automatiquement à chaque visite sur ce navigateur :
               





retour






Plan du site | Aide | Mentions légales et CGU | RGPD | Travaux et incidents | Budget | Faire un don | Chouchen | Z pub | Logo et prospectus

© Association la mère Zaclys 1998-2021  - Zaclys v2.5

Suivez nous sur Diaspora, Mastodon, Google+, FaceBook ou Twitter