Réguler la consommation de RAM sur un serveur WSUS

Il arrive que WSUS et IIS qui fonctionnent de pair puissent déclencher fréquemment des alertes de sur-consommation de mémoire vive. Bien que cela n’impacte pas forcément les performances dudit serveur, il peut être nécessaire de forcer une « purge » du processus IIS exécutant le pool applicatif de WSUS afin que la consommation en RAM redescende.

Par exemple, ce matin :

Dans IIS, on peut « forcer » le pool applicatif de WSUS simplement nommé WsusPool à faire un recyclage des ressources systèmes qu’il occupe. Il suffit de sélectionner ce pool et de cliquer sur les options de recyclage (et non l’action de recyclage elle-même avec son icône de flèches vertes). Une fenêtre s’ouvre alors, proposant diverses options :

La fenêtre des options de recyclage permet de choisir une échéance de temps, de nombre de requêtes ou de consommation de mémoire vive, ou plusieurs à la fois.

On choisit donc les options qui nous conviennent : dans mon cas, en plus de l’intervalle de temps entre deux recyclages, j’ai défini un maximum de mémoire vive (à adapter en fonction de la charge souhaitée sur le serveur, il est évident que si l’on décide de n’y allouer que 500 Mo, les performances vont en pâtir), mais c’est optionnel. Une fois ce choix validé, nous pouvons lancer à la main un recyclage :

IIS va donc recycler le pool : cela signifie qu’il va créer un autre processus exécutant ce pool, puis transférer la charge mémoire du premier vers le nouveau, en faisant le « ménage » parmi ce dont il n’a plus besoin.

Le recyclage est en cours, le premier processus se vide en faveur du deuxième avant de disparaître.

Ainsi, la consommation en RAM a bien chuté et ne pourra dépasser 4 Go. Bien évidemment, cette limite n’est pas obligatoire ; en cas de surcharge ponctuelle du serveur, on peut toujours déclencher un recyclage manuel qui aura le même effet.

Installation des VMware Tools sur Debian 4

J’ai dû installer aujourd’hui des VMware Tools sur une machine Debian Etch.

La documentation VMware est plutôt complète et ne voulant pas utiliser le paquet open-vm-tools, j’ai quand même décidé d’en faire un article même si l’installation est plutôt aisée pour qui est adepte de GNU/Linux, ce qui n’est pas tellement mon cas dans un contexte professionnel.

A noter qu’il peut être nécessaire de procéder à un snapshot de la machine virtuelle si une installation des paquets additionnels gcc, make, binutils ainsi que les sources du kernel est souhaitée pour utiliser toutes les fonctionnalités des outils ; dans ce cas précis, j’ai installé ces paquets en pré-requis.

apt-get update
apt-get install make gcc binutils

Ensuite, il faut récupérer la source du kernel propre à la version de Debian exécutée. On la récupère grâce à uname -r. Par exemple, pour une Debian 4.0, on est sur une version de kernel 2.6.18. Pour se faciliter la tâche, on utilisera le retour de l’instruction comme nom de paquet.

apt-get install linux-image-$(uname -r)

Tout d’abord, monter le disque virtuel des vmtools sur l’enveloppe de machine virtuelle via l’interface VMware, puis la monter dans l’OS. En fonction de la configuration, cela pourra être /dev/cdrom ou /dev/cdrom1 ; dans cet exemple j’utiliserai /dev/cdrom1. On monte donc dans le répertoire /media/cdrom, en s’assurant qu’il existe avant d’envoyer l’instruction :

mount /dev/cdrom1 /media/cdrom

On créé ensuite un répertoire à l’emplacement de son choix pour copier les sources en local et pouvoir extraire l’archive. Dans mon cas, n’ayant qu’un utilisateur root, je l’ai créé dans /root/vmtools.

mkdir /root/vmtools
cd /media/cdrom

En faisant un ls -l, on peut constater que le disque a bien été monté et que divers fichiers remontent :

Ensuite, on copie ces fichiers vers le répertoire fraîchement créé :

cp * /root/vmtools

Puis on procède à l’extraction de l’archive :

cd /root/vmtools/
tar xzf VMwareTools-<version>.tar.gz

Cette extraction va nous donner un dossier vmware-tools-distrib dans lequel on exécutera vmware-install.pl. Il ne reste ensuite plus qu’à suivre l’assistant d’installation, les valeurs par défaut couvrant une grosse majorité des besoins. En fonction des paquets installés sur la machine, l’assistant se plaindra de l’absence de certains d’entre eux (comme gcc, binutils et make ainsi que le linux-image que j’ai évoqué plus haut) qui pourront bloquer certaines fonctionnalités si ils ne sont pas installés.

Powershell : fermeture de session inactives à distance

Suite à un besoin récurrent, j’ai développé un script Powershell permettant de mettre fin à tous les sessions déclarées comme inactives sur un serveur Windows distant. Il est constitué d’une fonction qui est chargée de terminer les sessions et de quelques instructions appelant cette fonction ; une fois un serveur traité, le script demande si l’utilisateur souhaite traiter un autre serveur.

A noter qu’il faut naturellement des droits d’administration sur les serveurs sur lesquels une session doit être terminée.

$kick = "Y"
function Kick {
param ($srv)
$quout = quser /server:$srv
$status = "Disc"
$indexs = 2
$indexu = 1
$sid = (($quout | Where-Object { $_ -match $status }) -split ' +')[2]
while ($sid -ne $null)
{
$username = (($quout | Where-Object { $_ -match $status }) -split ' +')[$indexu]
$sid = (($quout | Where-Object { $_ -match $status }) -split ' +')[$indexs]
if ($sid -eq $null) { break }
Write-Host "User :"$username
Invoke-RDUserLogoff -HostServer $srv -Unifiedsid $sid -Force
$indexu = $indexu+8
$indexs = $indexs+8
Write-Host "Session has been terminated."
Start-Sleep -Seconds 3
}
}
Write-Host "Force close disconnected session script for Windows 2008 and 2012"
while ($kick -eq "Y")
{
$srv = Read-Host "Server Name"
kick($srv)
$kick = Read-Host "Do you want to process another server ? Y/N"
}

Une bien fine technique de sioux pour récupérer en local un bloc-notes OneNote stocké sur OneDrive

J’utilise OneNote pour prendre des notes, stocker des scripts et de la documentation personnelle. Pour des raisons pratiques, je garde mon bloc-notes en local et fais régulièrement un upload du répertoire du bloc-notes sur OneDrive.

Cependant, j’ai commis l’erreur d’ouvrir depuis l’application intégrée à Windows 10 (qui est aussi pauvre et mal pensée que celle sur OS X), ce qui fait qu’au lieu d’avoir dans mon répertoire avec les fichiers de manière éclatée comme en local, j’obtiens un simple lien :

Un simple lien insupportable car OneNote 2010 est incapable de le lire alors que c’est sa version d’origine, et une ouverture avec un Office complet en 2016 est également impossible. En gros, mon notebook était tout simplement condamné à être utilisé en web ou via les versions gratuites de OneNote. Je décide donc de tenter de ruser :

  • Tout d’abord, télécharger le répertoire qui contient le lien via un navigateur web : aucun effet, un zip de 657 octets avec un fichier dedans m’indiquant que OneDrive n’a pas pu récupérer le fichier notebook. 
  • Deuxième essai : via le client OneDrive ; pas mieux, je récupère un fichier .url tout aussi inutile.
  • Troisième essai : j’ouvre le fichier sur OneNote pour macOS et je fouine dans le cache dans la librairie utilisateur et les répertoires Microsoft ; je n’ai qu’une liste de dizaines de fichiers de cache complètement inexploitables qui ne ressemblent pas aux fichiers habituels .one qui constituent un notebook.
La quatrième tentative fut la bonne, et elle m’a demandé de creuser un peu ; il faut donc vraiment avoir besoin de son notebook (en réalité, copier-coller le contenu des nouvelles sections et pages vers une version de backup locale aurait pris moins de temps mais hors de question de m’avouer vaincu par cette politique de OneDrive ou rien). J’ai donc utilisé une vieille VM Windows 7 équipée d’un pack Office 2016 et pour récupérer la vue éclatée de mes fichiers (car en réalité sur OneDrive Web, l’affichage montre un simple fichier tandis que l’explorateur montre la version complète), j’ai utilisé le navigateur par défaut de Windows 7 qui est IE8, puis j’ai été sur OneDrive, et j’ai pu récupérer le lien WebDav de mon répertoire grâce à une option accessible uniquement sur les navigateurs qui ne sont plus officiellement pris en charge, grâce au formulaire d’upload de fichiers :
En cliquant, cela m’ouvre un explorateur Windows, depuis lequel un simple aperçu des propriétés me permet de récupérer le chemin WebDav que je vais pouvoir ensuite exploiter sur n’importe quelle autre machine :
Du coup, sur mon OneNote 2016 et ma VM Windows 7, pas de problèmes pour l’ouvrir et le modifier après avoir réalisé une copie locale du contenu du répertoire, par contre, il semblerait qu’il n’y ait pas de rétrocompatibilité avec Office 2010 (testé sur une autre machine en Windows 10)… ce qui ne me pose finalement pas de problème. J’ai donc mon notebook en local et il ne me reste plus qu’à rester fidèle au client lourd OneNote… et à ne plus synchroniser sur OneDrive mais simplement sauvegarder une archive zip du notebook.