Работа с пределом подключения 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

Вот и все. Как получится.

NW1
источник
1
Как вы убедились, что записи в таблицах process_information действительно являются потерянными соединениями?
Дерек Свингли,
Конечно, они не все осиротевшие, но я обнаружил двухнедельные соединения с рабочими станциями, время работы которых <24 часа.
nw1
1
Мне сказали одно: если существуют потерянные соединения, процесс их очистки не запускается до тех пор, пока не произойдет столкновение. Это означает, что если вы установили максимальное число соединений равным 100, а в process_info имеется 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.*

CDBrown
источник
Да, на самом деле я сделал это в дополнение к созданию задания cron, которое перезапускает arcsdeсервис один раз в неделю.
nw1
0

Мы всегда просто периодически отказов сервера для этого ...

DavidF
источник
0

Вы читали этот пост на форуме ESRI, он немного староват, но есть сценарии, которые делают то, что вы хотите сделать?

MathiasWestin
источник
Я запустил сценарий, опубликованный T Bодин раз, но он не имел никакого эффекта. Ему почти 5 лет, так что я подозреваю, что с тех пор в окружающей среде слишком многое изменилось.
nw1
Я не предполагал бы, что слишком много изменилось на стороне SDE. Есть ссылка на скрипт, который вы запустили?
Дерек Суингли
Я не думаю, что должны быть какие-то большие различия между 9.2 и 9.3.1, ESRI изменил способ обработки баз геоданных, но это в ArcGIS 10. Мы перезапускаем наш ArcSDE, как предлагают многие другие, поэтому я не могу поделиться любой опыт использования скриптов.
MathiasWestin
материал GDB изменился (таблицы с префиксами GDB были объединены), но я уверен, что основной материал SDE остается тем же.
Дерек Суингли
@Swingley, я полностью с тобой согласен.
MathiasWestin