有多种方法可以改进性能:
通常可以用来增加 Net.Data 性能的两种方法是:使用现场连接 和 Web 服务应用程序设计接口(API),例如 ICAPI、ISAPI 和 NSAPI。 请参阅Net.Data 语言参考指南以查看您的平台支持什么。
有些服务器可以通过使用现场连接来提高性能,以保持持久性的数据 库连接。有些 Net.Data 操作需要较长的启动时间。 例如,在发出数据库查询之前,进程本身必须标志到 DBMS,并连接到数据库。 这通常在 Net.Data 宏存取数据库所需的全部处理时间中占用了一大部分。 另一个花费启动的例子是运行 Java 应用程序(不是 Java 小程序)所需的 Java 虚拟机。 由于 CGI 程序的操作方式,这些启动花费是按照到 Web 服务器的每个请 求来计费的。
现场连接可以通过删除启动时的系统开销,显著地改进系统性能。 这种节省来自于连续运行执行启动功能的一个或多个进程。然后这些进 程等待着服务请求。 如果您使用 Net.Data 作为 CGI 程序,则可以运行现场连接。如果您使 用 Web 服务器 API,则必须使用现场连接。
现场连接是由连接管理器和 cliette 组成的。 cliette 是由连接管 理器启动的单线程进程,并在服务器运行时保持为活动的。cliette 在初始化文件中用关键字 CLIETTE 处理数据并与 Net.Data 语言环境通 信。每种类型的 cliette 都可以处理特定的后端函数,例如 DB2 cliette,它可以 在 Net.Data 处理任何 Net.Data 宏之前,连接到数据库并设置执行 SQL 调用的操作。 可执行程序是在配置文件 dtwcm.cnf 中命名的。
使用现场连接有三个主要优点:
再使用连接比设置新的连接更 有效。必须先确定连接时间和全局处理时间相比较时哪个更昂贵。 通常 ,如果请求小型的 SQL 语句(例如,对少于 100,000 行的数据库的小型查 询),或如果连接比较困难(例如,远程服务器),则连接时间是主要的。
现场连接允许您具有可以 同时连接到多个数据库的 Net.Data 宏连接。 因为每个数据库都有唯一的 cliette,因此 Net.Data 只是简单地与多个 cliette 进行通信。
连接管理器具有处理 SELECT 语句的能力,可以删除前面的 N 行。 这就可以采用以“下一个”和“上一个”选项浏览大型列表的应用程序。 通过将变量 START_ROW_NUM 设置为 N,可以分割大型查询,以显示可管理的块, 并允许应用程序用户单击 NEXT 按钮来检索下一组行。
如果选择使用 API (代替 CGI)与数据库进行通信,则必须使用现场连接。 如果应用程序具有以下要求,则可以从现场连接中获益:
许多应用程序可以通过使用 ACTIVATE DATABASE 或 START DATABASE 命令节省建立连接所需的时间,从而改进性能(而不使用现场连接)。 参 阅您的数据库文档以获取数据库使用的命令的细节。并检查您的平台的 文档以查看是否有帮助改进性能的附加步骤。
连接管理器是 Net.Data 的一个独立可执行程序,其名称为 dtwcm。 您应该在启动 Web 服务器时启动它。 当启动连接管理器时,它读取配置文件,并创建一组用于处理数据的进程。 在每个进程中,连接管理器开始执行一个特定的 cliette。
一旦所有程序都设置好并已经运行(包括数据库、Web 服务器和连接管理器), 则当启用现场连接时, Net.Data 的处理通常包括这些步骤:
如果在初始化文件中指定了 cliette,但是连接管理器没有运行,则 Net.Data 装入 DLL 并处理宏。如果您使用一个 API,您可能会接收到 错误并应当启动连接管理器。
现场连接使用了配置文件 dtwcm.cnf 来确定需要启动哪个 cliette。 在本例中显示了一个样本配置文件,它包含以下这些模块:
为了引用上的方便,这些行已经编号:
1 CONNECTION_MANAGER{
2 MAIN_PORT=7100
3 ADMIN_PORT1=7101
4 ADMIN_PORT2=7102
5 }
6
7 CLIETTE DTW_SQL:CELDIAL{
8 MIN_PROCESS=1
9 MAX_PROCESS=5
10 START_PRIVATE_PORT=7200
11 START_PUBLIC_PORT=7210
12 EXEC_NAME=./cltdb2
13 DATABASE=CELDIAL
14 BINDFILE=/usr/... .../d2wsql.bnd
15 LOGIN=marshall
16 PASSWORD=stlpwd
17 }
18
19 CLIETTE DTW_APPLET{
20 MIN_PROCESS=1
21 MAX_PROCESS=5
22 START_PRIVATE_PORT=7300
23 START_PUBLIC_PORT=7310
24 EXEC_NAME=./javaapp
25 }
对于配置文件,行 1 - 5 是必需的。 对于所有 SQL cliette,行 7 - 12 和 17 是必需的。 如果连接到一个 DB2 数据库,还可以包含其它信息,例如用户 ID 和口令。 这些附加值显示在行 13 - 16 中。 如果使用 Java 小程序,行 19 - 25 都是必需的。
您可以指定使用 LOGIN 和 PASSWORD 变量的缺省值,这意味着 Net.Data 使用与启动连接服务器相同的用户标识符来连接到 DB2 数据 库。这让您避免在配置文件中放置此信息。例如用以下行来替换第 15 和 16 行:
LOGIN=*USE_DEFAULT PASSWORD=*USE_DEFAULT
必须确定在系统中使用哪些端口号码。 还必须确定 MIN_PROCESS 和 MAX_PROCESS 的值。 当连接管理器启动时,由 MIN_PROCESS 指定的进程号被启动。 此后,如果同时有几个进程到达,则连接管理器启动多个 cliette,按 需要添加一个,直到达到 MAX 中指定的值为止。 您所使用的值可能会影响系统性能,但可以在稍后更改它们。
要使用现场连接,必须在 Net.Data 初始化文件中为 DTW_SQL (可能 是 DTW_ODBC) 包含 ENVIRONMENT 语句。请参阅 Net.Data 语言环境指南以获取更多信息。
在修改配置文件之前,要注意以下各点:
CLIETTE DTW_SQL:D1{ ...}
CLIETTE DTW_SQL:D2{....}
CLIETTE DTW_SQL:D3{....}
START_PUB_PORT=1000 START_PRIV_PORT=1010 MAX_NUM_PROC=5
本例子使用这些端口:
| 1000 | 1010 |
| 1001 | 1011 |
| 1002 | 1012 |
| 1003 | 1013 |
| 1004 | 1014 |
一个常见的错误是有两组 cliette 覆盖它们所使用的端口。 请询问系统管理员,保证计划要使用的端口是可用的。您所使用平台的说明文件中具有一般的指导信息,告诉了您操作系统中哪些端 口是可用的。
如果您正在使用 CGI,并只希望一些数据库使用现场连接,只须简单 地在配置文件中列出这些的数据库。当 Net.Data 处理 Net.Data 宏并遇 到一个 SQL 段时,向连接管理器请求指定的 cliette。 如果连接管理器中没有那种类型的 cliette,它以 NO_CLIETTE_AVAIL 消息作为 响应。 Net.Data 转而用 DLL 版本来处理请求。
使用 Internet Connection API 可以改进性能,因为它不经过 CGI 处理。 请参阅 Internet 连接 Web 程序设计指南中的细节:
http://www.ics.raleigh.ibm.com/pub/icswpg.htm
有关在哪些系统中可以使用 ICAPI 的信息以及其他的信息,可以在“说明文件”中找到。 配置 Net.Data 以 便在服务器上运行 ICAPI 的步骤如下:
WWW\CGI-BIN\
其它 Net.Data DLL 或共享程序库必须在服务器的 DLL 或共享库目录中 。
Service /cgi-bin/db2www* c:\www\cgi-bin/dtwicapi:dtw_icapi*
有关在哪些系统中可以使用 ISAPI 的信息以及其他的信息,可以在“说明文件”中找到。 配置 Net.Data 以 便在服务器上运行 ISAPI 的步骤如下:
Net.Data 中带有用于 ISAPI 的 DLL。 此 DLL 位于服务器的子目录中。 例如:
/inetsrv/scripts/dtwisapi.dll
ISAPI 回避了 CGI 处理,因此必须更改那些出现 CGI 调用 Net.Data 的 Web 页和 Web 宏。 在表和锚引用中除去 URL 的 cgi-bin/db2www/ 部分,并将它替换为 dtwisapi.dll。 例如,这是将 Net.Data 作为 CGI 程序来调用的一个 URL 例子:
http://server1.stl.ibm.com/cgi-bin/db2www/test1.mac/report
这个 URL 把 Net.Data 作为 ISAPI 应用程序使用:
http://server1.stl.ibm.com/scripts/dtwisapi.dll/test1.mac/report
如果在几个目录中保留了 Net.Data 宏,则目录名出现在 DLL 名之后。 例如,这个 URL 调用 一个保存在 /orders/ 目录中的 Net.Data 宏:
http://server1.stl.ibm.com/cgi-bin/db2www/orders/test1.mac/report
更新后的 URL 保留着目录名:
http://server1.stl.ibm.com/scripts/dtwisapi.dll/orders/test1.mac/report
Web 服务器必须使用现场连接,以便对所有语言环境使用 NSAPI。 使用 NSAPI 可以改进性能,因为它不经过 CGI 处理。 有关的细节,请参阅 Netscape Server API 页面:
http://home.netscape.com/newsref/std/server_api.html
有关在哪些系统中可以使用 NSAPI 的信息以及其他的信息,可以在“说明文件”中找到。 配置 Net.Data 以便在服务器上运行 NSAPI 的步骤如下:
/netscape/server/bin/httpd/dtwnsapi.dll
| obj.conf | 添加至文件顶部:
Init fn="load-modules" shlib="dtwnsapi.dll" funcs=dtw_nsapi |
| obj.conf | 添加至 Services 命令:
Service fn="dtw_nsapi" method=(GET|HEAD|POST) type="magnus-internal/d2w" |
| mime.types | 添加此类型:
type=magnum-internal/dtw exts=mac |
/netscape/server/docs/
http://server1.stl.ibm.com/cgi-bin/db2www/test1.mac/report
这个 URL 把 Net.Data 作为 NSAPI 应用程序使用:
http://server1.stl.ibm.com/test1.mac/report
如果在几个目录中保留了 Net.Data 宏,有几个步骤需稍加更改:
http://server1.stl.ibm.com/cgi-bin/db2www/orders/test1.mac/report
更新后的 URL 更短,但仍然保留着目录名:
http://server1.stl.ibm.com/orders/test1.mac/report