|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Invité de passage
![]() Inscription : juillet 2008 Messages : 10 ![]() |
Bonjour !
J'ai un serveur Firebird qui freeze de temps en temps et je ne sais plus trop quoi regarder. Si vous avez des pistes d'investigation à me proposer, votre secours serait très apprécié :-) Il s'agit d'un Firebird 1.5 sous Linux dont les données (14Go) sont accédées et modifiée par des clients sous Windows (via ODBC) et des scripts perl (Maintenance, monitoring et serveur web). Lorsque la plantée se produit, plus moyen de se connecter à la DB (Avec IBExpert, par exemple) et le serveur ne répond pas à la commande restart. Les autres process de mon serveur fonctionnent très bien. Pour "dépanner", je fais un reboot complet de mon serveur, et c'est repartis pour plusieurs jours ou semaines. La plantée se produit toujours aux alentours de la même heure dans la journée (Entre 6h et 7h). En regardant les logs firebird, je vois ceci : Mon_serveur (Server) Mon May 9 06:34:49 2011 Database: /path/DB.fdb deadlock Sauf que voila, je n'y mettrai pas ma main à couper car le système est complexe, mais je suis presque sûr qu'il n'y a pas d'accès en update aux données à ce moment là... et encore moins concurrentielles ! Questions : 1) Pensez-vous que ce message de deadlock soit une cause ou une conséquence de mon problème ? 2) Est-ce que la structure de ma DB ne serait pas endommagée ? Un backup-restore a-t'il des chances de corriger le problème ? 3) Une fois que la DB est plantée, est-ce que l'utilitaire fb_lock_print a une chance de me donner la dernière requête exécutée par le serveur ? D'avance merci de vos lumières ... |
|
|
00
|
|
|
#2 |
|
Membre Expert
![]() Frédéric Inscription : octobre 2002 Messages : 1 726 ![]() |
bonjour,
ODBC => Sinon utilisez vous des UDF ? (si oui lesquelles) N'y aurait il pas à cette heure ci une opération de maintenance (genre sauvegarde mais qui ne serait pas faite avec gbak par exemple). |
|
|
10
|
|
|
#3 |
|
Invité de passage
![]() Inscription : juillet 2008 Messages : 10 ![]() |
Je n'y avais pas pensé...
Effectivement, le backup sur bande se fait aux alentours de cette heure-ci et effectivement, le fichier de la DB était inclus dans la liste. Nous l'avons retiré pour ne laisser que le .fbk. Je crois que l'on a trouvé grâce à toi Barbibulle. Merci beaucoup. |
|
|
00
|
|
|
#4 |
|
Invité de passage
![]() Inscription : juillet 2008 Messages : 10 ![]() |
Zut, ce n'est pas ça.
Le backup a été modifié, mais la plantée s'est reproduite ce matin. J'ai l'impression que cela arrive de plus en plus souvent. Si quelqu'un a une idée ... :-/ |
|
|
00
|
|
|
#5 |
|
Membre Expert
![]() Frédéric Inscription : octobre 2002 Messages : 1 726 ![]() |
C'est peut être une conséquence de ce backup sur bande fait directement sur la base.
Moi je tenterai : -1- Mettre hors ligne la base de données (accès exclusif au SYSDBA) Sauf si tous vos utilisateurs se log en SYSDBA ca ne servirait à rien (dans ce cas il faut faire ces opérations lorsqu'il n'y a pas d'utilisateurs (bloquer le port de FB). -_- Bref tout ca pour avoir un accès exclusif à la base. -2- Un gback en ignorant les transactions dans les limbes -3- Je renommerai la base de données (pour avoir une sauvegarde au cas ou la restauration se passerait mal) -4- Un restaure de la base de données |
|
|
00
|
|
|
#6 | ||
|
Invité de passage
![]() Inscription : juillet 2008 Messages : 10 ![]() |
Je vais faire une restauration de la DB. Vu qu'elle est utilisée 24/24 par pas mal de monde, je vais devoir planifier un arrêt pour la semaine prochaine.
J'aurais voulu être sûr que ce soit nécessaire avant de le faire, mais tant pis. Plus d'info dans quelques jours, donc... Je me suis toutefois intéressé aux logs. Voici ce que me disais fb_lock_print ce matin avant le redémarrage : Code :
J'ai remarqué que cette valeur augmentait à chaque requête qui est lancée, qu'il ne diminue pas et ce, même si la requête réussie (Ce qui est toujours le cas). C'est ce qui se produit aussi maintenant, alors que le serveur vient de redémarrer et qu'il est, je suppose, "propre". Cela confirmerait-il que la DB est endommagée ? |
||
|
|
00
|
|
|
#7 |
|
Expert Confirmé
![]() ![]() ![]() Philippe MakowskiConsultant spécialité Firebird Inscription : mai 2002 Messages : 2 256 ![]() |
que donne gstat -h ?
__________________
Philippe Makowski IBPhoenix - Firebird Membre de l'April |
|
00
|
|
|
#8 | ||
|
Invité de passage
![]() Inscription : juillet 2008 Messages : 10 ![]() |
Ce matin, la DB tient toujours le coup
Code :
Le restore est planifié pour mercredi matin. |
||
|
|
00
|
|
|
#9 | ||
|
Expert Confirmé
![]() ![]() ![]() Philippe MakowskiConsultant spécialité Firebird Inscription : mai 2002 Messages : 2 256 ![]() |
Code :
corrige ton code, ton gap de transaction est bien trop grand tu dois avoir une transaction ouverte depuis trop longtemps pour rien et qui bloque tout
__________________
Philippe Makowski IBPhoenix - Firebird Membre de l'April |
||
|
10
|
|
|
#10 | |
|
Invité de passage
![]() Inscription : juillet 2008 Messages : 10 ![]() |
Citation:
Question : Admettons que je me trompe et que le problème vienne d'un bout de code mal foutu dans un coin .. Sachant que plusieurs programmeurs sont impliqués sur cette plateforme, j'ai de la peine a deviner lequel. Y aurait-il un outil sous Firebird pour me donner des infos ? Le SQL de la requête concernée serait super ... |
|
|
|
00
|
|
|
#11 | ||||
|
Expert Confirmé
![]() ![]() ![]() Philippe MakowskiConsultant spécialité Firebird Inscription : mai 2002 Messages : 2 256 ![]() |
Citation:
la bonne blague et alors ? c'est pas pour cela que c'est une bonne chose, loin de là c'est même une erreur de laisser ouvert un "IBExpert" trop longtemps sur une base quand à : Citation:
Citation:
Citation:
voir utiliser un outil comme Fb Trace Manager http://www.upscene.com/products.misc.fbtm.php et lire par exemple http://www.ibphoenix.com/resources/d.../design/doc_21 et http://www.ibphoenix.com/resources/d...general/doc_67 et http://www.ibphoenix.fr/spip.php?article4
__________________
Philippe Makowski IBPhoenix - Firebird Membre de l'April |
||||
|
00
|
|
|
#12 |
|
Invité de passage
![]() Inscription : juillet 2008 Messages : 10 ![]() |
Ce que je voulais dire avec IBExpert, c'est que les requêtes que je lance avec lui restent elles aussi ouvertes. Quelles que soient les données que j'accède (Fermer IBExpert lui même n'y change d'ailleurs rien). J'en déduisait que les programmes développés par nous ne pouvait être impliqués.
En te lisant, cependant, je comprends qu'une seule transaction non terminée (Probablement lancée par un bout de code mal fichu, certes) peut bloquer les suivantes, même si elles n'accèdent pas aux mêmes données. C'est bien cela ? Pour ce qui est de la trouver, ma chasse continue. Le Trace Manager et les Tables de Monitoring seraient géniales. Malheureusement, je ne les ai pas sous Fb 1.5 |
|
|
00
|
|
|
#13 | ||
|
Expert Confirmé
![]() ![]() ![]() Philippe MakowskiConsultant spécialité Firebird Inscription : mai 2002 Messages : 2 256 ![]() |
Citation:
Citation:
de même que le mode commit retain qui est une absurdité qui n'aurait jamais du être inventée lit et relit http://www.ibphoenix.com/resources/d...general/doc_67
__________________
Philippe Makowski IBPhoenix - Firebird Membre de l'April |
||
|
00
|
|
|
#14 |
|
Invité de passage
![]() Inscription : juillet 2008 Messages : 10 ![]() |
Le backup/restore n'a finalement pas eu d'effet.
La liste de transactions ouvertes continuait de s'allonger. La seule façon de corriger restant un reboot complet du serveur. Un stop/start de Fb ne suffisant pas. Pour trouver la transaction incriminée, j'ai programmé dans le crontab un gstat -h toutes les 5 minutes afin de déterminer le moment ou la transaction qui me bloquait était lancée. J'ai découvert qu'elle était lancée entre 5h et 5h05. Là j'ai perdu un peu de temps, car le serveur qui lançait cette requête était oublié de tous ... Une fois fait, j'ai épluché le code pour trouver la requête qui n'était pas fermée. Je l'ai trouvé et modifiée. Maintenant mon serveur se porte beaucoup mieux. Problème résolu. Merci à ceux qui m'ont aidés. |
|
|
00
|
Copyright © 2000-2013 - www.developpez.com