Système de blocage et des requêtes longues

Edit me

Introduction

Voozanoo 4 inclut un système censé détecter les “requêtes longues” avant qu’elles ne soient réellement exécutées. Ces requêtes sont problématiques car elles posent problème, pas seulement à l’application impliquée, mais aussi aux autres applications sur le même serveur.

Le système utilise deux directives distinctes : voozanoo.db.max_rows_per_query et voozanoo.db.max_rows_per_query_to_log

voozanoo.db.max_rows_per_query : erreur bloquante

Configuration

Ce système est configuré dans les application.ini via la directive suivante :

voozanoo.db.max_rows_per_query = 100000000

Si cette directive n’existe pas, le système n’est pas actif.

La valeur conseillée est 100 000 000 mais reste à arbitrer.

Effet de ce système

Lorsque cette sécurité est activée, si la limite définie dans le application.ini est atteinte :

  1. La requête n’est pas exécutée pour ne pas mettre le serveur en danger.
  2. Une exception est levée avec le message ci-dessous.
[23-Jul-2018 14:59:42 Europe/Paris] exception 'Core_Library_Exception_TooManyRowsError' with message 'Too many rows browsed (1613829 rows, 10000 allowed in configuration)' in /space/www/libs/VOOZANOO4/2.26-alpha/src/library/Resource/XML/DataSet/RowData/Adapter/ZendDBSelect.php:257
Stack trace:
#0 /space/www/libs/VOOZANOO4/2.26-alpha/src/library/Resource/XML/DataSet/RowData/Adapter/ZendDBSelect.php(145): Core_Library_Resource_XML_DataSet_RowData_Adapter_ZendDBSelect->_queryPacket()

Comment désactiver le système

Si vous obtenez cette exception et que vous estimez que ce n’est pas normal, il faut bien entendu investiguer, mais, dans l’urgence, vous auriez peut-être à désactiver le système dans l’application.ini :

voozanoo.db.max_rows_per_query = 0

voozanoo.db.max_rows_per_query_to_log : warning non bloquant

Configuration

Ce système est configuré dans les application.ini via la directive suivante :

voozanoo.db.max_rows_per_query_to_log = 500000

Effet de ce système

Lorsque ces logs sont activés, si la limite définie dans le application.ini est atteinte :

  1. La requête est tout de même exécutée.
  2. Un warning est signalé dans les logs avec le message ci-dessous.
2021-02-27 17:38:49 WARN (4) : 19.25 MiB - TooManyRowsWarning: Too many rows browsed (1613829 rows, 10000 allowed in configuration)