You are not logged in.
Environnement
GLPI 0.72
- Plugins:
- Adressage IP 1.7.0
- Applicatifs 1.5.0
- Applications web 1.5.0
- Certificats 1.5.0
- Domaines 1.2.0
- Gestion de racks 1.0.0
- Import OCS 1.3.0
- Liaisons 1.5.0
- Projet 1.0.0
- Relations 1.1.0
Constat
Le temps d'affichage de la vue "Logiciels" est extrêmement long, de l'ordre de 2mn30, lorsque la vue contient les champs suivants: Nom, Catégorie, Fabricant, Nom - Versions, Plateforme, Nombre - Installations, Nombre - Licences. Cette lenteur vient de la requête SQL correspondante. Lancée depuis le client mysql en ligne de commande, le temps d'obtention du résultat est du même ordre que via l'interface de GLPI.
mysql> SELECT glpi_software.FK_entities, glpi_software.recursive, glpi_software.name AS ITEM_0, glpi_software.ID AS ITEM_0_2, glpi_dropdown_software_category.name AS ITEM_1, glpi_dropdown_manufacturer.name AS ITEM_2, GROUP_CONCAT( DISTINCT glpi_softwareversions.name SEPARATOR '$$$$') AS ITEM_3, glpi_dropdown_os.name AS ITEM_4, COUNT(DISTINCT glpi_inst_software.ID) AS ITEM_5, FLOOR( SUM(glpi_softwarelicenses.number) * COUNT(DISTINCT glpi_softwarelicenses.ID) / COUNT(glpi_softwarelicenses.ID) ) AS ITEM_6, MIN(glpi_softwarelicenses.number) AS ITEM_6_2, glpi_software.ID AS ID FROM glpi_software LEFT JOIN glpi_dropdown_software_category ON (glpi_software.category = glpi_dropdown_software_category.ID) LEFT JOIN glpi_dropdown_manufacturer ON (glpi_software.FK_glpi_enterprise = glpi_dropdown_manufacturer.ID) LEFT JOIN glpi_softwareversions ON (glpi_software.ID = glpi_softwareversions.sID) LEFT JOIN glpi_dropdown_os ON (glpi_software.platform = glpi_dropdown_os.ID) LEFT JOIN glpi_inst_software ON (glpi_softwareversions.ID = glpi_inst_software.vID) LEFT JOIN glpi_softwarelicenses ON (glpi_software.ID = glpi_softwarelicenses.sID ) WHERE glpi_software.deleted='0' AND glpi_software.is_template='0' GROUP BY glpi_software.ID;
...
2011 rows in set, 1 warning (2 min 26.10 sec)
mysql>
A noter:
- Si supprime le champ "Nombre - Licences" de la vue initiale, alors l'affichage de la vue est quasi immédiat.
- Si supprime le champ "Nombre - Installations" de la vue initiale, alors l'affichage de la vue est quasi immédiat.
Il semble donc que la conjonction des champs "Nombre - Licences" et "Nombre - Installations" soit la cause du problème.
PS. Le warning MySQL, reproduit ci-dessous pour information, n'est pas lié au problème car on le retrouve à l'identique que la requête SQL soit longue ou pas.
mysql> show warnings;
+---------+------+--------------------------------------+
| Level | Code | Message |
+---------+------+--------------------------------------+
| Warning | 1260 | 1 line(s) were cut by GROUP_CONCAT() |
+---------+------+--------------------------------------+
1 row in set (0.00 sec)
Offline
Taille de la Base ?
> Il semble donc que la conjonction des champs "Nombre - Licences" et "Nombre - Installations" soit la cause du problème.
Oui.
Pas trop le choix, on est obligé de balayer les machines pour vérifier leur entité et leur statut (supprimé ou non)
Si vous avez une solution ?
+
P.S. enfin normalement ça ne concerne que les "Installations", le nombre d'objets licences est en principe très faible (sauf si la valeur par défaut "Acheté" était positionné et qu'il a créé, lors de la migration, une licence pour chaque logiciel installé en 0.71)
Dév. Fedora 29 - PHP 5.6/7.0/7.1/7.2/7.3/7.4 - MariaDB 10.3 - GLPI master
Certifié ITILv3 - RPM pour Fedora, RHEL et CentOS sur https://blog.remirepo.net/
Offline
Taille de la Base ?
Pas énorme: 47 Mo.
Offline
Etrange alors...
Avec une base de 3Go (plus d'1 million d'objets), j'ai le résultat en 70" (ok sur une entitié de 700 machines)
Mais bon, faudrait effectivement trouver une solution d'optimisation.
Mais ça passera sans doute par une redondance d'informations, jamais souhaitable...
+
Dév. Fedora 29 - PHP 5.6/7.0/7.1/7.2/7.3/7.4 - MariaDB 10.3 - GLPI master
Certifié ITILv3 - RPM pour Fedora, RHEL et CentOS sur https://blog.remirepo.net/
Offline