簡體   English   中英

我們如何調試生產的Struts / Hibernate應用程序?

[英]How can we debug our production Struts/Hibernate apps?

因此,我們使用Netbeans 6.9.1 ,將我們的代碼推送到SVN服務器(dev),然后運行連接到DEV計算機上MySQL的本地Web服務器(Tomcat)。 我們可以在調試模式下運行並逐步執行代碼。

但是,我們然后獲取WAR文件,將其推送到生產機器(在生產數據庫中)。 該機器與開發人員完全分開。

但是我們遇到了持續的問題。 當我們對所有列進行三重檢查時,諸如Hibernate中的null id之類的事情,等等。

我們需要的是一種將調試器附加到PRODUCTION用戶並逐步執行代碼的方法。

我們有什么選擇?

感謝您的任何建議。

編輯

我想發布更多信息。 感謝那些提供建議的人。

首先,我們的生產服務器托管3個應用程序(以及prod數據庫)。 我們遇到最多問題的應用只有一個用戶,數據幾乎與開發人員的數據相同。 我們在JDBC中遇到事務問題,無法找到問題的根源。

如果您確實想將調試器附加到正在運行的生產服務器上,則Java完全可以做到這一點。 首先,使用以下命令運行服務器/ JVM:

-Xrunjdwp:transport=dt_socket,address=8778,server=y,suspend=n

現在,您可以使用EclipseIntelliJ IDEA中的 prd_server:8788地址連接IDE。

但是,有一些陷阱:

  • 您需要在指定端口上具有對生產服務器的TCP / IP訪問。 可能會涉及一些防火牆/ SSH隧道。

  • 默認情況下,調試器在遇到斷點時可能會掛起所有線程。 確保僅暫停當前服務器,否則將凍結整個服務器。

  • ...是的,遠程調試很危險 ,尤其是在生產環境中。

  • 處於調試模式/偵聽調試連接的JVM可能會稍微慢一些(雖然沒有看到)。

如果您願意遠程調試生產環境而不是提防它會減慢您的應用程序。 但是,如果您不能在開發服務器上復制問題,請按照以下步驟遠程調試應用程序:-

  1. 確保生產服務器的調試端口打開以遠程連接調試。
  2. 調試設置因不同的應用程序服務器而異
  3. 如果您使用的是Eclispe,則右鍵單擊該項目並轉到調試配置,輸入生產服務器名稱/ IP和端口號,然后單擊調試按鈕。 確保您的服務器打開了調試端口

讓我們知道您正在使用哪個生產服務器。

可以 將Tomcat配置為允許遠程調試器連接 ,但是我不建議這樣做,因為在連接調試器時 ,這會大大減慢JVM的執行速度,而且我相信,只要遇到斷點,所有線程的執行都會暫停。

使用開發服務器上的生產數據,添加更多日志記錄等來重新創建問題要好得多。

在嘗試調試Prod之前,請將您的Prod數據向下遷移到Dev env並在那里進行調試。 如果您有針對非Prod環境中Prod數據的安全策略,請根據需要清理數據。

如果問題與數據有關,則應盡快解決。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM