网络服务性能监测系统设计与实现

时间:2010-08-03

0  引  言

  网络管理的一个重要环节是对服务器主机上的各种网络服务进行性能监测,可以采用网络服务响应时间作为性能监测指标。利用Socket连接技术可以实现网络服务响应时间的测算,并把测算结果存储至数据库中。通过嵌入在JSP页面中的Java Applet来实现网络服务性能曲线的绘制,既可以展现有关近测算结果的实时性能曲线图,也可以显示所查询时间范围内的历史曲线图,为网络管理员发现网络服务异常提供了方便直观的途径。

1  网络服务性能监测系统设计

  系统创建客户端Socket连接至指定IP的服务器主机及服务端口,如果连接成功,则将连接前后记录的系统时间差作为本次测算的网络服务响应时问;如果连接出现异常,则在异常处理中以同样方式算出该“异常”响应时间。系统能同时监测多台主机的多个网络服务,并将测算出的各网络服务响应时间存储至性能数据库中。为了便于观察不同时间点的网络服务响应时间,系统既提供了动态变化的实时性能曲线,也可以对指定日期的历史数据进行查询,并显示性能曲线,从而便于管理员全面分析网络服务质量,为进一步采取措施排除网络服务异常及优化网络服务提供依据。系统从结构上可分为响应时间测算子系统、性能数据库以及Web端子系统。系统结构如图1所示。


1.1  响应时间测算子系统

  通过建立监测站到网络服务的Socket连接,记录连接前后的系统时间,并测算两者时间差,即网络服务响应时间,以此作为衡量网络服务性能的指标。系统按照数据库中添加网络服务的顺序依次进行时间测算,并把测算结果记录在数据库中。管理员根据网络实际情况设置不同的网络服务状态,如正常、缓慢、停止等,每种状态都对应预设的特定时间区间,系统根据每次测算的结果,动态地改变网络服务的当前状态,并显示在页面中。另外,系统还能够设置测算时间间隔,可根据实际测算的网络服务数量进行适当的设置,例如,可设置为30 s,60 s等。

1.2  性能数据库

  性能数据库主要用于存储响应时间测算子系统所得网络服务响应时间的数据,以及记录网络服务的当前状态。数据库的参数表用来保存测算时间间隔等数据。如果相邻两次的测算时间间隔较短,则系统将需要保存较多数据,因此使用性能可靠的关系数据库系统来实现数据的存储。此外,性能数据库还存储了管理员添加的主机IP及服务端口等信息。

1.3 Web端子系统

  Web端子提供了管理网络服务的Web用户界面,实现了管理服务器主机及其提供服务的功能。在JSP页面中嵌入Apple动态显示网络服务性能曲线。Web服务器端使用JSP动态脚本技术从数据库依次取出备网络服务的响应时间数据,按照预定义的封装格式传输给客户端Applet,利用Applet丰富的图形界面绘制功能,实现性能曲线的实时动态绘制。

2  网络服务响应时间测算

  对于面向连接的客户端/服务器网络通信模型,Socket即套接字是网络通信端点的抽象表示,用于在客户端和服务器之间建立可靠、双向的持续流式连接,Java类库中提供了Socket类,用来在程序中建立一个双向连接,以实现数据交换的通道,是Java实现流式Socket通信的主要工具。创建一个Sacket对象就是建立一个客户端与服务器间的连接。创建Socket对象时,需要指定Socket对象连接的服务器地址和端口。在连接前后分别调用System,currentTimeMillis()方法来记录响应时间,然后用两者差值作为网络服务的响应时间。程序如下所示:


3  网络服务性能数据传输方法

  在传输网络服务性能数据的JSP页面中嵌入Java程序片段,其功能是从数据库中取出指定网络服务的性能数据,返回给客户端Applet。具体使用的是JSP内置out对象的println(String)方法。除了绘制网络服务性能曲线外,还要在图中标注曲线的其他信息,例如:响应时间,曲线起始及终止时间、曲线包含实际数据点数。在JSP程序中,取出规定点数的性能数据进行判断统计,然后按照指定封装格式传送给Applet。具体的封装格式定义如下:


  以上前4行数据为性能曲线统计信息,每行以1个命令字开头,用于接收端正确地进行解析。COUNT命令之后的数据表示从性能数据库中取出的响应时间数据。该系统监视界面可绘制240个数据点。

4 Applet绘制网络服务性能曲线

4.1  获取网络服务性能数据

  在Applet中使用java.net.URL类来打开标准的HTTP连接,与传输网络服务性能数据的JSP页面取得连接,随后该JSP页面把从数据库取出的性能数据传送给Applet。在该过程中,Applet对于JSP来说就相当于是一个Web浏览器。Applet标记中设置的URL地址参数为:


  其中,Data_Service.jsp是发送性能数据的JSP页面,参数Serviceid表示监测主机IP。在Applet中读取JSP返回的性能数据代码如下:

  Applet按照预定义的性能数据封装格式进行解析,依次从上述lines向量中取出各项数据,用于绘制网络服务性能曲线。


4.2  绘制网络服务性能曲线

  在Applet中绘制曲线主要是在paint(Graphics g)方法中,调用g.drawLine()方法将网络服务响应时间值转化得到的各坐标点依次连接起来,使用g.drawString()方法标注曲线信息,如响应时间、曲线起始及终止时间。

  为了能够实时动态显示曲线,在Applet中创建了一个控制界面刷新的独立线程,按照指定时间间隔重新读取数据并显示曲线。图2示出绘制的即时网络服务性能曲线图。


  由于在Applet中,绘图是基于坐标的,因此绘制性能曲线时需要将网络服务响应时间的转化对应为曲线各点的坐标,转化方法如下:

  横坐标:Xcoord[i]=(int)(i*GridWidth/240)

  纵坐标:Ycoord[i]=(int)(GridHeight*(1-Values[i]/SCALE))

  其中,Xcoord[i],Ycoord[i]数组用来保存曲线上240个点的横坐标和纵坐标;GridWidth,GridHeight分别表示以像素为单位的性能曲线界面宽度和高度;Values[i]存放的是第i个点对应的网络服务响应时间;SCALE表示当前240个网络服务响应时间数据中的值。

5  结  语

  在此,基于Java环境的Web开发及Socket通信技术,设计并实现了一个以网络服务连接响应时间为指标的网络服务性能监测系统,适用于基于TCP协议的各种网络服务。Web的管理方式便于管理员远程添加所监测的网络服务,使用Applet建立的网络服务性能曲线图可以很好地满足客户端图形显示的需要。系统在Windows系统下通过测试,运行良好。当然,连接建立响应时间还不能全面地衡量网络服务性能,可以加上对数据请求以及连接关闭响应时间的测算,这将作为程序的下一步改进。


  
上一篇:电网有源滤波器结构及其应用
下一篇:μC/OS-II实时操作系统在混合动力整车控制器中的应用

免责声明: 凡注明来源本网的所有作品,均为本网合法拥有版权或有权使用的作品,欢迎转载,注明出处。非本网作品均来自互联网,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责。

相关技术资料