<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    posts - 42,comments - 83,trackbacks - 0
        客戶提了這么個問題:admin server因為out of memory導致性能很差,此時managed server連接admin server的話,可能因為網(wǎng)絡原因或者admin server因為OOM而導致的低性能,最終導致managed server很多線程掛死在socket read上。如果沒有超時機制,這樣的線程會一直掛著,如果這樣的線程很多的話,系統(tǒng)線程資源逐漸會被消耗完,從而引起managed server無法提供響應。下面是這個客戶的線程堆棧,

    Thread-90 "[STUCK] ExecuteThread: '6' for queue: 'weblogic.kernel.Default (self-tuning)'" <alive, in native, suspended, priority=1, DAEMON> {
        jrockit.net.SocketNativeIO.readBytesPinned(SocketNativeIO.java:???)
        jrockit.net.SocketNativeIO.socketRead(SocketNativeIO.java:25)
        java.net.SocketInputStream.socketRead0(SocketInputStream.java:???)
        java.net.SocketInputStream.read(SocketInputStream.java:107)
        java.io.BufferedInputStream.fill(BufferedInputStream.java:189)
        java.io.BufferedInputStream.read(BufferedInputStream.java:234)
        ^-- Holding  lock: java.io.BufferedInputStream@5cc3faf[thin lock]
        weblogic.net.http.MessageHeader.isHTTP(MessageHeader.java:214)
        weblogic.net.http.MessageHeader.parseHeader(MessageHeader.java:141)
        weblogic.net.http.HttpClient.parseHTTP(HttpClient.java:477)
        ^-- Holding lock: java.io.BufferedInputStream@5cc3faf[thin lock]
        weblogic.net.http.HttpURLConnection.getInputStream(HttpURLConnection.java:329)
        ^-- Holding lock: java.io.BufferedInputStream@5cc3faf[thin lock]
        weblogic.rjvm.http.HTTPClientJVMConnection.connect(HTTPClientJVMConnection.java:161)
        ^-- Holding lock: java.io.BufferedInputStream@5cc3faf[thin lock]
        weblogic.rjvm.http.HTTPClientJVMConnection.createConnection(HTTPClientJVMConnection.java:86)
        weblogic.rjvm.ConnectionManager.createConnection(ConnectionManager.java:1723)
        weblogic.rjvm.ConnectionManager.findOrCreateConnection(ConnectionManager.java:1330)
        ^-- Holding lock: java.io.BufferedInputStream@5cc3faf[thin lock]
        ^-- Holding lock: weblogic.net.http.HttpClient@5cc3ea0[thin lock]
        weblogic.rjvm.ConnectionManager.bootstrap(ConnectionManager.java:440)
        weblogic.rjvm.ConnectionManager.bootstrap(ConnectionManager.java:315)
        weblogic.rjvm.RJVMManager.findOrCreateRemoteInternal(RJVMManager.java:220)
         ^-- Holding lock: java.io.BufferedInputStream@5cc3faf[thin lock]
        weblogic.rjvm.RJVMManager.findOrCreate(RJVMManager.java:206)
        weblogic.rjvm.RJVMFinder.findOrCreateRemoteServer(RJVMFinder.java:226)
        weblogic.rjvm.RJVMFinder.findOrCreate(RJVMFinder.java:170)
        ^-- Holding lock: java.io.BufferedInputStream@5cc3faf[thin lock]
        weblogic.rjvm.ServerURL.findOrCreateRJVM(ServerURL.java:154)
        weblogic.jndi.WLInitialContextFactoryDelegate.getInitialReference(WLInitialContextFactoryDelegate.java:384)
        weblogic.jndi.Environment.getInitialReference(Environment.java:223)
        weblogic.server.channels.RemoteChannelServiceImpl.registerInternal(RemoteChannelServiceImpl.java:153)
        ^-- Holding lock: java.io.BufferedInputStream@5cc3faf[thin lock]
        weblogic.server.channels.RemoteChannelServiceImpl.access$300(RemoteChannelServiceImpl.java:46)
        weblogic.server.channels.RemoteChannelServiceImpl$TimerListenerImpl.timerExpired(RemoteChannelServiceImpl.java:101)
        weblogic.timers.internal.TimerImpl.run(TimerImpl.java:253)
        weblogic.work.SelfTuningWorkManagerImpl$WorkAdapterImpl.run(SelfTuningWorkManagerImpl.java:464)
        weblogic.work.ExecuteThread.execute(ExecuteThread.java:197)
        weblogic.work.ExecuteThread.run(ExecuteThread.java:164)

            現(xiàn)在的問題是,對于這種問題可不可以通過超時設定來釋放線程。weblogic中, RJVM(即server之間,可能是admin-to-managed,也可能是managed-to-managed)之間,連接的協(xié)議有兩類五種,兩類是http、t3,五種是http、https、t3、t3s、local。超時設定時協(xié)議層面的東西,所以我們這里只討論http和t3。

            對于t3,從上面的trace可以看到,連接的創(chuàng)建從ServerURL.findOrCreateRJVM()開始,這個方法有多種實現(xiàn),不同的實現(xiàn)使用不同的timeout,客戶端程序可以通過向environment中set一個叫做weblogic.jndi.requestTimeout的變量,如果不做設定,則使用系統(tǒng)默認的DEFAULT_CONNECTION_TIMEOUT,這是個靜態(tài)值(0)。而在上面的stack trace中,我們可以看到,environment是在RemoteChannelServiceImpl中定義的,這個environment對于客戶而言是不可配置的,而weblogic自己的這個env中是不設定request timeotu的,也就是,無論哪種方式,connectionTimeout/readTimeout對于t3,都是不可配置的,而且默認是沒有超時的。

            而對于http,HTTPClientJVMConnection在創(chuàng)建HttpURLConnection的時候,會讀取系統(tǒng)環(huán)境變量中的如下兩個變量,
    weblogic.http.client.defaultReadTimeout
    weblogic.http.client.defaultConnectTimeout
            如果沒有設定,這兩個變量的默認值均為-1,即不做timeout。如果我們作了設定,這兩個值即讀超時、連接超時都會生效。這兩個值可以用于解決上述的問題。



    posted on 2009-08-29 23:15 走走停停又三年 閱讀(3680) 評論(0)  編輯  收藏

    只有注冊用戶登錄后才能發(fā)表評論。


    網(wǎng)站導航:
     
    主站蜘蛛池模板: 亚洲成色在线综合网站| va亚洲va日韩不卡在线观看| 国精无码欧精品亚洲一区| 一区二区三区AV高清免费波多| 免费看的成人yellow视频| 国产亚洲美女精品久久久久| 性做久久久久久久免费看| 亚洲日韩中文在线精品第一 | 久久国产亚洲高清观看| 国产VA免费精品高清在线| 亚洲香蕉成人AV网站在线观看 | 国产日产亚洲系列最新| 成人午夜免费视频| 国产亚洲成人久久| 黄网站免费在线观看| 亚洲国产精品人久久| 精品国产无限资源免费观看| 亚洲伦理中文字幕| 国产在线观看www鲁啊鲁免费| AV激情亚洲男人的天堂国语| 亚洲美女在线国产| 大地影院MV在线观看视频免费| 亚洲AV无码成人精品区天堂| 免费人成在线观看69式小视频| 亚洲中文字幕一二三四区苍井空| 四虎www成人影院免费观看| 女bbbbxxxx另类亚洲| 国产亚洲精品a在线无码| 最近新韩国日本免费观看 | 亚洲av午夜国产精品无码中文字| 日韩免费观看视频| 一级毛片免费全部播放| 亚洲成人在线网站| 精品国产免费观看久久久| 国产精品黄页免费高清在线观看| 亚洲卡一卡2卡三卡4卡无卡三| www.黄色免费网站| 一区二区免费国产在线观看 | 国产精品无码永久免费888| 亚洲AV无码1区2区久久| 啦啦啦手机完整免费高清观看|