Czy przekroczono limit połączenia ArcSDE?

12

Rutynowo przekraczamy limit połączeń ArcSDE, mniej więcej raz w tygodniu. Wiele „połączeń” to tylko osierocone rekordy w SDE.PROCESS_INFORMATIONtabeli. Czy istnieje jakiś sposób na okresowe czyszczenie tych połączeń? Właśnie obsłużyłem spakowany ArcSDE do wersji 9.3.1 SP2, mając nadzieję, że to rozwiąże problem. (Nie udało się.) Obecnie ponownie uruchamiam arcsdeusługę, aby oczyścić połączenia, dość nieeleganckie rozwiązanie.

Przy okazji jest to błąd:

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

Moje obejście:

Moje rozwiązanie było proste: co tydzień uruchamiaj ponownie usługę SDE i dwukrotnie zwiększ liczbę dozwolonych połączeń. To oczywiście nie jest rozwiązanie ; szkoda ESRI za wysyłkę oprogramowania dla przedsiębiorstw, które wymaga takiego obejścia. W końcu nadal można przekroczyć maksymalną liczbę połączeń; Mogę mieć tylko nadzieję, że nasz obecny poziom do tego nie prowadzi.

Zmieniłem init.dskrypt, aby nie wyświetlał sdemonmonitu o potwierdzenie, że chce zatrzymać usługę (tak -Nrobi argument). Dodałem również restartopcję.

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

Następnie utworzyłem zadanie cron w celu ponownego uruchomienia usługi raz w tygodniu:

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

Zwiększyłem również maksymalną liczbę dozwolonych połączeń z 64 do 128, edytując $SDEHOME/etc/giomgr.defsplik:

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.

Następnie zaimportowałem nowe ustawienia:

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

To było to. Zobaczymy jak to będzie.

nw1
źródło
1
Jak zweryfikowałeś, że wpisy w tabelach proces_information są rzeczywiście osieroconymi połączeniami?
Derek Swingley,
Oczywiście nie wszystkie są osierocone, ale znalazłem 2-tygodniowe połączenia ze stacji roboczych z czasem pracy <24 godzin.
nw1
1
Powiedziano mi jedno: jeśli istnieją osierocone połączenia, proces ich czyszczenia nie rozpoczyna się, dopóki nie nastąpi kolizja. Oznacza to, że jeśli masz maksymalną liczbę połączeń ustawioną na 100, a w process_info znajduje się 50 wpisów, a powiedzmy 20 z nich osieroconych, połączenia nie zostaną wyczyszczone, dopóki SDE nie spróbuje umieścić 101. wpisu w info_info. W każdym razie mówisz, że faktycznie otrzymujesz komunikat o przekroczeniu maksymalnej liczby połączeń, więc proces czyszczenia połączeń powinien zostać uruchomiony. Zbadałbym, w jaki sposób ludzie korzystający z tych stacji roboczych się rozłączają.
Derek Swingley,

Odpowiedzi:

1

Możesz również rozważyć możliwość bezpośredniego połączenia i ominięcia usługi przez użytkowników. To rozwiązało niektóre problemy z zawieszaniem się usług i spowodowało nieznaczne zwiększenie prędkości połączenia dla użytkowników.


źródło
Tak, a to także zmniejsza obciążenie maszyny; ponieważ PC użytkownika obsługuje DAL utrzymując SQL tak samo jak magazyn danych, w przeciwieństwie do bardziej programowej obsługi danych.
DEWright
1

To jest odpowiedź, która została wczoraj wysłana przez mojego przełożonego do klienta w tej sprawie.

Aby zwiększyć liczbę połączeń ArcSDE, na serwerze ArcSDE można zastosować następującą składnię:

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

gdzie „sde_instance” to nazwa usługi ArcSDE lub numer portu.

Możesz sprawdzić, czy ta zmiana została wprowadzona za pomocą polecenia:

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

CDBrown
źródło
Tak, w rzeczywistości zrobiłem to oprócz tworzenia zadania cron, które uruchamia arcsdeusługę raz w tygodniu.
nw1
0

Zawsze po prostu odbijaliśmy serwer, aby to zrobić ...

DavidF
źródło
0

Czytałeś ten post na forum ESRI , jest trochę stary, ale są skrypty, które robią to, co chcesz robić?

MathiasWestin
źródło
Uruchomiłem skrypt wysłany T Braz, ale nie przyniósł żadnego efektu. Ma prawie 5 lat, więc podejrzewam, że od tego czasu w środowisku zmieniło się zbyt wiele.
nw1
Nie przypuszczałbym, że po SDE zmieniło się zbyt wiele. Masz link do uruchomionego skryptu?
Derek Swingley,
Nie sądzę, że powinny istnieć duże różnice między wersjami 9.2 a 9.3.1, ESRI zmienił sposób obsługi geobaz, ale tak jest w ArcGIS 10. Ponownie uruchamiamy ArcSDE, jak sugeruje wiele innych, więc nie mogę się nim dzielić jakiekolwiek doświadczenie w korzystaniu ze skryptów.
MathiasWestin
rzeczy GDB uległy zmianie (tabele z prefiksami GDB zostały skonsolidowane), ale jestem prawie pewien, że podstawowe elementy SDE są takie same.
Derek Swingley,
@ Swingley Całkowicie się z tobą zgadzam.
MathiasWestin