Перевищення межі з'єднання ArcSDE перевищено?


12

Ми звичайно перевищуємо ліміт підключення ArcSDE, приблизно один раз на тиждень. Багато з "зв'язків" - це не що інше, як осиротілі записи в SDE.PROCESS_INFORMATIONтаблиці. Чи є можливість періодично очищати ці з'єднання? Я просто упакував ArcSDE до 9.3.1 SP2, сподіваючись, що це вирішить проблему. (Так не було.) В даний час я перезапускаю arcsdeслужбу очищення з'єднань, досить неелегантне рішення.

Це, до речі, помилка:

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

Моє вирішення:

Моє рішення було простим: перезапускайте службу SDE щотижня і подвоюйте кількість дозволених з'єднань. Це, звичайно, не рішення ; ганьба ESRI за відвантаження програмного забезпечення для підприємств, яке потребує такого вирішення. Адже все-таки можливо перевищити максимальний зв’язок; Я можу лише сподіватися, що наш сучасний рівень використання до цього не призводить.

Я змінив init.dсценарій, щоб запобігти sdemonспонуканню користувача підтвердити, що він хоче зупинити послугу (це те, що -Nробить аргумент). Я також додав restartваріант.

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

Потім я створив cron завдання, щоб перезапустити сервіс один раз на тиждень:

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

Я також збільшив максимальну кількість дозволених з'єднань з 64 до 128, редагуючи $SDEHOME/etc/giomgr.defsфайл:

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.

Потім я імпортував нові налаштування:

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

Це було все. Ми побачимо, як це йде.


1
Як ви переконалися, що записи в таблицях process_information справді є осиротілими зв’язками?
Дерек Свінглі

Вони, звичайно, не всі сироти, але я знайшов 2-тижневі зв’язки з робочих станцій із тривалістю роботи <24 години.
nw1

1
Мені сказали одне: якщо існують осиротілі зв’язки, процес їх очищення не розпочинається, поки не станеться зіткнення. Значить, якщо у вас встановлено максимум з'єднань на 100, а в процесі_інфо є 50 записів, і скажімо, 20 з яких осиротіли, з'єднання не будуть очищені, поки SDE не спробує поставити цей 101-й запис у process_info. У будь-якому випадку, ви говорите, що ви фактично отримуєте повідомлення про перевищення максимальних з'єднань, тому процес очищення з'єднань повинен бути запущений. Я би дослідив, як люди, які використовують ці робочі станції, відключаються.
Дерек Свінглі

Відповіді:



1

Ви також можете подумати про те, щоб ваші користувачі безпосередньо підключились та обійшли службу. Це усунуло деякі проблеми, які виникли у мене із зависанням служб, і це призвело до незначного збільшення швидкості з'єднання для користувачів.


Так, і це також зменшує навантаження на машину; оскільки користувач ПК обробляє DAL, зберігаючи SQL, як сховище даних, порівняно з тим, що вони надають більш програмну підтримку даних.
DEWright

1

Це відповідь, яку вчора було надіслано моїм керівником до клієнта з цього питання.

Для збільшення кількості підключень ArcSDE на сервері ArcSDE можна використовувати наступний тип синтаксису:

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

де "sde_instance" - це ім'я служби або номер порту ArcSDE.

Ви можете перевірити, що ця зміна була внесена за допомогою команди:

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


Так, насправді я робив це на додаток до створення роботи з cron, яка перезапускає arcsdeпослугу раз на тиждень.
nw1

0

Ми завжди періодично відскакуємо від сервера, щоб це зробити ...


0

Чи читали ви цю публікацію на форумі ESRI, вона трохи застаріла, але є сценарії, які роблять те, що ви хочете зробити?


Я запускав сценарій, опублікований T Bодин раз, але це не мало ефекту. Це майже 5 років, тому я підозрюю, що занадто багато змінилося в оточенні з тих пір.
nw1

Я б не припускав, що занадто багато змінилося на стороні SDE. Отримали посилання на сценарій, який ви виконували?
Дерек Свінглі

Я не думаю, що між 9.2 та 9.3.1 не повинно бути великих різниць, ESRI змінив спосіб обробки баз даних про геодані, але це в ArcGIS 10. Ми перезапускаємо ArcSDE так, як багато інших пропонують, тому я не можу поділитися будь-який досвід використання сценаріїв.
MathiasWestin

матеріал GDB змінився (таблиці з префіксами GDB були консолідовані), але я впевнений, що базові матеріали SDE однакові.
Дерек Свінглі

@Swingley Я повністю погоджуюся з тобою.
MathiasWestin
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.