2010-08-25 5 views
0

Je fais des tests de performance sur un serveur Apache et j'obtiens le message redouté "le pool de contextes a été épuisé! Dun Dun Dun." (emphase dramatique ajoutée)Quel est le danger en augmentant simplement le pool de connexion?

La proposition actuelle flottant autour des devs est simplement augmentée la taille de pool de connexion. Même si cela est peut-être valable, on me dit que «c'est trop simple - il y a sûrement des inconvénients à cela» et je demande à la communauté ce que cela peut être.

Je voudrais garder cela aussi générique que possible afin qu'il puisse être le plus utile au plus grand nombre.

Répondre

0

Attention: nostalgie post.

Il y a plusieurs années, j'ai travaillé dans un environnement mainframe. Mon travail consistait à exécuter des rapports SQL ad hoc pour évaluer l'efficacité des campagnes de vente de Noël. "Comment va la ligne X, contre la ligne Y, au cours des dernières semaines Z, contre les mêmes semaines l'année dernière" ... et similaires. C'était passionnant: des requêtes ponctuelles, directement par rapport à la base de données en direct, les décisions marketing étant prises pour l'après-midi, sur la base des questions du matin du service des achats. Aucune erreur SQL autorisée, aucun test, aucun environnement de développement, c'était correct la première fois, ou rien. Je suis parti pour le déjeuner, un imbécile fou que j'ai été, ayant conçu une jointure multi-table qui donnerait les résultats souhaités, mais après une requête de 30 minutes, sachant qu'aucun verrou n'était pris pour empêcher la transaction. Système de commande économisant de nouvelles commandes. C'était à la mi-décembre, au plus fort de la saison des commandes de Noël.

Je suis revenu, l'entreprise dans le chaos. L'ensemble du système de commande était en panne, tout était à l'arrêt, pas un nouveau pourquoi.

Sauf que CICS n'a pas pu obtenir de connexions. La piscine était épuisée, donc les nouvelles transactions ont échoué.

C'était mon rapport. Il a fallu une tonne de CPU. Ça a duré longtemps. Tout le reste fonctionnait encore un peu plus longtemps. Ainsi, le pool de connexions a manqué de connexions, et tout le reste est mort pendant un moment.

Ma requête est terminée. Cela a donné les bons résultats. Le département des achats était heureux, car ils pouvaient prendre les bonnes décisions pour le lendemain. Les ordres ont commencé à être sauvés encore, et devinez quoi ...

J'avais été horrifié et embarrassé, mais étonnamment, j'étais temporairement un héros local, pour fournir le rapport crucial juste à temps. La crise d'une demi-heure était une catastrophe à l'époque, mais un jour plus tard, juste un souvenir.

S'il y a une morale ici, il est ceci:

Il n'y a pas de réponse unique à ce genre de question.

Si vous le pouvez, découvrez pourquoi vous manquez de connexions, car cela pourrait être une indication de quelque chose de sérieux.

Mais ce n'est peut-être pas, et demain, il pourrait y avoir un problème différent.

Questions connexes