Horoa – La voie est libreLa voie est libre

Paramétrer convirt 2

Dans un précédent article je présentais l’installation et la configuration de convirt dans un environnement Debian.
Au fur et à mesure que votre architecture de virtualisation grandi ou simplement muri, les paramètres de base de convirt deviennent inappropriés.
Cela se traduit généralement par des lenteurs (au niveau des requêtes SQL notamment), des trous dans les statistiques de ressources de l’architecture, et des messages d’erreurs (que vous recevez dans votre boite mail si vous avez correctement configuré votre module SMTP) du genre:

Task failed at 2011-07-13 06:44:40 Task submission failed because all worker threads are occupied. Please increase the number of threads.
ou
Update node availability Task failed at 2011-07-28 18:06:12 (OperationalError) (1205, 'Lock wait timeout exceeded; try restarting transaction') u'INSERT INTO cms_locks (sub_system, entity_id, operation, table_name) VALUES (%s, %s, %s, %s)' ['AvailState', '9a893ea6-ebe1-1ff4-8a5a-dfae235979de', 'MANAGED_NODE', 'avail_current']
ou
The transaction is inactive due to a rollback in a subtransaction. Issue rollback() to cancel the transaction.
ou
Collect Metrics Task failed at 2011-07-28 18:01:37 (OperationalError) (1205, 'Lock wait timeout exceeded; try restarting transaction') u'INSERT INTO cms_locks (sub_system, entity_id, operation, table_name) VALUES (%s, %s, %s, %s)' ['Metrics', '9a893ea6-ebe1-1ff4-8a5a-dfae235979de', 'CollectMetrics', 'metrics/metrics_curr']

Voici quelques ajustements qui permettent de se débarraser de ce type de problèmes et de retrouver une installation pérenne de convirt.

Avant toute chose, Arrêtez convirt et faites un backup de la base de donnée!

Corriger le système de lock:

Récupérer le patch suivant (fournit par convirt) http://www.convirture.com/forums/download/file.php?id=300 et appliquez le afin de modifier le système de locking interne à convirt.

# be convirt user or whatever user you use to run it
convirt@cms:~$ cd /var/lib/convirt # or cd to whatever convirt working directory you're using
convirt@cms:~$ wget http://www.convirture.com/forums/download/file.php?id=300
convirt@cms:~$ mv file.php?id=300 cms_lock.diff
convirt@cms:~$ patch -p0 < cms_lock.diff

Purge des données

Si vous êtes en train d’installer convirt et qu’il n’a pas encore collecté de données statistiques, vous êtes un petit veinard, et vous pouvez sauter cette étape. Si au contraire convirt tourne depuis un petit moment avec les paramètres par défaut, il est probable que votre base de données contient une bonne quantités de données inutiles (données collectées pour les statistiques). Nous allons donc ici vidées ces données qui chargent inutilement la base.
Malheureusement la suppression de ces données nécessite la création préalable d’un index de façon à ne pas se retrouver les pieds enracinés dans le sol à force d’attendre que la purge se termine. La création de l’index est un processus long, mais bien moins long que la suppression des données sans utiliser le dit index… alors patience!

convirt@cms:~$ mysql -u root -p convirt
mysql> alter table metrics add index `m_rype_cdate` (`metric_type`,`cdate`)

Maintenant que vous avez bien patienté, je vous annonce qu’on détruira cet index à la fin… Non, non pas de remerciements, ça me fait plaisir!
Passons à la purge proprement dite. On va utiliser un script SQL pour vider les données statistiques que nous considérons inutiles. On peut par exemple considérer qu’au delà de 15 jours il n’est plus pertinent de conserver des données non consolidées. Ça ne supprime pas l’historique des stats à proprement parlé, mais disons qu’au delà de la période définit on perd un certaine précision (un peu comme avec une base de données RRD).

convirt@cms:~$ wget http://www.convirture.com/forums/download/file.php?id=317
convirt@cms:~$ mv file.php?id=317 cleanup_metrics.sh.gz
convirt@cms:~$ gzip -d cleanup_metrics.sh.gz
convirt@cms:~$ ./cleanup_metrics.sh 15 days -u root -p convirt # refer to the following post for details on syntax

On peut maintenant suppprimer l’idex créé précédemment:

ALTER table `metrics` DROP INDEX `m_rype_cdate`;

Modification de la configuration par défaut

On va maintenant modifier le fichier src/convirt/web/convirt/development.ini qui contient les paramètres de l’application pour yajuster les variables suivantes:

services.execution.num_threads = 50
purge_raw_data = 15

Les indexes SQL

Si vous souhaitez accélérer encore la collecte des statistiques vous pouvez créer les indexes suivants:

ALTER table `cms_locks` ADD INDEX `cmsl_subsys_eid_ope_tname` (`sub_system`, `entity_id`, `operation`, `table_name`);
ALTER table `metrics` ADD INDEX `eid_cdate` (`entity_id`, `cdate`);

Redémarrez maintenant convirt, vous devriez être plus tranquille à l’avenir.

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *