Hai a che fare con il limite di connessione ArcSDE superato?


12

Superiamo regolarmente il limite di connessione di ArcSDE, circa una volta alla settimana. Molte delle "connessioni" non sono altro che record orfani nella SDE.PROCESS_INFORMATIONtabella. C'è un modo per ripulire periodicamente queste connessioni? Ho appena assistito ArcSDE a 9.3.1 SP2, sperando che ciò risolva il problema. (Non l'ha fatto.) Attualmente riavvio il arcsdeservizio per ripulire le connessioni, una soluzione piuttosto inelegante.

Questo è l'errore, a proposito:

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

La mia soluzione alternativa:

La mia soluzione era semplice: riavviare il servizio SDE settimanalmente e raddoppiare il numero di connessioni consentite. Questa ovviamente non è una soluzione ; peccato per ESRI per la spedizione di software aziendale che richiede una soluzione alternativa. Dopotutto, è ancora possibile superare le connessioni massime; Posso solo sperare che il nostro attuale livello di utilizzo non porti a questo.

Ho modificato lo init.dscript per evitare sdemondi chiedere all'utente di confermare che vogliono interrompere il servizio (questo è ciò che fa l' -Nargomento). Ho aggiunto anche restartun'opzione.

#!/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

Quindi ho creato un processo cron per riavviare il servizio una volta alla settimana:

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

Ho anche aumentato il numero massimo di connessioni consentite da 64 a 128 modificando il $SDEHOME/etc/giomgr.defsfile:

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.

Quindi ho importato le nuove impostazioni:

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

Questo è stato. Vedremo come va.


1
Come hai verificato che le voci nelle tabelle process_information siano effettivamente connessioni orfane?
Derek Swingley,

Ovviamente non sono tutti orfani, ma ho trovato connessioni di 2 settimane da stazioni di lavoro con uptime <24 ore.
nw1,

1
Una cosa mi è stata detta: se esistono connessioni orfane, il processo di pulizia non viene avviato fino a quando non si verifica una collisione. Ciò significa che se hai connessioni massime impostate su 100 e ci sono 50 voci in process_info e diciamo 20 delle quali sono orfane, le connessioni non verranno ripulite fino a quando SDE non tenta di inserire la 101a voce in process_info. Ad ogni modo, stai dicendo che stai effettivamente ricevendo il messaggio di superamento delle connessioni massime in modo da attivare il processo di pulizia delle connessioni. Investigherei come le persone che usano quelle workstation si stanno disconnettendo.
Derek Swingley,

Risposte:



1

Potresti anche considerare la possibilità che i tuoi utenti si colleghino direttamente e bypassino del tutto il servizio. Ciò ha chiarito alcuni problemi che avevo riscontrato con i servizi bloccati e ha comportato un leggero aumento della velocità di connessione per gli utenti.


Sì, e questo riduce anche il carico sulla macchina; dal momento che il PC degli utenti gestisce il DAL mantenendo SQL proprio come un archivio dati rispetto al fatto che abbia un supporto più programmatico dei dati.
DEWright,

1

Questa è una risposta che è stata inviata ieri dal mio supervisore a un cliente su questo problema.

Per aumentare il numero di connessioni ArcSDE è possibile utilizzare il seguente tipo di sintassi sul server ArcSDE:

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

dove "sde_instance" è il nome del servizio ArcSDE o il numero di porta.

Puoi verificare che questa modifica sia stata effettuata usando il comando:

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


Sì, in effetti l'ho fatto in aggiunta alla creazione di un cron job che riavvia il arcsdeservizio una volta alla settimana.
nw1,

0

Abbiamo sempre rimbalzato periodicamente il server per fare questo ...


0

Hai letto questo post sul forum ESRI è un po 'vecchio ma ci sono script che fanno quello che vuoi fare?


Ho eseguito lo script pubblicato da T Buna volta, ma non ha avuto alcun effetto. Ha quasi 5 anni, quindi sospetto che da allora siano cambiate troppe cose nell'ambiente.
n. 1

Non darei per scontato che sia cambiato molto sul lato SDE. Hai un link allo script che hai eseguito?
Derek Swingley,

Non credo che ci dovrebbero essere grandi differenze tra 9.2 e 9.3.1, ESRI ha cambiato il modo in cui vengono gestiti i geodatabase ma questo è in ArcGIS 10. Stiamo riavviando il nostro ArcSDE come molti altri stanno suggerendo, quindi non posso condividere qualsiasi esperienza sull'uso degli script.
MathiasWestin,

la roba GDB è cambiata (le tabelle con prefissi GDB sono state consolidate), ma sono abbastanza sicuro che la roba SDE sottostante sia la stessa.
Derek Swingley,

@Swingley Sono totalmente d'accordo con te.
MathiasWestin,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.