2012-01-04 54 views
2

我在瀏覽器和我的自定義Web服務器之間有一個apache代理。因此,啓動網絡服務器後,我可以訪問我的Web應用程序4-5小時。之後,我收到此錯誤訪問應用程序時出現代理錯誤

代理錯誤代理服務器收到來自 上游服務器的無效響應。代理服務器無法處理請求GET /。

原因:錯誤從遠程服務器

讀書要再次訪問Web應用程序,我必須重新啓動Web服務器。我試圖檢查我從該日誌我的Web服務器和唯一的錯誤得到了日誌,我發現這是

com.mysql.jdbc.CommunicationsException:通信鏈路故障 由於底層異常:

** BEGIN嵌套異常**

java.net.SocketException異常MESSAGE:連接超時

堆棧跟蹤:

java.net .SocketException:連接超時 at java.net.SocketInputStream.socketRead0(Native Method) at java.net.SocketInputStream.read(SocketInputStream.java:146) at com.mysql.jdbc.util.ReadAheadInputStream.fill(ReadAheadInputStream的.java:113) 在com.mysql.jdbc.util.ReadAheadInputStream.readFromUnderlyingStreamIfNecessary(ReadAheadInputStream.java:160) 在com.mysql.jdbc.util.ReadAheadInputStream.read(ReadAheadInputStream.java:188) 在com.mysql .jdbc.MysqlIO.readFully(MysqlIO.java:1910) 在com.mysql.jdbc.MysqlIO.reuseAndReadPacket(MysqlIO.java:2304) 在com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:2803) 在com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:1573) at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:1665) at com.mysql.jdbc.Connection.execSQL(Connection.java:3170) at com.mysql.jdbc.Connection.execSQL(Connection。的java:3099) 在com.mysql.jdbc.Statement.execute(Statement.java:695) 在hra.database.Pool.getConnection(Pool.java:62)

** END嵌套異常**

發送到服務器的最後一個數據包是925624毫秒前。

而我試圖解決這個數據庫錯誤,但我仍然得到上面提到的代理錯誤,所以肯定日誌信息是沒有用的。

這是我從Apache代理獲取日誌

(70007)指定的超時時間已過期:代理:錯誤讀取狀態 線從遠程服務器

有誰知道什麼可以成爲問題或任何有用的指針來解決這個問題?

+2

「我必須重新啓動Web服務器」< - 哪一個?你的位置? – fge 2012-01-04 20:44:13

+0

是的,我的自定義書寫網絡服務器。 – yogsma 2012-01-12 17:04:25

回答

1
  1. apache代理失敗,因爲customwebserver沒有回答。你的
  2. customwebserver記錄崩潰等待mysql來回答。重啓
  3. customwebserver修復它,所以mysql不是問題。它看起來像你的customwebserver處理它與mysql的連接的問題。

    我們可以看到你的jdbc配置嗎?你有autoReconnect = true嗎?

+0

我使用jdbc連接,通過像這樣的新池池(「jdbc:mysql://」+ host +「/ mydatabase?jdbcCompliantTruncation = false」,「org.gjt.mm.mysql.Driver」,windows?2:20 )沒有autoReconnect = true。我不認爲在連接池中使用autoreconnect是個好主意。 – yogsma 2012-01-16 19:52:01

1

可能發生的情況是您的上游服務器由於不活動而自行關閉。在控制該服務器的服務器上找到該設置並將其啓動。

+0

你的意思是網絡服務器? – yogsma 2012-01-04 20:52:21

+0

無論哪個代理人抱怨迴應不佳。 – cdeszaq 2012-01-04 20:54:11

0

我認爲像由你遇到你的基礎設施的成員之一,提出了超時以前的答案說:

  • 服務器
  • 網絡設備(路由器是聰明的野獸,但防火牆可以巧妙太)

您是否設置了真正的連接池?使用心跳機制保持活躍的連接? 這誘使一些網絡流量,但避免了這樣的問題? 嘗試使用網絡捕獲工具,有許多日誌分析

HTH 傑羅姆

1

我可以看到,你看到兩個連接超時錯誤

  • Apache代理Web服務器超時,而連接到自定義的Web服務器
  • 自定義Web服務器超時,同時連接到數據庫

如果在代理服務器上設置的超時數量爲,比數據庫連接超時設置少,則在數據庫連接超時之前,代理服務器也會超時。

  • 作爲第一件事情解決所有DB連接問題(不通過代理)直接連接到自定義Web服務器測試應用程序。
  • 觀察並確定正常響應時間和最大響應時間。
  • 設置代理超時ProxyTimeout是比(最大響應時間)+(網絡延遲)

如果可能的話,你可以共享代理服務器配置,以進一步幫助您更多的價值。

相關問題