Xử lý vượt quá giới hạn kết nối ArcSDE?


12

Chúng tôi thường xuyên vượt quá giới hạn kết nối của ArcSDE, khoảng một lần một tuần. Nhiều "kết nối" không là gì ngoài những bản ghi mồ côi trong SDE.PROCESS_INFORMATIONbảng. Có cách nào để làm sạch các kết nối này định kỳ? Tôi chỉ dịch vụ đóng gói ArcSDE đến 9.3.1 SP2, hy vọng điều này sẽ giải quyết vấn đề. (Không.) Hiện tại tôi khởi động lại arcsdedịch vụ để dọn sạch các kết nối, một giải pháp không phù hợp.

Nhân tiện, đây là lỗi:

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

Cách giải quyết của tôi:

Giải pháp của tôi rất đơn giản: khởi động lại dịch vụ SDE hàng tuần và tăng gấp đôi số lượng kết nối được phép. Tất nhiên đây không phải là một giải pháp ; xấu hổ về ESRI cho việc vận chuyển phần mềm doanh nghiệp đòi hỏi một cách giải quyết như vậy. Rốt cuộc, vẫn có thể vượt quá các kết nối tối đa; Tôi chỉ có thể hy vọng rằng mức độ sử dụng hiện tại của chúng tôi không dẫn đến điều này.

Tôi đã thay đổi init.dtập lệnh để ngăn sdemonngười dùng xác nhận họ muốn dừng dịch vụ (đây là điều mà -Nđối số thực hiện). Tôi đã thêm một restarttùy chọn là tốt.

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

Sau đó, tôi đã tạo một công việc định kỳ để khởi động lại dịch vụ mỗi tuần một lần:

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

Tôi cũng đã tăng số lượng kết nối được phép tối đa từ 64 lên 128 bằng cách chỉnh sửa $SDEHOME/etc/giomgr.defstệp:

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.

Sau đó, tôi đã nhập các cài đặt mới:

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

Điều đó là vậy đó. Chúng ta sẽ xem nó diễn ra như thế nào.


1
Làm thế nào bạn xác minh rằng các mục trong bảng process_inifying thực sự là các kết nối mồ côi?
Derek Swingley

Tất nhiên họ không phải là trẻ mồ côi, nhưng tôi đã tìm thấy các kết nối 2 tuần tuổi từ các máy trạm với thời gian hoạt động <24 giờ.
nw1

1
Một điều tôi đã nói: nếu tồn tại các kết nối mồ côi, quá trình làm sạch chúng sẽ không được thực hiện cho đến khi có một vụ va chạm. Có nghĩa là, nếu bạn có các kết nối tối đa được đặt thành 100 và có 50 mục trong process_info và giả sử 20 trong số đó là mồ côi, các kết nối sẽ không được làm sạch cho đến khi SDE cố gắng đưa mục nhập thứ 101 đó vào process_info. Dù sao, bạn đang nói rằng bạn thực sự nhận được các kết nối tối đa vượt quá thông điệp để quá trình dọn dẹp các kết nối sẽ được kích hoạt. Tôi sẽ điều tra cách mọi người sử dụng các máy trạm đó bị ngắt kết nối.
Derek Swingley

Câu trả lời:



1

Bạn cũng có thể xem xét việc người dùng của mình kết nối trực tiếp và bỏ qua dịch vụ hoàn toàn. Điều này đã xóa một số vấn đề tôi gặp phải với các dịch vụ bị treo và dẫn đến tốc độ kết nối tăng nhẹ cho người dùng.


Có, và điều này cũng làm giảm tải cho máy; vì PC người dùng xử lý DAL giữ SQL giống như một kho dữ liệu so với việc nó hỗ trợ dữ liệu theo chương trình nhiều hơn.
DEWright

1

Đây là một câu trả lời đã được gửi từ người giám sát của tôi đến một khách hàng ngày hôm qua về vấn đề này.

Để tăng số lượng kết nối ArcSDE, loại cú pháp sau có thể được sử dụng trên máy chủ ArcSDE:

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

trong đó "sde_instance" là tên dịch vụ hoặc số cổng của ArcSDE.

Bạn có thể xác minh rằng thay đổi này đã được thực hiện bằng lệnh:

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


Có, trên thực tế tôi đã làm điều này ngoài việc tạo ra một công việc định kỳ khởi động lại arcsdedịch vụ mỗi tuần một lần.
nw1

0

Chúng tôi luôn luôn trả lại máy chủ định kỳ để làm điều này ...


0

Bạn đã đọc bài đăng này trên Diễn đàn ESRI, nó hơi cũ nhưng có những đoạn script thực hiện những gì bạn muốn làm?


Tôi đã chạy tập lệnh được đăng bởi T Bmột lần, nhưng nó không có hiệu lực. Nó đã gần 5 tuổi, vì vậy tôi nghi ngờ có quá nhiều thay đổi trong môi trường kể từ đó.
nw1

Tôi sẽ không cho rằng quá nhiều đã thay đổi về phía SDE. Có một liên kết đến kịch bản bạn đã chạy?
Derek Swingley

Tôi không nghĩ nên có bất kỳ sự khác biệt lớn nào giữa 9.2 và 9.3.1, ESRI đã thay đổi cách xử lý cơ sở dữ liệu địa lý nhưng đó là trong ArcGIS 10. Chúng tôi đang khởi động lại ArcSDE của mình vì nhiều người khác đang đề xuất, vì vậy tôi không thể chia sẻ bất kỳ kinh nghiệm về việc sử dụng các kịch bản.
MathiasWestin

nội dung GDB đã thay đổi (các bảng có tiền tố GDB được hợp nhất), nhưng tôi khá chắc chắn rằng nội dung SDE cơ bản là giống nhau.
Derek Swingley

@Swingley Tôi hoàn toàn đồng ý với bạn.
MathiasWestin
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.