`

JBOSS实际IP地址访问的问题

阅读更多
HOST绑定如下:

10.1.30.77          sinuobao.com

反复尝试后他们的答复是:“网页打不开。。”

可是我自己本地是可以跑通的,本地HOST配置如下:

127.0.0.1            sinuobao.com

问题的雏形出现了:本机服务器已经启动并能访问的情况下,远程无法访问。

我第一个反应是 防火墙?可是关闭防火墙后依然不行。。

于是我把自己本地的HOST文件也改成了

10.1.30.77   sinuobao.com(实际IP)

果然,我也不能访问。。

问题变成了:无法通过实际IP地址去访问,只能用127.0.0.1或者localhost来访问。

思考一下,启动一个项目,通过127.0.0.1或者localhost可以访问,而实际IP无法访问。问题应该是出在服务器上,应该是服务器没有监听实际IP造成的。由于我是刚把本地的服务器从tomcat换成jboss,于是我更加相信问题是由于Jboss服务器造成的。

Google之,知道了Jboss的一些常用配置文件的路径:

1、相关DTD定义文件位于$JBOSS-HOME/docs/dtd,在其下的文件中可以查阅某个XML配置文件中某个元素或属性的意义。

2、数据源配置文件的路径,$JBOSS-HOME/server/default/deploy,文件格式必须是*-ds.xml的样式。不同的数据库配置参数可参考$JBOSS-HOME/docs/examples/jca/下的示例文档。

3、公共的jar包我们可以放在$JBOSS-HOME/server/default/lib下,如数据库的JDBC jar,log4j.jar等,如果这些JAR已经在该lib下放置了,那么我们的应用WEB-INF/lib下不应该再放置,否则JBOSS也会将他们再一次加载,白白占用内存。

4、配置日志的文件,log4j.xml位于$JBOSS-HOME/server/default/conf下,具体配置下文还会有一点介绍

5、$JBOSS-HOME/server/default/work下存放的是JSP编译后的.java 及.class文件,如果调试JSP时出错了,可以到该目录下(一级级去翻吧)去找对应的文件,调试问题。还有个小TIPS,有时我们明明把一个JSP更新到对应的目录里了,可是去刷新页面时,内容还是旧的,为了解决该问题,我们可以到work目录下,将对应的.java及.class文件删了,再刷新即可,这个原因不好推测,有时可以自动刷新,有时不行。单个的TOMCAT都能自动刷新,不知为何集成到JBOSS里却有时不行。还需注意的事,你在清除旧的java、class文件时,不能为了省事,而直接删除目录,否则刷新时会报错的,等着你的就是要重启JBOSS服务了。

6、$JBOSS-HOME/server/default/log下存放的是日志文件,默认的log4j.xml配置是将日志输出到该文件夹下的server.log文件,可以去查看信息进行调试。

7、配置应用的WEB服务的端口号及参数

JBOSS4.2.2是在….

$JBOSS-HOME \server\default\deploy\jboss-web.deployer\server.xml中,找到8080,修改为你想设定的端口即可。

在官网上看到了以下说明:

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以上版本服务启动如果不加任何参数的话,只监听127.0.0.1,就是说只能用127.0.0.1或者localhost访问,用本机的对外地址 访问不了,同一网络内别的机子没法访问。除非你用参数-b ip地址 来绑定监听的地址才可以。
这和以前版本的JBOSS不一样,以前版本的不加任何参数是监听本机所有的IP地址,现在必须使用参数-b 0.0.0.0才可以监听全部地址。

解决办法有二:

   1. 1. 在jboss-4.2.2.GA\bin目录下,新建start.bat文件,录入如下内容:
      run.bat -b 0.0.0.0
      保存即可。使用你新制作的start.bat文件启动服务之后就可以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常用参数:

-c 服务配置名,指定JBoss启动哪个服务配置,默认是default,常用有 -c all

-b 绑定JBoss服务的IP,特别在部署EJB服务,只能通过绑定的IP查找EJB,

-h, –help                                      显示帮助信息

-V, –version                                  显示版本信息

-D<name>[=<value>]                          设置系统属性

-d, –bootdir=<dir>  设置启动补丁目录的位置;必须是绝对路径或者url

-p, –patchdir=<dir>    设置补丁目录的位置;必须是绝对路径或者url

-n, –netboot=<url>           从指定的url网络位置启动

-c, –configuration=<name>  指定服务器启动的配置(default、all、minimal)

-B, –bootlib=<filename>  将其它的jar包添加到bootclasspath的前面

-L, –library=<filename>   将其它的jar包添加到 loaders classpath

-C, –classpath=<url>     将其它的url添加到loaders classpath

-P, –properties=<url>     从指定的url加载系统属性

-b, –host=<host or ip>    所有JBoss Service绑定的地址

-g, –partition=<name>    HA分区的名称(缺省为DefaultDomain)

-u, –udp=<ip>            UDP的多播地址

-l, –log=<log4j|jdk>       设置日志记录插件类型

JBoss 4.2.2GA环境变量

JBOSS_HOME                              JBoss的位置

JAVA                                  Java运行程序的位置

JAVA_OPTS                             JVM启动参数

MAX_FD        JBoss能够使用文件描述符的最大数量(仅用于Un*x)

run.bat文件:

物理内存

意思为:

-Xms128m 初始的java内存堆大小 128M

-Xmx1024m 最大的java内存堆大小 1024M

-XX:PermSize=64m GC预留的内存,如果你的应用有大量的Class被动态载入或卸载,你应该将这个参数设大些

-XX:MaxPermSize=256m 最大的GC预留内存

引用Antx & Webx for Dummies:

—————————————————————————————————————–

应用服务器设置:不管是Tomcat还是JBoss,应用都是比较占用内存的(大量数据被缓存来提升性能),所以你在运行应用前需要调整一下内存,如果内存比较小,你的程序可能都启动不了。请添加环境变量,JAVA_OPTS,将其设置为 “-Xms256M   -Xmx768M” ,这样就而可以啦,这个设置对JBoss和Tomcat都可以适用。

—————————————————————————————————————–

另:

修改$jboss/bin/run.conf文件,找到“#JAVA_OPTS=”,如果没有该字符串,请添加,并去掉最前面的“#”,修改该字符串(含双引号)为JAVA_OPTS=”-server -Xms512m -Xmx1024m”,这是分配JVM的最小和最大内存,取决于硬件物理内存的大小,建议均设为物理内存的一半。

远程调试

远程调试(remote debug):在开发环境下,通常会设计到程序的debug,在Java中就是通常hotspot机制完成的。如果你想调试你已经运行的Tomcat和JBoss,请找到对应的启动脚本,然后添加以下启动参数项:

JAVA_OPTS=-Xdebug -Xrunjdwp:transport=dt_socket,address=8787,server=y,suspend=y

    * server:(是”y”或否”n”):如“server=y”,收到一个要依附的调试应用程序;如“server=n”,依附到指定地址的调试应用程序。
    * address:连接传送地址。如果server=n,尝试依附到这个地址的调试应用程序;如server=y,收到这个地址的连接。
    * timeout:如果server=y,它以毫秒为单位指定等待调试器依附的时间;如server=n,它以毫秒为单位指定依附到调试器所用的时间。
    * suspend:如“是”,JVM延缓执行,直到调试器与被调试JVM建立连接。

JBoss 性能优化(解决Jboss内存紧张的问题)

修改$JBOSS_HOME/bin/run.conf文件

JAVA_OPTS=”-Xms 520m -Xmx 1220m -Xss 15120k +XX:AggressiveHeap”
1. +XX:AggressiveHeap

这使得 Xms 1220m没有意义。这个参数让jvm忽略Xmx参数,疯狂地吃完一个G物理内存,再吃尽一个G的swap。
另外Xmx作为允许jvm使用的最大内存数量,不应该超过物理内存的90%。
而之所以使用了这个参数,是因为不加的话,JBoss会在运行一天左右的时间后迅速崩溃,甚至半个小时就崩溃。
2. -Xss 15120k
这使得JBoss每增加一个线程(thread)就会立即消耗15M内存,而最佳值应该是128K,默认值好像是512k.
这 就是JBoss刚启动时,还有200Mb内存富余,但会在一个小时内迅速用完,因为服务器的threads在迅速增加。前3天,每天都多吃80Mb左右的 swap.在第四天开始稳定下来。原因是:服务器在线程到达100之后,一般不再增加新的线程,新增加的在用完之后,会被迅速 destroy,1.25-2.10所使用的线程基本是1.21- 1.23创建的,因此没有再消耗新的内存。服务器持续运行时间达到20天。

3. -Xms

指定初始化内存大小

作如下修改:
1.修改JAVA_OPTS,去掉+XX:AggressiveHeap,修改Xss。现在的JAVA_OPTS为:
-Xms 520m -Xmx 900m -Xss 128k
2.修改deploy/jbossweb-tomcat55.sar/service.xml
将maxThreads根据目前的访问量由默认的250降为75,并加入2个参数: maxSparseThreads=”55″,minSparseThreads=”25″
3.去掉了一些不用的服务。

Jconsole: 用于对JVM中内存,线程和类等的监控。

在Jboss启动参数里添加:
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地址和上面设置的9999,用户名密码为空。

接下来,看一下这个工具的总括。
Jconsole能捕获到以下信息:
概述  -  JVM概述和一些监控变量的信息
内存  -  内存的使用信息
线程   - 线程的使用信息
类       - 加载java类的信息
VM    -  JVM摘要
MBeans  - 所有MBeans的信息

有了上面的概念之后,性能测试过程中需要关注哪些信息呢?一般主要关注内存栏、线程栏、类栏,概述栏和VM栏次之,MBeans栏在追踪具体问题时用到。下面详细说明一下使用方法。

1. 内存栏
内存栏中显示了内存堆栈消耗情况、内存池分区统计情况、垃圾回收情况等内容,并以图表实行显示出来。点击图表下拉框,可以选择具体需要的图。

在这里,还可以强制执行GC,另内存回收更加爽歪歪!

2. 线程栏
线程栏中显示了当前运行的线程,并以图表实行显示出来。对于启用多线程系统分析,非常有用。例如,它可以协助我们追踪线程状态、线程阻塞、线程等待、线程挂起、线程资源争用问题。

3.类栏
类栏中显示了当前加载类的信息。并以图表实行显示出来。如果要了解当前载入类的数量、已载入类的总数量、已卸载类的总数量,在这里查看非常有用。

详细操作文档可见:

http://hi.baidu.com/xuwanbest/blog/item/3f6d4c7b375ff4f10bd18731.html
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics