Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/372.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
基于Java的监控应用_Java_Frameworks_Statistics_Monitoring - Fatal编程技术网

基于Java的监控应用

基于Java的监控应用,java,frameworks,statistics,monitoring,Java,Frameworks,Statistics,Monitoring,想象下一个架构: 我们有基于Spring框架的Java应用程序(我们称之为Manager) 它接受请求并可以启动其他应用程序来处理它们(我们称之为容器)。这些容器存在了很长一段时间。它们具有相当复杂的结构,由几个不同的应用程序组成,但它们都有控制部分,用C++和BASH脚本编写。8个CPU核上的预期数量约为2000个 我们有监控心跳应用程序(也是Java over Spring)。数据应该以某种方式从这些容器(CPU、内存、带宽使用率、版本)和管理器中获取并聚合。聚合数据定期通过心跳发送到更远的

想象下一个架构:

  • 我们有基于Spring框架的Java应用程序(我们称之为Manager)
  • 它接受请求并可以启动其他应用程序来处理它们(我们称之为容器)。这些容器存在了很长一段时间。它们具有相当复杂的结构,由几个不同的应用程序组成,但它们都有控制部分,用C++和BASH脚本编写。8个CPU核上的预期数量约为2000个
  • 我们有监控心跳应用程序(也是Java over Spring)。数据应该以某种方式从这些容器(CPU、内存、带宽使用率、版本)和管理器中获取并聚合。聚合数据定期通过心跳发送到更远的地方
  • 你对实施这样的事情有什么建议?请指出解决类似问题的一些框架或开放源代码,或者根据您的经验提供一些一般性考虑

    [更新]

    • 目标操作系统:Solaris
    • 提到的2000进程是本机应用程序。每个都有自己的chroot,并作为单独的用户登录运行

    我最初的想法不是管理/监视方面,而是使用Java manager在一台机器上启动2000个不同的进程。这些会消耗多少内存?它们是同时运行的吗?如果它们是不同的实现,机器可以利用共享库等来减少内存消耗

    然后Java进程必须读取/处理进程stdout/stderr(通常在每个流的一个线程中执行此操作,以防止阻塞-如果有2000个进程使用此机制,那么您将看到4000个线程)

    因此,在研究可管理性之前,我会首先考虑它的体系结构,并在多台机器和虚拟机之间扩展它


    要获得您的CPU/内存等,我将查看和提供的bean。JMX提供了通过RMI等公开此数据的方法。但要获得每个子进程(用您的说法是容器)的此信息,将需要特定于操作系统的信息。你在用什么操作系统?对于Windows,请签出。在Unix/Linux上,各种
    /proc
    文件系统节点可能会对您有所帮助。

    也许您可以在Nagios页面上找到一些有用的内容()

    我已经用一些其他信息更新了问题。内存消耗也困扰着我,但与此同时,我们没有目标硬件来检查它。谢谢你的回答!轮询InputStream.available而不是线程应该是安全的,因为线程可能会以响应性换取内存消耗。