ArcSDE接続の制限を超えた場合の対処方法


12

週に1回、ArcSDEの接続制限を定期的に超えています。「接続」の多くは、SDE.PROCESS_INFORMATIONテーブル内の孤立したレコードにすぎません。これらの接続を定期的にクリーンアップする方法はありますか?パックされたArcSDEを9.3.1 SP2にサービスするだけで、問題が解決することを期待しています。(そうではありませんでした。)現在arcsde、接続をクリーンアップするためにサービスを再起動しています。これは非常に洗練されたソリューションです。

ところで、これはエラーです:

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

私の回避策:

私の解決策は簡単でした。毎週SDEサービスを再起動し、許可された接続の数を2倍にしました。これはもちろん解決策ではありません。このような回避策を必要とするエンタープライズソフトウェアを出荷することに対する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

次に、毎週1回サービスを再起動するcronジョブを作成しました。

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

また、$SDEHOME/etc/giomgr.defsファイルを編集して、許可される接続の最大数を64から128に増やしました。

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テーブルのエントリが実際に孤立した接続であることをどのように確認しましたか?
デレクスウィングレー

もちろん、すべてが孤立しているわけではありませんが、稼働時間が24時間未満のワークステーションから2週間前の接続が見つかりました。
nw1

1
孤立した接続が存在する場合、それらがクリーンアップされるプロセスは、衝突が発生するまで開始されません。つまり、最大接続数を100に設定し、process_infoに50個のエントリがあり、そのうち20個が孤立している場合、SDEがその101番目のエントリをprocess_infoに配置するまで接続はクリーンアップされません。とにかく、実際に最大接続数超過メッセージを取得していると言っているので、接続をクリーンアップするプロセスがトリガーされるはずです。これらのワークステーションを使用している人々がどのように切断しているかを調査します。
デレクスウィングレー

回答:



1

また、ユーザーに直接接続してサービスを完全にバイパスさせることを検討することもできます。これにより、サービスがハングアップするという問題が解消され、ユーザーの接続速度が若干向上しました。


はい。これにより、マシンの負荷も軽減されます。ユーザーのPCがSQLをデータストアとして保持するのとは対照的に、データをよりプログラム的にサポートするDALを処理するためです。
-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.*


はい、実際には、arcsde週に1回サービスを再起動するcronジョブを作成することに加えてこれを行いました。
nw1

0

これを行うために、サーバーを常に定期的にバウンスしました...


0

ESRIフォーラムのこの記事は少し古いですが、やりたいことを実行するスクリプトがありますか?


T B一度投稿したスクリプトを実行しましたが、効果はありませんでした。それはほぼ5年前ですので、私はそれ以来、環境にあまりにも多くの変更が疑われます。
nw1

SDE側であまり変化があったとは思わないでしょう。実行したスクリプトへのリンクがありますか?
デレクスウィングレー

9.2と9.3.1の間に大きな違いはないはずです。ESRIはジオデータベースの処理方法を変更しましたが、それはArcGIS 10にあります。スクリプトの使用に関する経験。
マティアスウェスティン

GDBのものは変更されました(GDBプレフィックスを持つテーブルが統合されました)が、基礎となるSDEのものは同じであると確信しています。
デレクスウィングレー

@Swingley私は完全にあなたに同意します。
マティアスウェスティン
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.