Problème performance Oracle (ou en amont d'oracle)
Bonjour,
Je viens vers vous aujourd'hui car je commence à ne plus avoir d'idée.
Dans mon entreprise, nous avons une DB sur un serveur (Oracle 12).
Nous avons des problèmes de performance dans nos batch et nous sommes en train d'investiguer pourquoi.
Nous avons éliminé tout ceci:
- Problème performance d'écriture dans fichiers plats
- Problème performance réseau pour accéder à la base de données (car la base est sur un autre serveur)
- Problème d'accès disques
Nous sommes arrivés à ce test qui est très étrange :
Si j'execute un script PL/SQL qui va lire une table de 2M500k records, cela prends 28secondes. (par un select-fetch)
Si j'exécute simultanément deux fois ce même script, les deux vont prendre 50secondes.
...
Si j'execute simultanément cinq fois ce même script, les 5 vont prendre deux minutes à s'executer.
Tout ceci plus ou moins: l'un va prendra 2minutes03, l'autre va prendre 1min59, etc...
Si nous faisons le test sur un environnement de notre R&D (qui plus est n'est pas une bete de course), avec les même records, cela va prendre 11secondes.
Peu importe le nombre de lancement simultannée.
=> On constate aussi que 11sec c'est beaucoup mieux que 28sec...
Il y'a dont un genre de pool (limite mémoire, limite cpu, dispatcher, listener,...?) qui fait que le temps est très long et séquentiellement augmenté, selon la charge sur la DB.
Nos batch prennent 5fois plus de temps qu'à la R&D et d'après nos investigations, tout le temps est perdu dans des appel DB.
A noter que les temps de toutes les requêtes de nos batch sont très bons, puisque dans le rapport AWR il n'y a aucun souci.
Quelqu'un aurait-il une idée d'ou cela peut venir, et quoi checker?
Merci beaucoup de vos aides,
Karma.