精华内容
下载资源
问答
  • 同样的一台机器,一个JVM运行两个个tomcat,和2个jvm分别运行一个tomcat ,那种情况性能更好。
  • 运行多个基于 JVM 的应用程序的能力,从而节省了驻留内存,而对开发人员的负担很小。 这种共享也称为“多租户”,因此得名“房东”。 :-) 可以共享的越多,单台机器上需要的内存越少,可以运行的服务越多,需要的...
  • 悲剧啊,今天才知道一台机器(操作系统)能启动多个JVM进程,各个JVM进程有独自的数据空间和代码空间,互不影响 并且每调用java命令之后(执行启动类的main函数),就是启动一个JVM实例 怪不得之前发现,一个...

    悲剧啊,今天才知道一台机器(操作系统)能启动多个JVM进程,各个JVM进程有独自的数据空间和代码空间,互不影响

    并且每调用java命令之后(执行启动类的main函数),就是启动一个JVM实例

    怪不得之前发现,一个Tomcat启动之后,其他的Tomcat目录下的的关闭脚本可以关闭之前起的Tomcat,看来要学的还有很多啊

    展开全文
  • 一台机器运行多个JBoss多实例

    千次阅读 2011-08-16 09:45:15
    我们经常会遇到这种情况,有时候希望在同一台机器上部署若干JBoss实例,上面运行不同的应用程序,这样的话无论由于什么原因需要对某个JBoss实例进行关闭、重启等操作都不会影响到其它实例上面的应用的正常运行,...
    我们经常会遇到这种情况,有时候希望在同一台机器上部署若干个JBoss实例,上面运行不同的应用程序,这样的话无论由于什么原因需要对某个JBoss实例进行关闭、重启等操作都不会影响到其它实例上面的应用的正常运行,我们知道JBoss启动时默认发布的不同的服务需要开放一些端口,如果只是简单地拷贝两套JBoss或者在一个JBoss中启动多个配置的话,同时启动多个JBoss实例会由于端口冲突而导致JBoss无法启动。

    遇到这种情况可能大家最容易想到的解决办法就是既然端口冲突的话,那我就修改端口呗,这种方法当然也可以,但是JBoss不像Tomcat那样,Tomcat只需要修改两三个端口即可,而JBoss默认发布的服务端口包括http协议的8080、AJP协议的8009、JNP服务的1099、RMI命名服务的1098、RMI/JRMP invoker的4444端口等,而且不是在同一个文件中配置的,有些在server.xml中,有些在配置下的jboss-service.xml文件中,手工修改不但繁琐而且极易出错,尤其是实例多的话。

    不过幸运的是JBoss提供了另外一种简便的方法:Binding Manager服务,不需要繁琐的端口配置就可以实现多实例运行端口不冲突,详细步骤如下:

    以JBoss 4.2.3 GA为例,假设server下有两个不同的配置node1、node2(名字无所谓,default1、default2也行),%JBOSS_HOME%表示JBoss安装目录。

    关键文件是%JBOSS_HOME%\docs\examples\binding-manager\sample-bindings.xml,该文件默认情况下定义了4组不同的端口配置(port-default、port-01、port-02、port-03),也就是说默认情况下支持同一台机器部署4个JBoss实例。

    1、node2配置如下
    修改node2/conf/jboss-service.xml文件,配置Service Binding(默认注释掉)如下:
    1. <mbean code="org.jboss.services.binding.ServiceBindingManager"
    2. name="jboss.system:service=ServiceBindingManager">
    3. <attribute name="ServerName">ports-01</attribute>
    4. <attribute name="StoreURL">${jboss.home.url}/docs/examples/binding-manager/sample-bindings.xml</attribute>
    5. <attribute name="StoreFactoryClassName">
    6. org.jboss.services.binding.XMLServicesStoreFactory
    7. </attribute>
    8. </mbean>
    复制代码
    这里配置node2使用的是port-01端口配置。

    2、node1配置如下
    node1默认可以不用配置,正常启动即可,这种情况下使用的是JBoss提供的默认端口8080、8009等,也可以参照第一步的配置,只需修改“ServerName”与node1不一样即可,如ports-02,注意只能是在sample-bindings.xml中定义的四组端口范围内。

    3、启动实例
    1. run.bat -c node1 -b 192.168.10.100
    2. run.bat -c node2 -b 192.168.10.100
    复制代码
    4、访问地址
    node1访问地址:http://192.168.10.100:8080(默认不配置的情况)或者http://192.168.10.100:8280(使用port-02的情况)
    node2访问地址:http://192.168.10.100:8180(使用port-01的情况)

    大家也许注意到端口的规律,默认情况下是8080,其它实例的端口依次在8080的基础上增大100,对应关系如下:
    1. port-default     8080
    2. port-01          8180
    3. port-02          8280
    4. port-03          8380
    复制代码
    当然其他端口如AJP协议端口8009也分别变成8109、8209、8309、8409,其它以此类推。

    5、注意事项
    1)上述配置的前提是每个实例的server.xml中HTTP协议的端口配置均为默认的8080,若该端口修改过,则需要修改sample-bindings.xml中port-default中的默认8080端口为server.xml中HTTP协议端口。
    2)上述方法也同样适用于同一台机器上面部署多个JBoss的情况而不是同一个JBoss下多个配置。
    3)一般情况下默认的4组端口足够使用,若仍不够,可自行添加其他port组。
    4)若可能,仍是推荐不用的实例绑定到不同的IP地址上。

    PS.

    同一机器多JBoss实例常用场景:
    1)32位JVM限制无法使用超过2G的内存,通过多实例可以充分利用服务器上大内存。
    2)不用JBoss实例用于不同用途:开发环境、测试环境等。
    3)希望在同一个机器上部署不同版本的JBoss。
    4)希望在同一个机器上部署基于不同JVM的JBoss(不同应用对JVM要求不一样的情况)。

    等等


    原文地址http://www.jbosschina.org/viewthread.php?tid=136

    展开全文
  • 一台机器运行多个JBoss多实例, 解决JBoss端口冲突 我们经常会遇到这种情况,有时候希望在同一台机器上部署若干个JBoss实例,上面运行不同的应用程序,这样的话无论由于什么原因需要对某个JBoss...
     
    

    一台机器运行多个JBoss多实例, 解决JBoss端口冲突



    我们经常会遇到这种情况,有时候希望在同一台机器上部署若干个JBoss实例,上面运行不同的应用程序,这样的话无论由于什么原因需要对某个JBoss实例进行关闭、重启等操作都不会影响到其它实例上面的应用的正常运行,我们知道JBoss启动时默认发布的不同的服务需要开放一些端口,如果只是简单地拷贝两套JBoss或者在一个JBoss中启动多个配置的话,同时启动多个JBoss实例会由于端口冲突而导致JBoss无法启动。

    遇到这种情况可能大家最容易想到的解决办法就是既然端口冲突的话,那我就修改端口呗,这种方法当然也可以,但是JBoss不像Tomcat那样,Tomcat只需要修改两三个端口即可,而JBoss默认发布的服务端口包括http协议的8080、AJP协议的8009、JNP服务的1099、RMI命名服务的1098、RMI/JRMP invoker的4444端口等,而且不是在同一个文件中配置的,有些在server.xml中,有些在配置下的jboss-service.xml文件中,手工修改不但繁琐而且极易出错,尤其是实例多的话。

    不过幸运的是JBoss提供了另外一种简便的方法:Binding Manager服务,不需要繁琐的端口配置就可以实现多实例运行端口不冲突,详细步骤如下:

    以JBoss 4.2.3 GA为例,假设server下有两个不同的配置node1、node2(名字无所谓,default1、default1也行),%JBOSS_HOME%表示JBoss安装目录。

    关键文件是%JBOSS_HOME%\docs\examples\binding-manager\sample-bindings.xml,该文件默认情况下定义了4组不同的端口配置(port-default、port-01、port-02、port-03),也就是说默认情况下支持同一台机器部署4个JBoss实例。

    1、node2配置如下
    修改node2/conf/jboss-service.xml文件,配置Service Binding(默认注释掉)如下:
    1. <mbean code="org.jboss.services.binding.ServiceBindingManager"
    2. name="jboss.system:service=ServiceBindingManager">
    3. <attribute name="ServerName">ports-01</attribute>
    4. <attribute name="StoreURL">${jboss.home.url}/docs/examples/binding-manager/sample-bindings.xml</attribute>
    5. <attribute name="StoreFactoryClassName">
    6. org.jboss.services.binding.XMLServicesStoreFactory
    7. </attribute>
    8. </mbean>
    复制代码
    这里配置node2使用的是port-01端口配置。

    2、node1配置如下
    node1默认可以不用配置,正常启动即可,这种情况下使用的是JBoss提供的默认端口8080、8009等,也可以参照第一步的配置,只需修改“ServerName”与node1不一样即可,如ports-02,注意只能是在sample-bindings.xml中定义的四组端口范围内。

    3、启动实例
    1. run.bat -c node1 -b 192.168.10.100
    2. run.bat -c node2 -b 192.168.10.100
    复制代码
    4、访问地址
    node1访问地址:http://192.168.10.100:8080(默认不配置的情况)或者http://192.168.10.100:8280(使用port-02的情况)
    node2访问地址:http://192.168.10.100:8180(使用port-01的情况)

    大家也许注意到端口的规律,默认情况下是8080,其它实例的端口依次在8080的基础上增大100,对应关系如下:
    1. port-default     8080
    2. port-01          8180
    3. port-02          8280
    4. port-03          8380
    复制代码
    当然其他端口如AJP协议端口8009也分别变成8109、8209、8309、8409,其它以此类推。

    5、注意事项
    1)上述配置的前提是每个实例的server.xml中HTTP协议的端口配置均为默认的8080,若该端口修改过,则需要修改sample-bindings.xml中port-default中的默认8080端口为server.xml中HTTP协议端口。
    2)上述方法也同样适用于同一台机器上面部署多个JBoss的情况而不是同一个JBoss下多个配置。
    3)一般情况下默认的4组端口足够使用,若仍不够,可自行添加其他port组。
    4)若可能,仍是推荐不用的实例绑定到不同的IP地址上。

    PS.

    同一机器多JBoss实例常用场景:
    1)32位JVM限制无法使用超过2G的内存,通过多实例可以充分利用服务器上大内存。
    2)不用JBoss实例用于不同用途:开发环境、测试环境等。
    3)希望在同一个机器上部署不同版本的JBoss。
    4)希望在同一个机器上部署基于不同JVM的JBoss(不同应用对JVM要求不一样的情况)。
    展开全文
  • 小编典典1)如果我有个用Java编写的Web服务,它将需要一个JVM实例来运行。那么可以将JVM设为守护进程吗?是的,它可以。如何完成取决于O / S和Web服务器容器本身。2)如果是,当我们运行任何其他Java应用程序时,它...

    小编典典

    1)如果我有一个用Java编写的Web服务,它将需要一个JVM实例来运行。那么可以将JVM设为守护进程吗?

    是的,它可以。如何完成取决于O / S和Web服务器容器本身。

    2)如果是,当我们运行任何其他Java应用程序时,它将使用此JVM实例还是创建一个新的JVM?

    否。每个Java应用程序都使用一个独立的JVM。

    每个JVM是一个单独的进程,这意味着不会共享堆栈,堆等。(通常,唯一可以共享的内容是保存核心JVM和本机库代码的只读段,就像普通进程可以共享代码段一样。)

    3)在任何机器上可用的主存储器是恒定的。当我们同时启动n个Java进程而不提供任何初始堆大小时,堆大小如何在进程之间分配?

    如果不指定大小,则决定堆大小的机制取决于所使用的JVM /平台/版本,以及是否使用“客户端”或“服务器”模型(对于Hotspot

    JVM)。启发式算法没有考虑其他JVM的数量或大小。

    实际上,最好直接指定堆大小。

    4)是否有管理n个JVM实例的进程,或者由OS本身管理?

    都不行

    JVM实例的数量取决于可以启动进程的各种事物的动作。例如守护程序脚本,命令脚本,用户在命令行中键入命令等。最终,如果操作系统用尽了资源,则OS可能会拒绝启动更多进程,但是JVM与其他进程没有任何区别。

    5)当GC期间发生世界末日时,是否会影响其他JVM实例(我认为是不同的线程)?

    否。JVM是独立的进程。他们没有任何可变状态。垃圾收集在每个JVM上独立运行。

    2020-09-28

    展开全文
  • 一台机器可以运行多个不同的JAVA程序,但每一个程序是不是对应着一个独立的JVM了INSTANCE?还是这些程序都共享同一个JVM INSTANCE?</p>
  • 在同一台机器运行多个Resin实例

    千次阅读 2010-05-11 09:24:00
    假设在一台机器上启动了两 Resin 实例,那么实际上系统会有三Java进程,其中一是Resin的监控、管理进程,另外两当然是独立的两不同Resin实例。看看我的一简单配置 吧:Resin代码 http://ca
  • 当有多个程序同时运行,并且指定的时同个jdk时,这个时候jvm是如何分配内存的? 假如 配置了jvm的内存为 2G,现在同时运行3个程序,这时是不是每个程序都有个独立的jvm,并且每个jvm的内存都是2G呢?
  • 先来看看具体场景: 吾启动了JVM甲。 JVM甲加载了a.jar及相关的类。... 现在提出问题:两个JVM,能否只加载次a.jar,功能又正常?问题: 如何实现? 如果JVM甲加载了又崩溃了,乙怎么办? ...
  • GPS每台机器运行多个Task经验总结 1. 集群环境 由13台曙光A610服务器组成的集群,具体信息为:test150、test151、test152、test153、test154、test155、test156、test157、test158、test159、test60、test61、test...
  • JVM运行原理及优化

    万次阅读 多人点赞 2020-07-05 16:50:22
    JVM 想要执行一个类,首先要加载类,在加载类之前,需要先编译成字节码class 文件 然后就执行类的加载过程,JVM 加载类的话,需要类加载器 类加载器是分层级的,遵循双亲委派机制, 最上层是Bootstrap ...
  • JVM相关问题整理

    万次阅读 多人点赞 2020-04-07 11:46:20
    1.运行时数据区域(内存模型)(必考) 2.垃圾回收机制(必考) 3.垃圾回收算法(必考) 4.Minor GC和Full GC触发条件 5.GC中Stop the world(STW) 6.各垃圾回收器的特点及区别,怎么做选择? 7.双亲委派模型...
  • JVM理解

    千次阅读 2017-03-04 11:55:41
    一台机器(操作系统)能启动多个JVM进程,各个JVM进程有独自的数据空间和代码空间,互不影响,并且每调用java命令之后(执行启动类的main函数),就是启动一个JVM实例 只要你内存够大,配置足够高,可以启动多个JVM...
  • JVM运行原理

    千次阅读 2008-01-16 10:03:00
    虚拟的机器在任何平台上都提供给编译程序一个的共同的接口。编译程序只需要面向虚拟机,生成虚拟机能够理解的代码,然后由解释器来将虚拟机代码转换为特定系统的机器码执行。在Java中,这种供虚拟机理解的代码...
  • 理解JVM运行原理

    2015-04-22 09:22:24
    做java开发两年了,一直没有深入研究过jvm运行原理,只是依稀的记得内存分为堆内存、栈内存,然后就是哪来着分为新生代和老生代,还有本地方法区,以前觉得这些东西面试用用也就算了,现在想来,不研究研究就不会...
  • 一台机器多个版本的JDK共存

    千次阅读 2010-10-01 20:57:00
    一台机器多个版本的JDK共存
  • JVM

    2013-04-17 13:23:38
    JVM有自己想象中的硬件,如处理器、堆栈、寄存器等,还有相应的指令系统,它运行java程序就像一台计算机运行c或c++程序一样。  我们都知道,java语言有一非常重要的特性就是与平台的无关性,jvm就是实现这一特性...
  • JVM 运行机制及其原理

    万次阅读 多人点赞 2018-05-22 22:15:09
    最近出去面试,总被问到Java JVM相关的东西,...JVM是Java Virtual Machine(Java虚拟机)的缩写,是一个虚构出来的计算机,是通过在实际的计算机上仿真模拟各种计算机功能来实现的。Java虚拟机主要由字节码指令集、...
  • JVM专题

    千次阅读 2018-07-22 17:49:37
    所谓虚拟机,就是一台虚拟机的机器,它是一款软件,用来执行一系列虚拟计算机指令,大体上虚拟机分为系统虚拟机(VMWare、Visual Box等) 和 程序虚拟机(Java虚拟机等)。 系统虚拟机:他们是对物理计算机的仿真,...
  • eclipse 运行调优(JVM参数配置)

    万次阅读 2012-01-30 22:33:55
    参考: ...   总结一下(http://howsun.blog.sohu.com/182790343.html) --设置最大的堆和最小堆大小.两者一样表示固定大小.这样可以防止老年代内存扩展造成额外的gc.当然也会占一些内存.系统内存不足的慎用
  • 基本概念 JVM是可运行Java代码的假想计算机,包括一套字节码指令集,组寄存器,个栈,个...每种平台的解释器是不同的,但是实现的虚拟机是相同的,当个程序从开始运行时,虚拟机就开始实例化了,多个程序启
  • 一个性能较好的web服务器jvm参数配置: -server //服务器模式 -Xmx2g //JVM最大允许分配的堆内存,按需分配 -Xms2g //JVM初始分配的堆内存,一般和Xmx配置成一样以避免每次gc后JVM重新分配内存。 -Xmn256m //年轻...
  • 一个性能较好的JVM参数配置

    千次阅读 2015-09-14 08:58:33
    一个性能较好的web服务器jvm参数配置:-server //服务器模式 -Xmx2g //JVM最大允许分配的堆内存,按需分配 -Xms2g //JVM初始分配的堆内存,一般和Xmx配置成一样以避免每次gc后JVM重新分配内存。 -Xmn256m //年轻...
  • 如果需要在一台机子上启动多个Tomcat服务器,在默认设置下肯定会发生端口冲突。为实现这个效果,只需修改conf子目录中的server.xml文件即可。共需修改三处:  (1).修改http访问端口(默认为8080端口):  ...
  • JVM运行参数详解

    2010-06-12 16:15:00
    JVM 中最大堆大小有三方面限制:相关操作系统的数据模型(32-bt还是64-bit)限制;系统的可用虚拟内存限制;系统的可用物理内存限制.32位系统 下,一般限制在1.5G~2G;64位操作系统对内存无限制.我在Windows Server 2003 ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 55,685
精华内容 22,274
关键字:

一台机器运行多个jvm