|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Candidat au titre de Membre du Club
![]() Inscription : avril 2003 Messages : 50 ![]() |
Bonjour,
J'ai donc un deux serveurs sous windows 2000 qui contiennent chacun un ASE 12.5. Sur l'un des serveurs j'ai installé un répli 12.1 qui réplique mes procédures stockées de manière asynchrones. Ceci implique que si une modif sur un des serveur est faite (par une procédure stockée), l'exécution de cette modif est répliqué sur l'autre serveur. Mon problème est que le fait que ces procédures soit asynchrones, les temps des répercutions des modifs est assez long. Auriez vous des conseils pour optimiser la répercusion des modifs, bref pour accèlérer l'exécution des procédures asynchrones. Merci. |
|
|
00
|
|
|
#2 |
![]() ![]() |
Qu'entends-tu par "assez long" ?
si les deux serveurs sont locaux sur un LAN, le temps de latence devrait etre minime. Affiches-nous le contenu des colonnes origin_time et dest_cmommit_time de la table rs_lastcommit de la base de donnees cible. |
|
|
00
|
|
|
#3 |
|
Candidat au titre de Membre du Club
![]() Inscription : avril 2003 Messages : 50 ![]() |
Oui les deux serveurs sont sur un réseau local à 100Mbits donc de ce coté pas de PB.
Voici un peu plus de précisions sur les tests que je fais en attendant que j'envoie le contenu de la table rs_lastcommit(je recommence mon test). Je récapitule : -Deux serveurs A et B A : primaire : ASE 12.5 et REPLI 12.1 B : secondaire : ASE 12.5 A et B possèdent la meme base applicative. J'utilise les fonctions appliquées (procédures stockée) de A vers B et les fonctions de demande de réplication de B vers A. Lors de mon test j'exécute une procedure stockée qui insert une ligne dans la table TEST de la base primaire du serveur A. Cette procédure est répliquée (fonction appliquée) sur le serveur B et en même TEMPS j'exécute une procédure sur le serveur B qui insert aussi une ligne dans la table TEST et qui par une demande de réplication fais la modif sur le serveur A comme B. Mon test simule 40 utilisateurs qui lancent chacun 100 fois 100 procédures d'insertion sur 100 tables. Bref à la fin j'obtients 100 tables contenant 4000 lignes chacunes. Ces requètes arrivent à un répartiteur de charge réseau (load balancing de WIN2000). Il ya donc la moitiée des procédures qui arrivent sur le serveur A et l'autre sur le serveur B. La réplication s'exécutant, j'obtient bien les deux serveurs avec chacun 100 tables de 4000 lignes chacunes. Sinon j'ai été obligé de bidouiller avec des procédures vides pour pouvoir utiliser des procédures avec le même nom. Pour l'instant quand j'exécute mon test sur mon benchmark l'exécution se fait en 2 ou 3 minutes(temps identique à un test monoserveur) mais comme c'est asynchrone, il faut attendre environ 1 heure et oui j'ai bien dit 1 heure pour que toutes les modifs soient exécutées. C'est long vous trouvez pas |
|
|
00
|
|
|
#4 | ||||
|
Candidat au titre de Membre du Club
![]() Inscription : avril 2003 Messages : 50 ![]() |
tient un petit warning dans les logs :
Code :
sinon le contenu de la table rs_last commit en plein milieu de mon test: Code :
à environ 3000 insertion sur 4000 j'ai l'impression que c'est assez rapide pour les premières insertions et qu'après ca se ralenti sérieusement. voilà j'enverrai aussi ce contenu à la fin de mon test |
||||
|
|
00
|
|
|
#5 |
|
Candidat au titre de Membre du Club
![]() Inscription : avril 2003 Messages : 50 ![]() |
et voici le contenu de rs_lastcommit à la fin de mon test:
origin_time dest_commit_time -------------------------- -------------------------- Jan 1 1900 12:00AM Aug 29 2003 9:23AM Aug 29 2003 3:38PM Aug 29 2003 3:37PM |
|
|
00
|
|
|
#6 |
![]() ![]() |
Une latence de 23 minutes, c'est effectivement pas court.
Quelle est la taille de ton stable device ? As-tu essayé de marquer les procédures stockées comme répliquées ? Autre petite question : pourquoi RS 12.1 dans un environement ASE12.5 ? Pourquoi pas utiliser RS 12.5 ? Utilises-tu des updates massifs ? Sais-tu qu'un update massif touchant 1000 lignes sur la base source est transformé en 1000 updates d'une ligne sur la cible (d'où certains problèmes de verrouillage par manque de structures locks sur le cible) ? |
|
|
00
|
|
|
#7 |
|
Candidat au titre de Membre du Club
![]() Inscription : avril 2003 Messages : 50 ![]() |
Alors mon stable device est à 200.
Sinon pour les versions de ASE et de REPLI j'ai pris ce qu'il y avait de disponible dans l'entreprise où je suis. Toutes mes procédures sont marquées comme répliquées. Lors de mon test il y avait juste des procédures d'insert d'une ligne à chaque fois. Ce temps de latence est donc bien anormal |
|
|
00
|
|
|
#8 | |
![]() ![]() |
Citation:
Dans ce cas, garde a l'esprit qu'un update de 10000 lignes sous l'ASE source genere 10000 updates d'une ligne sous l'ASE source (hormis si tu passes via une SP repliquee) |
|
|
|
00
|
|
|
#9 |
|
Candidat au titre de Membre du Club
![]() Inscription : avril 2003 Messages : 50 ![]() |
Oui je suis bien en local et je fais des inserts, updates et deletes massifs mais avec des sp répliquées.
|
|
|
00
|
|
|
#10 |
![]() ![]() |
Donc, ce temps de latence est donc bien anormal. Quel est ta taille de paquets par defaut ? et ton parametre TCP no delay ?
|
|
|
00
|
|
|
#11 | ||
|
Candidat au titre de Membre du Club
![]() Inscription : avril 2003 Messages : 50 ![]() |
si c'est bien ce que tu demandes
Code :
|
||
|
|
00
|
|
|
#12 | ||
|
Candidat au titre de Membre du Club
![]() Inscription : avril 2003 Messages : 50 ![]() |
voilà un extrait de mon fichier sql.ini pour mon moteur hébregeant la RSSD (base primaire).
Code :
|
||
|
|
00
|
|
|
#13 |
![]() ![]() |
Commence par passer tcp no delay a 1. C'est historique ce 0...
En ce qui concerne le fichier d'interface, si la bonne adresse est celle d'en-bas, la connexion peut etre tres longue... et peut etre la cause de ton probleme. |
|
|
00
|
|
|
#14 |
|
Candidat au titre de Membre du Club
![]() Inscription : avril 2003 Messages : 50 ![]() |
alors le paramètre 'tcp no delay' était bien à 1
c'est la valeur par défaut en ce qui concerne le fichier sql.ini oui c'est bien la ligne : qui est utilisé par le moteur de réplication pour accèder au moteur ASE primaire (sql00000) et pour le moteur ASE secondaire(sql00001) j'ai essayé de changer le protocole mais ca n'a rien changé. mes deux serveurs sont reliés par un cable croisé pour la réplication (110.1.1.1 et 110.1.1.2). sinon pourquoi la connexion peut elle être très longue |
|
|
00
|
Copyright © 2000-2012 - www.developpez.com