session is down 666

看到這個報錯,是不是覺得很嘲諷,down了 還 666呢,搞心態吧。也不知道誰定義的這個報錯。

先說下報錯的背景,開發環境中。我們有個調度系統,並且允許其他系統的使用。調度平臺主要功能 定時執行一些,設定好的任務、命令行作業。

大數據平臺,反饋出一個調度系統執行作業時,一直報錯 session is down 666,導致作業一直執行失敗,嚴重影響了他們的開發,需要我協助解決。

主要原因,調度系統 使用 ssh 遠程服務器連接失敗
1.登錄調度服務器,使用 ssh命令遠程大數據服務器
ssh 用戶名(大數據服務器用戶名)@idp(大數據服務器用戶名)
密碼*****
結果是可以連接的,排除兩服務器 之間沒有開通 ssh訪問關係可能。



2.查看 被遠程的服務器(大數據服務器)系統設置,命令爲
cat /etc/ssh/sshd_config
查看服務器配置項 PasswordAuthentication 居然設置的是 no 不允許密碼 登錄。這就簡單了,改下配置就可以了。但是這個步驟需要用 root權限。本次也是 因爲被遠程的服務器這個設置的爲no,導致連接失敗的,改爲 yes後,訪問正常。

3.jar加載順序
造成這種報錯,還有一種可能,也是最難排查的一種,就是java程序中 jar包加載順序。因爲生產上我遇到過這種問題,本文中就一塊說了,佔用篇幅較長。

我們程序中使用連接 服務器的方式是 ,使用ssh 連接,建立會話,然後 執行 shell 命令或執行腳本。建立ssh 鏈接使用的工具包爲 jsch-0.1.51.jar sshcore2.0.2.jar ,這兩個jar包 。在本地部署運行時正常,遠程服務器,執行 shell命令都沒問題。但是部署到was服務器後,就會出現報錯 session is down 666

這個是由於 was服務器的類加載順序造成的,需要調整類的加載策略。調整方式 爲
服務器 -> 服務器類型 -> websphere -> application ->servaer ->server1(我的是1)
選擇類裝入策略 :單個
類裝入方式 :類已裝入並且先使用本地類裝入器(父類最後
再將 選擇類裝入策略改爲 :多個
確定,保存至主配置。




到這裏基本問題基本已得到解決。如果還沒有解決,那就只能用最後一種方式,手動調整jar包加載順序。調整jar包位置。將 jsch-0.1.51.jar 由WEB-INFO lib 路徑下 複製到 WEB-INFO class 路徑下,然後重啓was服務器,這樣 就會先加載 jsch-0.1.51.jar,再加載 sshcore2.0.2.jar 就不會出現這兩個類 加載順序的問題。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章