0

mod_jk をコネクタとして使用して、GlassFish 3.1 のフロントエンドとして Apache を使用しています。2 つの間の接続は非常に不安定で、システムに私が 1 人しかいない場合でも、約 50% の確率で動作します。問題が発生すると、ブラウザから HTTP タイムアウトが返され、GlassFish サーバーのログには 2 種類の例外があります。

java.io.IOException
at org.apache.jk.common.JkInputStream.receive(JkInputStream.java:249)
at org.apache.jk.common.JkInputStream.refillReadBuffer(JkInputStream.java:309)
at org.apache.jk.common.JkInputStream.doRead(JkInputStream.java:227)
at com.sun.grizzly.tcp.Request.doRead(Request.java:501)
at org.apache.catalina.connector.InputBuffer.realReadBytes(InputBuffer.java:336)
at com.sun.grizzly.util.buf.ByteChunk.substract(ByteChunk.java:431)
at org.apache.catalina.connector.InputBuffer.read(InputBuffer.java:357)
at org.apache.catalina.connector.CoyoteInputStream.read(CoyoteInputStream.java:265)
at sun.nio.cs.StreamDecoder.readBytes(StreamDecoder.java:264)
at sun.nio.cs.StreamDecoder.implRead(StreamDecoder.java:306)
at sun.nio.cs.StreamDecoder.read(StreamDecoder.java:158)
at java.io.InputStreamReader.read(InputStreamReader.java:167)
at com.ctc.wstx.io.MergedReader.read(MergedReader.java:101)
at com.ctc.wstx.io.ReaderSource.readInto(ReaderSource.java:84)
at com.ctc.wstx.io.BranchingReaderSource.readInto(BranchingReaderSource.java:57)
at com.ctc.wstx.sr.StreamScanner.loadMore(StreamScanner.java:967)
at com.ctc.wstx.sr.StreamScanner.getNext(StreamScanner.java:738)
at com.ctc.wstx.sr.BasicStreamReader.nextFromProlog(BasicStreamReader.java:1995)
at com.ctc.wstx.sr.BasicStreamReader.nextFromTree(BasicStreamReader.java:2647)
at com.ctc.wstx.sr.BasicStreamReader.next(BasicStreamReader.java:1019)

java.net.SocketException: Broken pipe
at java.net.SocketOutputStream.socketWrite0(Native Method)
at java.net.SocketOutputStream.socketWrite(SocketOutputStream.java:92)
at java.net.SocketOutputStream.write(SocketOutputStream.java:136)
at org.apache.jk.common.ChannelSocket.send(ChannelSocket.java:580)
at org.apache.jk.common.JkInputStream.doWrite(JkInputStream.java:206)
at com.sun.grizzly.tcp.Response.doWrite(Response.java:685)
at org.apache.catalina.connector.OutputBuffer.realWriteBytes(OutputBuffer.java:420)

Apache 側では、mod_jk ログは完全に空です。この状態になると、回復する唯一の方法は、Apache サーバーを再起動することです。面白いことに、再起動後、タイムアウトになったリクエストが魔法のように自動的に実行されます。誰が保管しているかわかりません。

とにかく、私は Apache と mod_jk の経験がまったくないので、どこから問題を探し始めたらよいのか迷っていました。私が使用しているソフトウェアのバージョンは次のとおりです。

Apache: バージョン 2.2.17-2、GlassFish: 3.1、mod_jk: 1.2.30-1

どんな助けでも大歓迎です!

ありがとう。

4

1 に答える 1

1

Apacheの起動中にmod_jkの初期化についてmod_jkログを確認します。ログが書き込まれない場合は、mod_jkモジュールのインストール/構成に問題があります。

Glassfishクラスターを作成しましたか?はいの場合は、クラスターのDjvmRouteおよびDcom.sum.web.enterprise.jkenabled jvmオプションを設定し、mod_jkからの要求をリッスンするために作成する必要があるDASホスト上のhttpネットワークリスナーも確認します(最初はjk_disabledなので、有効にします) ..そうでない場合は、アプリケーションをデプロイしている各サーバードメインでmod_jkのhttpネットワークリスナーを確認します。

于 2011-08-23T12:33:27.527 に答える