Vous avez dépassé la limite de connexion ArcSDE?

12

Nous dépassons régulièrement la limite de connexion d'ArcSDE, environ une fois par semaine. La plupart des «connexions» ne sont que des enregistrements orphelins de la SDE.PROCESS_INFORMATIONtable. Existe-t-il un moyen de nettoyer ces connexions périodiquement? Je viens de charger ArcSDE sur 9.3.1 SP2, en espérant que cela résoudrait le problème. (Ce n'est pas le cas.) Actuellement, je redémarre le arcsdeservice pour nettoyer les connexions, une solution assez inélégante.

C'est l'erreur, d'ailleurs:

Failed to connect to database. Maximum number of connections to instance exceeded

Ma solution:

Ma solution était simple: redémarrer le service SDE chaque semaine et doubler le nombre de connexions autorisées. Ce n'est bien sûr pas une solution ; Honte à ESRI pour l'expédition de logiciels d'entreprise qui nécessitent une telle solution de contournement. Après tout, il est toujours possible de dépasser les connexions maximales; Je ne peux qu'espérer que notre niveau d'utilisation actuel ne mène pas à cela.

J'ai modifié le init.dscript pour éviter sdemond'inviter l'utilisateur à confirmer qu'il souhaite arrêter le service (c'est ce que fait l' -Nargument). J'ai également ajouté une restartoption.

#!/bin/bash
#
# arcsde Init file for starting and stopping ArcSDE 9.3
#
# chkconfig: 35 90 40
# description: ArcSDE startup script

# Source function library.

. /etc/rc.d/init.d/functions

SDE_OWNER="sde"
SDEHOME="/home/sde/sdeexe93"

case "$1" in
start)
echo -n $"Starting ArcSDE:"
su - $SDE_OWNER -c "$SDEHOME/bin/sdemon -o start -p pwd"
echo "OK"
;;
stop)
echo -n $"Stopping ArcSDE:"
su - $SDE_OWNER -c "$SDEHOME/bin/sdemon -o shutdown -p pwd -N"
echo "OK"
;;
restart)
cd "$CWD"
$0 stop
sleep 5
$0 start
;;
*)
echo $"Usage: $0 {start|stop|restart}"
esac

J'ai ensuite créé un travail cron pour redémarrer le service une fois par semaine:

# restart arcsde once weekly at 5am Saturdays
0 5 * * 6 service arcsde restart

J'ai également augmenté le nombre maximum de connexions autorisées de 64 à 128 en modifiant le $SDEHOME/etc/giomgr.defsfichier:

CONNECTIONS      128     # maximum number of connections
                         # NOTE:  On windows machines, you may need to
                         # increase server non-interactive desktop memory.
                         # Consult the ESRI support site for more information.

J'ai ensuite importé les nouveaux paramètres:

$ sdeconfig -o import -f $SDEHOME/etc/giomgr.defs -i esri_sde -u sde

C'était ça. Nous verrons comment ça se passe.

nw1
la source
1
Comment avez-vous vérifié que les entrées dans les tables process_information sont bien des connexions orphelines?
Derek Swingley,
Ils ne sont pas tous orphelins, bien sûr, mais j'ai trouvé des connexions vieilles de 2 semaines à partir de postes de travail avec une disponibilité <24 heures.
nw1
1
On m'a dit une chose: s'il existe des connexions orphelines, le processus de nettoyage n'est pas lancé jusqu'à ce qu'il y ait une collision. Autrement dit, si le nombre maximal de connexions est défini sur 100 et qu'il y a 50 entrées dans process_info et disons 20 d'entre elles sont orphelines, les connexions ne seront pas nettoyées jusqu'à ce que SDE essaie de mettre cette 101e entrée dans process_info. Quoi qu'il en soit, vous dites que vous obtenez réellement le message de connexions maximales dépassées afin que le processus de nettoyage des connexions soit déclenché. J'explorerais comment les personnes utilisant ces postes de travail se déconnectent.
Derek Swingley

Réponses:

1

Vous pouvez également envisager de demander à vos utilisateurs de se connecter directement et de contourner complètement le service. Cela a résolu certains problèmes que je rencontrais avec le blocage des services et a entraîné une légère augmentation de la vitesse de connexion pour les utilisateurs.


la source
Oui, et cela réduit également la charge sur la machine; étant donné que le PC des utilisateurs gère le DAL en conservant SQL comme un magasin de données par rapport à un support plus programmatique des données.
DEWright
1

C'est une réponse qui a été envoyée hier par mon superviseur à un client à ce sujet.

Pour augmenter le nombre de connexions ArcSDE, le type de syntaxe suivant peut être utilisé sur le serveur ArcSDE:

sdeconfig -o alter -v CONNECTIONS=140 -u sde -p sde_password -i sde_instance

où "sde_instance" est le nom du service ArcSDE ou le numéro de port.

Vous pouvez vérifier que cette modification a été effectuée à l'aide de la commande:

sdeconfig -o list -u sde -p sde_password -i sde_instance.*

CDBrown
la source
Oui, en fait, je l'ai fait en plus de créer un travail cron qui redémarre le arcsdeservice une fois par semaine.
nw1
0

Nous avons toujours juste fait rebondir le serveur périodiquement pour ce faire ...

DavidF
la source
0

Avez-vous lu cet article sur le Forum ESRI, il est un peu vieux mais il existe des scripts qui font ce que vous voulez faire?

MathiasWestin
la source
J'ai exécuté le script publié T Bune fois, mais cela n'a eu aucun effet. Il a presque 5 ans, donc je soupçonne que trop de choses ont changé dans l'environnement depuis.
nw1
Je ne suppose pas que trop de choses ont changé du côté SDE. Vous avez un lien vers le script que vous avez exécuté?
Derek Swingley,
Je ne pense pas qu'il devrait y avoir de grandes différences entre 9.2 et 9.3.1, ESRI a changé la façon dont les géodatabases sont gérées mais c'est dans ArcGIS 10. Nous redémarrons notre ArcSDE comme beaucoup d'autres le suggèrent, donc je ne peux pas partager toute expérience sur l'utilisation des scripts.
MathiasWestin,
le truc GDB a changé (les tables avec les préfixes GDB ont été consolidées), mais je suis presque sûr que le truc SDE sous-jacent est le même.
Derek Swingley
@Swingley, je suis entièrement d'accord avec vous.
MathiasWestin