ArcSOC進程數不斷增長導致oracle processes溢出原因分析


現場出現了一個問題,oracle運行一段時間之后,process個數會溢出,然后新的連接會失敗。通過分析,發現Arcgis Server 的ArcSOC進程在不段增長。ArcSOC是arcgis server 的一個容器進程,該容器中裝載arcgis object。

 

計划嘗試用兩個方法來解決/緩解這一問題。

 

方法一

調整每個服務的配置信息,具體如下:

  1. 將空間實例可持續運行的最長時間由1800s降低到600s

  2. 將實例的隔離級別設置為"低隔離性",如下圖:

 

建議:先使用第一種方法修改服務配置(除system與utility目錄之外),然后試運行一段時間看效果。如果效果不明顯,再嘗試第二種方法。

 

方法二

將多個地圖合並成一個地圖,然后發布成一個服務。擬通過該方法減少服務的個數。

 

接下來按計划行事。使用第一種方法修改配置,然后重新啟動地圖服務,此時報錯:"the base table definition string is invalid",查看數據庫注冊信息,然后使用該連接串嘗試手動登陸,竟然提示登陸失敗。再查看該賬戶的狀態,顯示為"EXPIRED"。

賬戶竟然過期了,這是不是arcsoc不斷增長的原因呢?極有可能,當連接請求失敗后,可能會不斷地嘗試重復請求連接,而每一次連接請求,arcgis server都會為其分配一個ArcSOC進程。如果是這樣,解鎖賬戶並重新賦密碼應該就可以解決問題。執行如下SQL:

Alter user xx identified by xx account unlock;

Alter profile default limit password_life_time unlimited;

 

再次重啟該地圖服務,OK,啟動成功。

持續觀察操作系統的進程情況,發現ArcSOC進程個數長期保持較穩定的水平,且oracle processes沒有再溢出。

至此,問題根因浮出水面,原來不是服務請求過多導致的,而是無效的登陸占用了process但卻沒有釋放。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM