反復(fù)嘗試后他們的答復(fù)是:“網(wǎng)頁打不開。。”
可是我自己本地是可以跑通的,本地HOST配置如下: 127.0.0.1 sinuobao.com 問題的雛形出現(xiàn)了:本機服務(wù)器已經(jīng)啟動并能訪問的情況下,遠程無法訪問。 我第一個反應(yīng)是 防火墻?可是關(guān)閉防火墻后依然不行。。 于是我把自己本地的HOST文件也改成了 10.1.30.77 sinuobao.com(實際IP) 果然,我也不能訪問。。 問題變成了:無法通過實際IP地址去訪問,只能用127.0.0.1或者localhost來訪問。 思考一下,啟動一個項目,通過127.0.0.1或者localhost可以訪問,而實際IP無法訪問。問題應(yīng)該是出在服務(wù)器上,應(yīng)該是服務(wù)器沒有監(jiān)聽實際IP造成的。由于我是剛把本地的服務(wù)器從tomcat換成jboss,于是我更加相信問題是由于Jboss服務(wù)器造成的。 Google之,知道了Jboss的一些常用配置文件的路徑: 1、相關(guān)DTD定義文件位于$JBOSS-HOME/docs/dtd,在其下的文件中可以查閱某個XML配置文件中某個元素或?qū)傩缘囊饬x。 2、數(shù)據(jù)源配置文件的路徑,$JBOSS-HOME/server/default/deploy,文件格式必須是*-ds.xml的樣式。不同的數(shù)據(jù)庫配置參數(shù)可參考$JBOSS-HOME/docs/examples/jca/下的示例文檔。 3、公共的jar包我們可以放在$JBOSS-HOME/server/default/lib下,如數(shù)據(jù)庫的JDBC jar,log4j.jar等,如果這些JAR已經(jīng)在該lib下放置了,那么我們的應(yīng)用WEB-INF/lib下不應(yīng)該再放置,否則JBOSS也會將他們再一次加載,白白占用內(nèi)存。 4、配置日志的文件,log4j.xml位于$JBOSS-HOME/server/default/conf下,具體配置下文還會有一點介紹 5、$JBOSS-HOME/server/default/work下存放的是JSP編譯后的.java 及.class文件,如果調(diào)試JSP時出錯了,可以到該目錄下(一級級去翻吧)去找對應(yīng)的文件,調(diào)試問題。還有個小TIPS,有時我們明明把一個JSP更新到對應(yīng)的目錄里了,可是去刷新頁面時,內(nèi)容還是舊的,為了解決該問題,我們可以到work目錄下,將對應(yīng)的.java及.class文件刪了,再刷新即可,這個原因不好推測,有時可以自動刷新,有時不行。單個的TOMCAT都能自動刷新,不知為何集成到JBOSS里卻有時不行。還需注意的事,你在清除舊的java、class文件時,不能為了省事,而直接刪除目錄,否則刷新時會報錯的,等著你的就是要重啟JBOSS服務(wù)了。 6、$JBOSS-HOME/server/default/log下存放的是日志文件,默認的log4j.xml配置是將日志輸出到該文件夾下的server.log文件,可以去查看信息進行調(diào)試。 7、配置應(yīng)用的WEB服務(wù)的端口號及參數(shù) JBOSS4.2.2是在…. $JBOSS-HOME \server\default\deploy\jboss-web.deployer\server.xml中,找到8080,修改為你想設(shè)定的端口即可。 在官網(wǎng)上看到了以下說明: JBossAS 4.2.0.GA * JBossAS now binds its services to localhost (127.0.0.1) *by default*, instead of binding to all available interfaces (0.0.0.0). This was primarily done for security reasons because of concerns of users going to production without having secured their servers properly. To enable remote access by binding JBoss services to a particular interface, simply run jboss with the -b option. To bind to all available interfaces and re-enable the legacy behaviour use -b 0.0.0.0. In any case, be aware you still need to secure you server properly. 原因: JBOSS 4.2以上版本服務(wù)啟動如果不加任何參數(shù)的話,只監(jiān)聽127.0.0.1,就是說只能用127.0.0.1或者localhost訪問,用本機的對外地址 訪問不了,同一網(wǎng)絡(luò)內(nèi)別的機子沒法訪問。除非你用參數(shù)-b ip地址 來綁定監(jiān)聽的地址才可以。 這和以前版本的JBOSS不一樣,以前版本的不加任何參數(shù)是監(jiān)聽本機所有的IP地址,現(xiàn)在必須使用參數(shù)-b 0.0.0.0才可以監(jiān)聽全部地址。 解決辦法有二: 1. 1. 在jboss-4.2.2.GA\bin目錄下,新建start.bat文件,錄入如下內(nèi)容: run.bat -b 0.0.0.0 保存即可。使用你新制作的start.bat文件啟動服務(wù)之后就可以IP訪問了。 2. 2. 找到 $JBOSS-HOME \server\default\deploy\jboss-web.deployer\server.xml,找到: JBOSS <Connector port="8080" address="${jboss.bind.address}" 將其中的${jboss.bind.address}改為0.0.0.0 再次啟動Jboss,問題解決了。 JBoss常用參數(shù): -c 服務(wù)配置名,指定JBoss啟動哪個服務(wù)配置,默認是default,常用有 -c all -b 綁定JBoss服務(wù)的IP,特別在部署EJB服務(wù),只能通過綁定的IP查找EJB, -h, –help 顯示幫助信息 -V, –version 顯示版本信息 -D<name>[=<value>] 設(shè)置系統(tǒng)屬性 -d, –bootdir=<dir> 設(shè)置啟動補丁目錄的位置;必須是絕對路徑或者url -p, –patchdir=<dir> 設(shè)置補丁目錄的位置;必須是絕對路徑或者url -n, –netboot=<url> 從指定的url網(wǎng)絡(luò)位置啟動 -c, –configuration=<name> 指定服務(wù)器啟動的配置(default、all、minimal) -B, –bootlib=<filename> 將其它的jar包添加到bootclasspath的前面 -L, –library=<filename> 將其它的jar包添加到 loaders classpath -C, –classpath=<url> 將其它的url添加到loaders classpath -P, –properties=<url> 從指定的url加載系統(tǒng)屬性 -b, –host=<host or ip> 所有JBoss Service綁定的地址 -g, –partition=<name> HA分區(qū)的名稱(缺省為DefaultDomain) -u, –udp=<ip> UDP的多播地址 -l, –log=<log4j|jdk> 設(shè)置日志記錄插件類型 JBoss 4.2.2GA環(huán)境變量 JBOSS_HOME JBoss的位置 JAVA Java運行程序的位置 JAVA_OPTS JVM啟動參數(shù) MAX_FD JBoss能夠使用文件描述符的最大數(shù)量(僅用于Un*x) run.bat文件: 物理內(nèi)存 意思為: -Xms128m 初始的java內(nèi)存堆大小 128M -Xmx1024m 最大的java內(nèi)存堆大小 1024M -XX:PermSize=64m GC預(yù)留的內(nèi)存,如果你的應(yīng)用有大量的Class被動態(tài)載入或卸載,你應(yīng)該將這個參數(shù)設(shè)大些 -XX:MaxPermSize=256m 最大的GC預(yù)留內(nèi)存 引用Antx & Webx for Dummies: —————————————————————————————————————– 應(yīng)用服務(wù)器設(shè)置:不管是Tomcat還是JBoss,應(yīng)用都是比較占用內(nèi)存的(大量數(shù)據(jù)被緩存來提升性能),所以你在運行應(yīng)用前需要調(diào)整一下內(nèi)存,如果內(nèi)存比較小,你的程序可能都啟動不了。請?zhí)砑迎h(huán)境變量,JAVA_OPTS,將其設(shè)置為 “-Xms256M -Xmx768M” ,這樣就而可以啦,這個設(shè)置對JBoss和Tomcat都可以適用。 —————————————————————————————————————– 另: 修改$jboss/bin/run.conf文件,找到“#JAVA_OPTS=”,如果沒有該字符串,請?zhí)砑樱⑷サ糇钋懊娴摹?”,修改該字符串(含雙引號)為JAVA_OPTS=”-server -Xms512m -Xmx1024m”,這是分配JVM的最小和最大內(nèi)存,取決于硬件物理內(nèi)存的大小,建議均設(shè)為物理內(nèi)存的一半。 遠程調(diào)試 遠程調(diào)試(remote debug):在開發(fā)環(huán)境下,通常會設(shè)計到程序的debug,在Java中就是通常hotspot機制完成的。如果你想調(diào)試你已經(jīng)運行的Tomcat和JBoss,請找到對應(yīng)的啟動腳本,然后添加以下啟動參數(shù)項: JAVA_OPTS=-Xdebug -Xrunjdwp:transport=dt_socket,address=8787,server=y,suspend=y * server:(是”y”或否”n”):如“server=y”,收到一個要依附的調(diào)試應(yīng)用程序;如“server=n”,依附到指定地址的調(diào)試應(yīng)用程序。 * address:連接傳送地址。如果server=n,嘗試依附到這個地址的調(diào)試應(yīng)用程序;如server=y,收到這個地址的連接。 * timeout:如果server=y,它以毫秒為單位指定等待調(diào)試器依附的時間;如server=n,它以毫秒為單位指定依附到調(diào)試器所用的時間。 * suspend:如“是”,JVM延緩執(zhí)行,直到調(diào)試器與被調(diào)試JVM建立連接。 JBoss 性能優(yōu)化(解決Jboss內(nèi)存緊張的問題) 修改$JBOSS_HOME/bin/run.conf文件 JAVA_OPTS=”-Xms 520m -Xmx 1220m -Xss 15120k +XX:AggressiveHeap” 1. +XX:AggressiveHeap 這使得 Xms 1220m沒有意義。這個參數(shù)讓jvm忽略Xmx參數(shù),瘋狂地吃完一個G物理內(nèi)存,再吃盡一個G的swap。 另外Xmx作為允許jvm使用的最大內(nèi)存數(shù)量,不應(yīng)該超過物理內(nèi)存的90%。 而之所以使用了這個參數(shù),是因為不加的話,JBoss會在運行一天左右的時間后迅速崩潰,甚至半個小時就崩潰。 2. -Xss 15120k 這使得JBoss每增加一個線程(thread)就會立即消耗15M內(nèi)存,而最佳值應(yīng)該是128K,默認值好像是512k. 這 就是JBoss剛啟動時,還有200Mb內(nèi)存富余,但會在一個小時內(nèi)迅速用完,因為服務(wù)器的threads在迅速增加。前3天,每天都多吃80Mb左右的 swap.在第四天開始穩(wěn)定下來。原因是:服務(wù)器在線程到達100之后,一般不再增加新的線程,新增加的在用完之后,會被迅速 destroy,1.25-2.10所使用的線程基本是1.21- 1.23創(chuàng)建的,因此沒有再消耗新的內(nèi)存。服務(wù)器持續(xù)運行時間達到20天。 3. -Xms 指定初始化內(nèi)存大小 作如下修改: 1.修改JAVA_OPTS,去掉+XX:AggressiveHeap,修改Xss?,F(xiàn)在的JAVA_OPTS為: -Xms 520m -Xmx 900m -Xss 128k 2.修改deploy/jbossweb-tomcat55.sar/service.xml 將maxThreads根據(jù)目前的訪問量由默認的250降為75,并加入2個參數(shù): maxSparseThreads=”55″,minSparseThreads=”25″ 3.去掉了一些不用的服務(wù)。 Jconsole: 用于對JVM中內(nèi)存,線程和類等的監(jiān)控。 在Jboss啟動參數(shù)里添加: set JAVA_OPTS=%JAVA_OPTS% -Dprogram.name=$PROGNAME -Dcom.sun.management.jmxremote.port=9999 -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false 啟動Jboss后,在命令行中輸入Jconsole,選擇遠程進程,輸入IP地址和上面設(shè)置的9999,用戶名密碼為空。 接下來,看一下這個工具的總括。 Jconsole能捕獲到以下信息: 概述 - JVM概述和一些監(jiān)控變量的信息 內(nèi)存 - 內(nèi)存的使用信息 線程 - 線程的使用信息 類 - 加載java類的信息 VM - JVM摘要 MBeans - 所有MBeans的信息 有了上面的概念之后,性能測試過程中需要關(guān)注哪些信息呢?一般主要關(guān)注內(nèi)存欄、線程欄、類欄,概述欄和VM欄次之,MBeans欄在追蹤具體問題時用到。下面詳細說明一下使用方法。 1. 內(nèi)存欄 內(nèi)存欄中顯示了內(nèi)存堆棧消耗情況、內(nèi)存池分區(qū)統(tǒng)計情況、垃圾回收情況等內(nèi)容,并以圖表實行顯示出來。點擊圖表下拉框,可以選擇具體需要的圖。 在這里,還可以強制執(zhí)行GC,另內(nèi)存回收更加爽歪歪! 2. 線程欄 線程欄中顯示了當(dāng)前運行的線程,并以圖表實行顯示出來。對于啟用多線程系統(tǒng)分析,非常有用。例如,它可以協(xié)助我們追蹤線程狀態(tài)、線程阻塞、線程等待、線程掛起、線程資源爭用問題。 3.類欄 類欄中顯示了當(dāng)前加載類的信息。并以圖表實行顯示出來。如果要了解當(dāng)前載入類的數(shù)量、已載入類的總數(shù)量、已卸載類的總數(shù)量,在這里查看非常有用。 |
|