2012-04-22 107 views
3

我的Java webapp在Tomcat 7.0.22內部運行,有時會有HTTP請求在生產環境中導致HTTP 500(我的應用中出現意外的異常)。爲了在臨時環境中重現這些錯誤,我通常會運行tcpdump並記錄所有HTTP通信,然後使用WireShark過濾包含http.response.code != 200 or 204 or 302的數據包,並在每個響應中運行「遵循HTTP流」,從而向我發送導致此錯誤的請求。然後,我可以在分段環境中使用cURL重新運行此請求。使用tcpdump記錄失敗的HTTP請求

我的問題是:

  • 怎麼能這個程序可以自動完成?
  • 有沒有一種方法可以實現與其他技術一樣的效果(重現錯誤)? (也許有些Filter裏面的Tomcat)

感謝

亞歷

+0

但是,爲什麼你不做簡單的事情就像在prod env中記錄請求一樣? – 2012-04-22 10:55:30

+0

我希望它是透明的。我還沒有找到一個很好的方法來做到這一點 – AlexV 2012-04-22 11:26:29

回答

1

有提供這些功能的工具。實際上,他們甚至可以做更多的事情:他們通常會測試您的java代碼,以便可以檢測哪個模塊對失敗負責。

我個人正在爲實現此類解決方案的公司命名爲Correlsense。它是商業性的,但是您可以從免費發佈的評估版開始,並且可以從我們的網站下載。或者我可以讓你看看newrelic.com,看起來比Correlsense更好,雖然我個人並沒有使用它,只是試圖玩一點。

+0

謝謝,其實我們有一個newRelic許可證,我檢查這個功能。你是否偶然知道它是如何在newRelic中實現的。因爲Tomcat過濾器有一個不太好的解決方案,它會消耗輸入流,從而能夠轉儲ip。 – AlexV 2012-04-22 11:28:41