返回
中国计算机报2000年第59期

各种Web与数据库接口技术的性能和瓶颈分析

 

  Web与数据库的接口技术是各网站提供Internet信息服务的关键技术。除了常使用的CGI方式外,微软先后推出了IDC、ISAPI、ASP等方式,此外,Java-Applet也是Web与数据库接口的常用方法。


  概 述


  CGI(Common Gateway Interface:公共网关接口)定义了一种有关环境变量的组合、标准输入流和标准输出流的接口规范。当浏览器向Web服务器发出请求时,服务器通过执行一个外部程序来处理这一应用要求。

  IDC(Internet Database Connector:Internet数据库连接器)使用IDC文件与HTX文件,IDC文件负责查询数据库,HTX文件负责把查询结果格式化之后,再输出到客户端。

  ISAPI(Internet Server Application Programming Interface:Internet服务器应用程序接口)由两类组件组成:提供纵向功能层的ISAPI应用程序与提供横向功能层的ISAPI过滤器。当接收到一个客户端的请求时,服务器执行一个对应的ISAPI应用程序。ISAPI过滤器则可以实现所有请求所共有的某些功能要求,当过滤器中定义的事件在进程中发生时,服务器调用过滤器中相应的函数进行处理。

  ASP(Active Server Pages:动态服务器页)是服务器端的脚本文件,可以是HTML,也可以是VBScript或JavaScript,ASP的目的是提供可编程HTML页来响应Web请求。

  Java-Applet(Java小应用程序)与其它方式不同,当浏览器访问页面时,客户机要从Internet上下载附在网页上的Applet,其中包括能访问数据库的Applet。

  为了进行这五种接口方式的性能与瓶颈分析,本文作者进行了大量的对比性测试,测试方法如下:

  五种接口方式的评测都采用Windows NT操作系统平台及IIS的Web服务器。数据库采用SQL Sever 7.0与Oracle 8.0(以下分别简称“数据库S”和“数据库O”)。两种数据库中建有相同的数据表,每张表含有14个字段,并建立索引,且都有48218条相同的记录。数据来源于“上海证券交易所”的股票数据。测试时系统只运行所需测试的Web请求,无其它负荷。计算机配置为PentiumⅡ400、64M SDRAM内存以及33.6K/ISDN(64K)Modem。测试分为单机测试、远程测试(通过普通电话网与ISDN进行)与局域网测试三个步骤,其中局域网测试是用来研究并发访问的。由于在真正的Internet上,网络环境复杂,干扰因素多,故采用10Mbps的局域网环境替代。


  性 能 分 析


  接口速度

  在50个并发访问、数据库精确查询13条记录的情况下,CPU的总处理时间如图1所示。


  图1 速度对比

  可见,这五种接口方式由快到慢依次为Java-Applet、ISAPI、ASP、IDC、CGI。在CGI方式下,对于每一个用户请求,CGI都要求服务器执行一个外部程序,这涉及到在操作系统中创建一个新进程。而ISAPI不同,它对于每一个请求创建的是线程,而不是进程,故系统开销小、速度快。其次,由于CGI方式在两个调用之间进程不能保持,所以CGI在每次调用时,数据库连接资源必须重建。而ISAPI通过扩展与过滤器的结合,可以实现数据库资源的驻留,所以ISAPI的速度要比CGI快许多。IDC、ASP均是线程级的开销,其速度都比CGI快,但IDC、ASP无法实现数据库资源的驻留,所以速度不如ISAPI。Java-Applet的速度是最快的(这里Java-Applet的速度是指Java-Applet下载到客户端后,与数据库连接的速度),这是因为它不用在服务器端运行程序,只需数据库系统提供查询结果即可。以上评价是针对多用户,且数据库是精确查询的情况,对于用户较少和模糊查询的情况,经测试,各接口方式的接口速度差别不大。

  系统开销

  是在50个并发访问、数据库精确查询13条记录,各接口的系统资源开销测试。CPU执行任务期间的平均负荷、内存的最高额外开销及CPU工作量分别如表1、表2和表3所示。其中,CPU执行任务期间的平均负荷的单位为CPU满负荷的百分比,内存的最高额外开销是系统处理50个并发访问期间内存使用量的增长额,单位为M(兆),CPU的总工作量是CPU平均负荷乘以完成任务的时间所得,它反映了为完成任务所消耗的CPU资源。

表1 cpu负荷比较(%)

方式

cgi

idc

asp

isapi

java-applet

数据库s

46.23

46.68

97.52

75.85

86.34

数据库o

34.29

29.64

42.20

30.23

9.32



表2 内存负荷比较(m)

方式

cgi

idc

asp

isapi

java-applet

数据库s

8.60

4.17

5.66

2.67

0.17

数据库o

63.35

32.18

17.57

6.58

0.93



表3 cpu工作量比较(秒)

方式

cgi

idc

asp

isapi

java-applet

数据库s

6.66

1.82

2.58

0.91

0.57

数据库o

100.13

10.82

6.54

1.87

0.39


  从内存负荷与CPU的工作量来看,开销由小到大依次为Java-Applet、ISAPI、IDC、ASP、CGI。对于每一个CGI请求,均会产生一个进程的内存与CPU开销,且无法驻留数据库资源,所以开销大。ISAPI只产生一个线程的开销,且驻留了数据库的资源,故开销小。而IDC与ASP虽是线程级开销,但无法驻留数据库资源,开销要比ISAPI大些,但远小于CGI。而Java-Applet从根本上就把运行程序移到了客户端,服务器端只需处理与客户端的JDBC连接,所以服务器端开销最小。CGI、IDC与ASP方式内存开销较大,在所用内存有限的情况下,服务器在用户访问高峰期会出现死机现象,所以不适合用户并发访问数量较大的网站。

  安全性

  这五种接口在安全性方面由高到低依次为ISAPI、ASP、CGI、IDC、Java-Applet。CGI、IDC、ASP均依赖于Microsoft在IIS中实现的验证机制。而ISAPI则可以通过编程,加强与完善Web Server的安全性能,它能通过过滤器取代或增加标准验证方案,这一接口可以在每次服务器需要验证用户身份和访问权限时被调用,而且可以通过过滤器来记载比IIS日志更为详细的日志记录,以供网络安全分析之用。Java-Applet的安全性讨论是另一层次上的讨论,因为它需考虑的并不是对Web Server的安全威胁,而是对客户端的威胁。Java的可移植性非常好,但可移植性与安全性本身就是一对矛盾。如果用户能够从网上透明且自由地下载Java程序,这会不可避免地带来许多安全性问题。如果Java-Applet受沙盒模型的限制,Java-Applet的功能发挥可能会受到限制;如果Java-Applet不受沙盒模型的限制,那么恶意删改客户端用户文件的Java-Applet无异于恶性病毒。

  灵活性

  这五种接口在灵活性上由高到低依次为Java-Applet、ISAPI、ASP、CGI、IDC。IDC的所有功能都依赖于SQL语句,众所周知,SQL语句的功能是极为有限的。CGI的灵活性较IDC好,因为它可以用服务器所支持的编程语言来扩展功能。ASP的灵活性又比CGI强,它不仅可以使用VB、VJ之类的语言,而且ASP本身也提供了功能丰富的控件,如在asa文件中,可以对session及application对象进行处理,这是CGI编程难以实现的。ISAPI不仅能够实现ASP实现的所有功能,而且还能用过滤器实现许多IDC、CGI和ASP所无法实现的功能。Java-Applet的灵活性是另一层次上的灵活性,因为IDC、CGI、ASP、ISAPI均是对客户端提供HTML文本,在客户端的功能无法超脱HTML语言的限制,而Java-Applet是下载到客户端运行的程序,这就超脱了HTML语言的限制。


  瓶 颈 分 析


  Web与数据库接口的过程实际上是一个从接口程序到数据库查询,再到结果反馈的全过程,这一复杂过程所牵涉到的瓶颈相关因素较多,分析如下:

  网络传输速度

  网络传输速度不同,在客户端产生的等待时间也不同。不同的传输延时差异与传输速度基本上成线性关系,提高网络速度有助于减少网络传输延时。图2所示是以单个用户进行远程访问为例,在33.6K Modem与64K ISDN的传输条件下,各样本页面的延时。

  可见,不同的传输延时与传输速度基本上成线性关系,提高网络速度有助于减少延时。


  图2 网络传输速度对瓶颈的影响

  注: Sample13.htm为含有13条记录的网页;

  Sample13e.htm为含有13条记录与一个E-mail图案的网页;

  Sample86.htm为含有86条记录的网页;

  Sample86e.htm为含有86条记录与一个E-mail图案的网页;

  Sample700e.htm为含有700条记录与一个E-mail图案的网页;

  Samplegra.htm为含有12幅房屋图案的网页。

  

  网页设计

  由于图片在网络上传输要花费较长的时间,而Modem对文本文件又有较强的压缩功能,所以在设计网页时减少图片数量有助于提高客户端的响应速度。表4是以各样本页面为例,在33.6K Modem情况下其文件字节数、实际传输字节数和客户端的等待延时(单位:秒)。



表4 网页设计对瓶颈的影响

页面名称

等待延时

传输的字节数

文件字节数

sample13.htm

1.2

2669

19381

sample13e.htm

16

45425

61800

sample86.htm

4.6

12410

110958

sample86e.htm

25.8

77363

153523

sample700e.htm

35.8

349873

349569

samplegra.htm

96.8

133100

921239


  多用户访问

  并发访问的用户数量越多,CPU所需完成的工作量越大,由此导致服务器端瓶颈发生的可能性也越大。通过抑制对网站的并发访问数目,能有效减少服务器的处理延时,这可以通过采用对网址的重定位以分流访问用户的方式来完成。表5所示是分别以25个和50个并发访问为例,在数据库精确查询13条记录时的CPU工作时间(单位:秒)。

表5 多用户访问对瓶颈的影响

方  式

25个并发访问

50个并发访问

cgi

数据库s

9.8

14.4

数据库o

157

292

idc

数据库s

2.35

3.9

数据库o

18.5

36.5

asp

数据库s

1.70

2.65

数据库o

11.0

15.5

isapi

数据库s

0.85

1.2

数据库o

2.8

6.2

java-applet

数据库s

0.58

0.66

数据库o

1.7

4.2


  接口方式

  由于各种接口方式的性能不同(参照前面的性能分析),在相同外部条件下,服务器端产生的延时也不同,特别是在采用CGI方式时,比较容易产生瓶颈问题。

表6 五种接口方式的适用场合

 

适用场合

cgi

unix环境下,用户并发访问数量较少。

idc

windows nt环境下,用户并发访问数量不多,且web应用程序功能简单。

isapi

windows nt环境下,可满足用户并发访问数量较多、应用程序功能复杂、灵活性与安全性要求较高的情形。

asp

windows nt环境下,用户并发访问数量不太多,能满足一些复杂的功能。适用于大多数中小型网站。

java-applet

宽带环境下,用户并发访问数量大,web应用程序功能要求较高。


  多线程编程

  多线程编程是针对ISAPI应用程序而言的。由于ISAPI接口采用了多线程工作方式,所以不可避免要出现临界区资源抢占问题。编写得不好的ISAPI多线程程序反而会适得其反,可能会减慢服务器的处理速度。在局域网环境中,若数据库O采用模糊查询方式,对服务器进行了13个用户的并发访问,并同时提交访问请求时,ISAPI的响应处理时间为35.6秒。而让这13个用户相继提交访问请求时,总处理时间却只为13.5秒。通过优化程序,缩短临界区范围,提高临界区代码的执行效率可有效抑制这一影响。


  图3 SQL语句设计对瓶颈的影响

  SQL语句设计

  由于数据库在执行精确查询时,可依据索引精确定位,而对于模糊查询则要逐条匹配,所以即使对于同一执行目的,使用哪种查询方式也会对瓶颈产生影响。此外,对于组合查询,其查询条件的顺序安排也同样会对数据库的处理延时产生影响。图3是以模糊查询与精确查询13条记录为例,在25个并发访问情况下的CPU工作时间(单位:秒)对比情况。

  数据库种类

  由表1、表2可以分析得出:五种方式下,数据库O的CPU平均负荷均低于数据库S,数据库O的内存最高额外开销均高于数据库S。同时由图1可知,数据库O在NT上的处理时间是数据库S的5~20倍,这说明数据库S与NT的配合明显优于数据库O。而事实上,数据库O在大型数据库、高档的中小型计算机上的性能要超出数据库S,由此可见,要针对系统的具体情况选择合适的数据库。

  数据库参数设置

  数据库参数设置的不同,数据库性能的发挥也不同,进而在服务器端的查询速度也不一样。拿数据库O来说,对是否把表建在簇上,情况是不同的。对数据库性能的调整也是解决瓶颈问题的一个方面。


  结 论


  通过以上测试分析,可以得出以下两个结论:

  各种接口的适用场合

  根据各种接口性能对比、编程的难易程度与工作量等情况,可以总结出五种接口方式各自的适用场合,如表6所示。

  瓶颈的解决途径探讨

  通过瓶颈来源的测试分析,可以总结出以下几点改善措施:

  ●提高网络传输速度;

  ●在网页设计时尽可能减少耗时的媒体;

  ●分流并发访问的用户;

  ●选择较快的接口方式;

  ●提高Web程序的编写质量;

  ●根据操作系统、硬件性能、数据量选取合适的数据库;

  ●邀请富有经验的数据库管理员来调配数据库的参数设置;

  ●SQL语句要精心设计。

  目前网站大多使用较为简单的网页,如上海热线“证券之星”的典型网页,使用33.6K的Modem,网络上的传输延时仅为1.2秒。所以,要解决Web与数据库接口的瓶颈问题,应把主要精力放在数据库性能调整与接口方式的选择上。在选择接口方式时,虽然当前网络带宽较窄,下载Java-Applet的初始化时间较长,掩盖了它的高速度特性,但随着互联网传输速度的提高,网络传输延时将最终得以解决,因此完全有理由相信:Java-Applet将最终成为Web与数据库接口方式的主流!