Lidando com o limite de conexão do ArcSDE excedido?

12

Rotineiramente excedemos o limite de conexão do ArcSDE, cerca de uma vez por semana. Muitas das "conexões" nada mais são que registros órfãos na SDE.PROCESS_INFORMATIONtabela. Existe alguma maneira de limpar essas conexões periodicamente? Acabei de fazer a manutenção do ArcSDE para a 9.3.1 SP2, esperando que isso resolvesse o problema. (Não.) Atualmente, reinicio o arcsdeserviço para limpar as conexões, uma solução bastante deselegante.

Este é o erro, a propósito:

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

Minha solução alternativa:

Minha solução foi simples: reinicie o serviço SDE semanalmente e duplique o número de conexões permitidas. Obviamente, isso não é uma solução ; vergonha da ESRI por enviar software corporativo que requer uma solução alternativa. Afinal, ainda é possível exceder o número máximo de conexões; Só espero que nosso nível atual de uso não leve a isso.

Alterei o init.dscript para impedir sdemonque o usuário confirme que deseja interromper o serviço (é isso que o -Nargumento faz). Eu adicionei uma restartopção também.

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

Em seguida, criei um trabalho cron para reiniciar o serviço uma vez por semana:

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

Também aumentei o número máximo de conexões permitidas de 64 para 128 editando o $SDEHOME/etc/giomgr.defsarquivo:

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.

Então eu importei as novas configurações:

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

Foi isso. Vamos ver como vai.

nw1
fonte
1
Como você verificou que as entradas nas tabelas process_information são realmente conexões órfãs?
Derek Swingley 21/09/10
Eles não são todos órfãos, é claro, mas eu encontrei conexões de duas semanas em estações de trabalho com tempo de atividade <24 horas.
nw1 21/09/10
1
Uma coisa me disseram: se existirem conexões órfãs, o processo para limpá-las não será iniciado até que haja uma colisão. Ou seja, se você tiver um número máximo de conexões definidas como 100 e houver 50 entradas em process_info e, digamos, 20 delas órfãs, as conexões não serão limpas até que o SDE tente colocar essa 101ª entrada em process_info. Enfim, você está dizendo que realmente está recebendo a mensagem de número máximo de conexões excedidas, para que o processo de limpeza de conexões seja acionado. Eu investigaria como as pessoas que usam essas estações de trabalho estão se desconectando.
Derek Swingley

Respostas:

1

Você também pode considerar que seus usuários se conectem diretamente e ignorem o serviço completamente. Isso esclareceu alguns problemas que eu estava tendo com os serviços interrompidos e resultou em um pequeno aumento na velocidade de conexão dos usuários.


fonte
Sim, e isso também reduz a carga na máquina; já que o PC dos usuários lida com o DAL mantendo o SQL apenas como um armazenamento de dados, em comparação com o suporte programático dos dados.
DEWright
1

Esta é uma resposta que foi enviada do meu supervisor para um cliente ontem sobre esse problema.

Para aumentar o número de conexões do ArcSDE, o seguinte tipo de sintaxe pode ser usado no servidor ArcSDE:

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

onde "sde_instance" é o nome do serviço ou número da porta do ArcSDE.

Você pode verificar se essa alteração foi feita usando o comando:

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

CDBrown
fonte
Sim, na verdade, eu fiz isso além de criar um trabalho cron que reinicia o arcsdeserviço uma vez por semana.
nw1 23/09/10
0

Sempre devolvíamos o servidor periodicamente para fazer isso ...

DavidF
fonte
0

Você já leu esta postagem no fórum da ESRI, que é um pouco antiga, mas existem scripts que fazem o que você deseja fazer?

MathiasWestin
fonte
Eu executei o script postado T Buma vez, mas não teve efeito. Tem quase 5 anos, então suspeito que muita coisa mudou no ambiente desde então.
nw1 21/09/10
Eu não assumiria que muita coisa mudou no lado da SDE. Tem um link para o script que você executou?
Derek Swingley
Eu não acho que deva haver grandes diferenças entre 9.2 e 9.3.1, a ESRI mudou a maneira como os bancos de dados geográficos são tratados, mas isso é no ArcGIS 10. Estamos reiniciando nosso ArcSDE como muitos outros estão sugerindo, então não posso compartilhar qualquer experiência em usar os scripts.
MathiasWestin
o material do GDB mudou (as tabelas com prefixos do GDB foram consolidadas), mas tenho certeza de que o material subjacente do SDE é o mesmo.
Derek Swingley
@Swingley, concordo totalmente com você.
MathiasWestin