java监控服务器文件在哪

java监控服务器文件在哪

java监控服务器文件在JAVA_HOMEin目录下的jvisualvm.exe,双击这个文件就能看到一个比较直观的界面。要进行远程监控,本机的VisualVM就必须和远程的JVM要进行通信,Visualvm支持两种remote connection方式,分别是jstatd和JMX方式。

Java是一门面向对象的编程语言,不仅吸收了C++语言的各种优点,还摒弃了C++里难以理解的多继承、指针等概念,因此Java语言具有功能强大和简单易用两个特征。Java语言作为静态面向对象编程语言的代表,极好地实现了面向对象理论,允许程序员以优雅的思维方式进行复杂的编程。

小编还为您整理了以下内容,可能对您也有帮助:

怎么用java实现web服务器的监控

如何用Java实现Web服务器 一、HTTP协议的作用原理

WWW是以Internet作为传输媒介的一个应用系统,WWW网上最基本的传输单位是Web网页。WWW的工作基于客户机/服务器计算模型,由Web 浏览器(客户机)和Web服务器(服务器)构成,两者之间采用超文本传送协议(HTTP)进行通信。HTTP协议是基于TCP/IP协议之上的协议,是Web浏览器和Web服务器之间的应用层协议,是通用的、无状态的、面向对象的协议。HTTP协议的作用原理包括四个步骤:

(1) 连接:Web浏览器与Web服务器建立连接,打开一个称为socket(套接字)的虚拟文件,此文件的建立标志着连接建立成功。

(2) 请求:Web浏览器通过socket向Web服务器提交请求。HTTP的请求一般是GET或POST命令(POST用于FORM参数的传递)。GET命令的格式为:

GET 路径/文件名 HTTP/1.0

文件名指出所访问的文件,HTTP/1.0指出Web浏览器使用的HTTP版本。

(3) 应答:Web浏览器提交请求后,通过HTTP协议传送给Web服务器。Web服务器接到后,进行事务处理,处理结果又通过HTTP传回给Web浏览器,从而在Web浏览器上显示出所请求的页面。详细方法可向itjob老师了解

java中 怎么监控服务器端运行情

你可以在JSP页面用这三个方法

request.getRemoteAddr()//获取远程IP

request.getRemoteUser()//获取远程用户

request.getRemoteHost()//获取远程主机

可以写方法,请看java.net包下的类.

java.net.InetAddress

java.net.InetSocketAddress

获取IP,主机和端口.

如何用java实现远程监控linux服务器磁盘io

对于远程监控Linux主机系统CPU,内存使用情况,以前也使用了top等命令,但是最后还是觉得使用vmstat比较好.

运行top命令获得系统CPU使用情况有两个缺点,

第一运行top命令,执行的shell语句相对复杂.

用top命令获得CPU使用情况的shell语句

top -b -n 2 | grep Cpu |sed 1d | awk '{print $5}' | cut -f 1 -d "."

第二:有时候系统峰值时间很短暂,容易造成误判.

注意:运行本例子,你还需要下载第三方ganymed-ssh2-build251beta1.jar,改软件主要用于通过ssh远程登录被监控主机.

ITjob上。看。的

java如何判断发布在tomcat服务器上的文件是否存在?

这个和本地是一个样子的啊。

File

file=new

File("D:\\测试.txt");

如果file等于null那这个文件就不存在

服务器上唯一变的是

路劲

D:\\测试.txt

变了。你肯定首先需要知道你的文件在服务器上的路劲吧。

如果你还不了解

服务器和我们自己的电脑是没区别的那就没办法了。

举例子

https://gss0.bdstatic.com/357c1defb1032a7a3c9f4920a9ca5b402472/6b2119/6b2710c6b5/633a1fdbb608.66/r6s1g4.gif

这个就是存在百度服务器上的一个图片文件

File

file=new

File("https://gss0.bdstatic.com/357c1defb1032a7a3c9f4920a9ca5b402472/6b2119/6b2710c6b5/633a1fdbb608.66/r6s1g4.gif")

如果为空

就不存在。

希望你能看懂。

如何用Java实现对tomcat服务器的监控?其中包括异常监控,还有本机的监控:如cpu,虚拟机,和服务器温度等

cpu、内存、磁盘空间等参数信息用C语言来写一个DLL工程(extern "c"声明),最好不要用C++写,因为C++的导出函数会变名,然后java通过JNI规范调用C编写的函数。

具体是先System.loadLibruary("dll名称");

用C函数名,注意编译DLL的时候需要java类的头文件。cmd命令:javah Java类名。再直接调C函数。

如何监控java进程

SWT Win32 Extension 是Eclipse类库SWT的Win32本地原生扩展.

本项目提供了一个软件开发工具库,能够让您使用Java语言开发原生的Windows应用程序而不需要编写额外的JNI代码。使用SWT Win32 Extension,您将不需要创建原生的动态链接库来调用操作系统动态链接库的系统API或者方法。您仅仅需要做的就是编写Java代码, SWT Win32 Extension来负责剩下的部分。SWT Win32 Extension提供了一系列的功能使您的应用程序看上去和Win32本机程序别无二致。

窗口装饰功能: 提供窗口置顶,透明,闪动等功能。

自定义窗口: 创建不规则的窗口。

访问Windows注册表。

系统文件夹: 获取系统特殊文件加的路径和图标。

系统快捷方式: 管理系统快捷方式。

系统相关信息: 收集系统CPU,内存,环境变量等相关信息。

系统会话: 提供关机,休眠,重启,注销等功能。

系统IO及网络功能: 提供磁盘和网络相关信息。

活动桌面功能: 管理Windows活动桌面。

系统钩子: 注册和卸载系统钩子,能够拦截和处理系统事件。

窗口系统菜单: 管理窗口菜单。用户可以自定义系统菜单和处理菜单事件。

Ole 控件: 提供对一些常用控件的封装,比如flash。 值得一提的是,您能够访问SWT提供的所有功能,因为SWT Win32 Extension是从SWT派生出来的。

java Swing 如何实现 客户端与服务器端 文件夹同步?并实时监控或定时监测 文件夹变化?期间用到MD5。

安装一个电脑管家到电脑上

打开工具箱,然后选择最近文档,就能看到最近30天打开的所有文件了

最后还可以在小程序用手机查看电脑上面的文档呢。

java 文件在服务器中定位绝对路径

在jsp和class文件中调用的相对路径不同。 在jsp里,根目录是WebRoot 在class文件中,根目录是WebRoot/WEB-INF/classes 当然你也可以用System.getProperty("user.dir")获取你工程的绝对路径。

另:在Jsp,Servlet,Java中详细获得路径的方法!

1.jsp中取得路径:

以工程名为TEST为例:

(1)得到包含工程名的当前页面全路径:request.getRequestURI()

结果:/TEST/test.jsp

(2)得到工程名:request.getContextPath()

结果:/TEST

(3)得到当前页面所在目录下全名称:request.getServletPath()

结果:如果页面在jsp目录下 /TEST/jsp/test.jsp

(4)得到页面所在服务器的全路径:application.getRealPath("页面.jsp")

结果:D:\resin\webapps\TEST\test.jsp

(5)得到页面所在服务器的绝对路径:absPath=new java.io.File(application.getRealPath(request.getRequestURI())).getParent();

结果:D:\resin\webapps\TEST

2.在类中取得路径:

(1)类的绝对路径:Class.class.getClass().getResource("/").getPath()

结果:/D:/TEST/WebRoot/WEB-INF/classes/pack/

(2)得到工程的路径:System.getProperty("user.dir")

结果:D:\TEST

3.在Servlet中取得路径:

(1)得到工程目录:request.getSession().getServletContext().getRealPath("") 参数可具体到包名。

结果:E:\Tomcat\webapps\TEST

(2)得到IE地址栏地址:request.getRequestURL()

结果:http://localhost:8080/TEST/test

(3)得到相对地址:request.getRequestURI()

结果:/TEST/test

JAVA如何读取服务器上的文件夹

如果俩个服务器都在内网里面,可以通过映射到本地磁盘,然后用java直接读取磁盘文件的方式进行读取。如果不是,那么你只能让另一个服务器以接口的方式提供文件读取服务了。

java内存查看与分析

业界有很多强大的java profile的工具,比如Jporfiler,yourkit,这些收费的东西我就不想说了,想说的是,其实java自己就提供了很多内存监控的小工具,下面列举的工具只是一小部分,仔细研究下jdk的工具,还是蛮有意思的呢:)

1:gc日志输出

在jvm启动参数中加入 -XX:+PrintGC -XX:+PrintGCDetails -XX:+PrintGCTimestamps -XX:+PrintGCApplicationStopedTime,jvm将会按照这些参数顺序输出gc概要信息,详细信息,gc时间信息,gc造成的应用暂停时间。如果在刚才的参数后面加入参数 -Xloggc:文件路径,gc信息将会输出到指定的文件中。其他参数还有

-verbose:gc和-XX:+PrintTenuringDistribution等。

2:jconsole

jconsole是jdk自带的一个内存分析工具,它提供了图形界面。可以查看到被监控的jvm的内存信息,线程信息,类加载信息,MBean信息。

jconsole位于jdk目录下的bin目录,在windows下是jconsole.exe,在unix和linux下是jconsole.sh,jconsole可以监控本地应用,也可以监控远程应用。 要监控本地应用,执行jconsole pid,pid就是运行的java进程id,如果不带上pid参数,则执行jconsole命令后,会看到一个对话框弹出,上面列出了本地的java进程,可以选择一个进行监控。如果要远程监控,则要在远程服务器的jvm参数里加入一些东西,因为jconsole的远程监控基于jmx的,关于jconsole详细用法,请见专门介绍jconsle的文章,我也会在博客里专门详细介绍jconsole。

3:jviusalvm

在JDK6 update 7之后,jdk推出了另外一个工具:jvisualvm,java可视化虚拟机,它不但提供了jconsole类似的功能,还提供了jvm内存和cpu实时诊断,还有手动mp出jvm内存情况,手动执行gc。

和jconsole一样,运行jviusalvm,在jdk的bin目录下执行jviusalvm,windows下是jviusalvm.exe,linux和unix下是jviusalvm.sh。

4:jmap

jmap是jdk自带的jvm内存分析的工具,位于jdk的bin目录。jdk1.6中jmap命令用法:

Usage:

jmap -histo pid

(to connect to running process and print histogram of java object heap

jmap -mp:mp-options pid

(to connect to running process and mp java heap)

mp-options:

format=b binary default

file=file mp heap to file

Example: jmap -mp:format=b,file=heap.bin pid

jmap -histo pid在屏幕上显示出指定pid的jvm内存状况。以我本机为例,执行该命令,屏幕显示:

num #instances #bytes class name

----------------------------------------------

1: 24206 2791864 constMethodKlass

2: 22371 2145216 [C

3: 24206 1940648 methodKlass

4: 1951 1364496 constantPoolKlass

5: 26543 1282560 symbolKlass

6: 6377 1081744 [B

7: 1793 909688 constantPoolCacheKlass

8: 1471 614624 instanceKlassKlass

9: 14581 548336 [Ljava.lang.Object;

10: 3863 513640 [I

11: 20677 496248 java.lang.String

12: 3621 312776 [Ljava.util.HashMap$Entry;

13: 3335 266800 java.lang.reflect.Method

14: 8256 264192 java.io.ObjectStreamClass$WeakClassKey

15: 7066 226112 java.util.TreeMap$Entry

16: 2355 173304 [S

17: 1687 161952 java.lang.Class

18: 2769 150112 [[I

19: 3563 142520 java.util.HashMap

20: 5562 133488 java.util.HashMap$Entry

Total 239019 17140408

为了方便查看,我删掉了一些行。从上面的信息很容易看出,#instance指的是对象数量,#bytes指的是这些对象占用的内存大小,class name指的是对象类型。

再看jmap的mp选项,这个选项是将jvm的堆中内存信息输出到一个文件中,在我本机执行

jmap -mp:file=c:mp.txt 340

注意340是我本机的java进程pid,mp出来的文件比较大有10几M,而且我只是开了tomcat,跑了一个很简单的应用,且没有任何访问,可以想象,大型繁忙的服务器上,mp出来的文件该有多大。需要知道的是,mp出来的文件信息是很原始的,绝不适合人直接观看,而jmap -histo显示的内容又太简单,例如只显示某些类型的对象占用多大内存,以及这些对象的数量,但是没有更详细的信息,例如这些对象分别是由谁创建的。那这么说,mp出来的文件有什么用呢?当然有用,因为有专门分析jvm的内存mp文件的工具。

5:jhat

上面说了,有很多工具都能分析jvm的内存mp文件,jhat就是sun jdk6及以上版本自带的工具,位于jdk的bin目录,执行 jhat -J -Xmx512m [file] ,file就是mp文件路径。jhat内置一个简单的web服务器,此命令执行后,jhat在命令行里显示分析结果的访问地址,可以用-port选项指定端口,具体用法可以执行jhat -heap查看帮助信息。访问指定地址后,就能看到页面上显示的信息,比jmap -histo命令显示的丰富得多,更为详细。

6:eclipse内存分析器

上面说了jhat,它能分析jvm的mp文件,但是全部是文字显示,eclipse memory analyzer,是一个eclipse提供用于分析jvm 堆mp的插件,它的分析速度比jhat快,分析结果是图形界面显示,比jhat的可读性更高。其实jvisualvm也可以分析mp文件,也是有图形界面显示的。

7:jstat

如果说jmap倾向于分析jvm内存中对象信息的话,那么jsta就是倾向于分析jvm内存的gc情况。都是jvm内存分析工具,但显然,它们是从不同维度来分析的。jsat常用的参数有很多,如 -gc,-gcutil,-gccause,这些选项具体作用可查看jsat帮助信息,我经常用-gcutil,这个参数的作用不断的显示当前指定的jvm内存的垃圾收集的信息。

我在本机执行 jstat -gcutil 340 10000,这个命令是每个10秒钟输出一次jvm的gc信息,10000指的是间隔时间为10000毫秒。屏幕上显示如下信息(我只取了第一行,因为是按的一定频率显示,所以实际执行的时候,会有很多行):

S0 S1 E O P YGC YGCT FGC FGCT GCT

54.62 0.00 42.87 43.52 86.24 1792 5.093 33 7.670 12.763

额怎么说呢,要看懂这些信息代表什么意思,还必须对jvm的gc机制有一定的了解才行啊。其实如果对sun的 hot spot jvm的gc比较了解的人,应该很容易看懂这些信息,但是不清楚gc机制的人,有点莫名其妙,所以在这里我还是先讲讲sun的jvm的gc机制吧。说到gc,其实不仅仅只是java的概念,其实在java之前,就有很多语言有gc的概念了,gc嘛就是垃圾收集的意思,更多的是一种算法性的东西,而跟具体语言没太大关系,所以关于gc的历史,gc的主流算法我就不讲了,那扯得太远了,扯得太远了就是扯淡。sun现在的jvm,内存的管理模型是分代模型,所以gc当然是分代收集了。分代是什么意思呢?就是将对象按照生命周期分成三个层次,分别是:新生代,旧生代,持久代。对象刚开始分配的时候,大部分都在新生代,当新生代gc提交被触发后了,执行一次新生代范围内的gc,这叫minor gc,如果执行了几次minor gc后,还有对象存活,将这些对象转入旧生代,因为这些对象已经经过了组织的重重考验了哇。旧生代的gc频率会更低一些,如果旧生代执行了gc,那就是full gc,因为不是局部gc,而是全内存范围的gc,这会造成应用停顿,因为全内存收集,必须封锁内存,不许有新的对象分配到内存,持久代就是一些jvm期间,基本不会消失的对象,例如class的定义,jvm方法区信息,例如静态块。需要主要的是,新生代里又分了三个空间:eden,susvivor0,susvivor1,按字面上来理解,就是伊甸园区,幸存1区,幸存2区。新对象分配在eden区中,eden区满时,采用标记-复制算法,即检查出eden区存活 的对象,并将这些对象复制到是s0或s1中,然后清空eden区。jvm的gc说开来,不只是这么简单,例如还有串行收集,并行收集,并发收集,还有着名的火车算法,不过那说得太远了,现在对这个有大致了解就好。说到这里,再来看一下上面输出的信息:

S0 S1 E O P YGC YGCT FGC FGCT GCT

54.62 0.00 42.87 43.52 86.24 1792 5.093 33 7.670 12.763

S0:新生代的susvivor0区,空间使用率为5462%

S1:新生代的susvivor1区,空间使用率为0.00%(因为还没有执行第二次minor收集)

E:eden区,空间使用率42.87%

O:旧生代,空间使用率43.52%

P:持久带,空间使用率86.24%

YGC:minor gc执行次数1792次

YGCT:minor gc耗费的时间5.093毫秒

FGC:full gc执行次数33

FGCT:full gc耗费的时间7.670毫秒

GCT:gc耗费的总时间12.763毫秒

怎样选择工具

上面列举的一些工具,各有利弊,其实如果在开发环境,使用什么样的工具是无所谓的,只要能得到结果就好。但是在生产环境里,却不能乱选择,因为这些工具本身就会耗费大量的系统资源,如果在一个生产服务器压力很大的时候,贸然执行这些工具,可能会造成很意外的情况。最好不要在服务器本机监控,远程监控会比较好一些,但是如果要远程监控,服务器端的启动脚本要加入一些jvm参数,例如用jconsloe远程监控tomcat或jboss等,都需要设置jvm的jmx参数,如果仅仅只是分析服务器的内存分配和gc信息,强烈推荐,先用jmap导出服务器端的jvm的堆mp文件,然后再用jhat,或者jvisualvm,或者eclipse内存分析器来分析内存状况。