ISAPI中如何控制连接数?

rainsea 2003-11-25 11:29:49
有个ISAPI的DLL,有请求过来的时候,ISAPI会去连接SQL数据库,如果同时并发的请求数量过多,会导致BDE或者数据库服务器死掉,谁知道这个时候如何在ISAPI中进行连接数的控制啊,比如:一次处理80个请求,连接出多少进多少,其它的请求处于等待状态。
不要说利用IIS控制哦,IIS这里可能会有很多其它请求的。
...全文
57 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
rainsea 2003-11-28
  • 打赏
  • 举报
回复
[C++ Error] Unit1.cpp(18): E2015 Ambiguity between 'Application' and 'Forms::Application'

上面的这个问题,要在Application前加上WebBroker::,如WebBroker::Application->MaxConnections

问题基本解决了,谢谢BCB(天下三分明月夜,二分无赖是扬州),一会给分
BCB 2003-11-27
  • 打赏
  • 举报
回复
在BCB6下,没有这个头,会显示:变量Apllication不存在
coolyylu 2003-11-27
  • 打赏
  • 举报
回复
不加也可以,看得的是主程序里的Application 。

bcb6里恐怕也可以看到吧,可惜我手上没有安装bcb6
BCB 2003-11-27
  • 打赏
  • 举报
回复
在BCB5下,不加头看能不能访问到全局变量Application?
coolyylu 2003-11-27
  • 打赏
  • 举报
回复
在bcb5试过,就在Unit1只加入一行#include <ISAPIApp.hpp>,还是会出现一下错误。bcb6没有测试过。

[C++ Error] Unit1.cpp(18): E2015 Ambiguity between 'Application' and 'Forms::Application'
BCB 2003-11-27
  • 打赏
  • 举报
回复
向导产生的,我只在Unit1中加了个头
#include "ISAPIApp.hpp
并加WebModule的事件中加了一行
void __fastcall TWebModule1::WebModuleCreate(TObject *Sender)
{ // TWebModule的产生事件中
Application->MaxConnections=10;
}
rainsea 2003-11-26
  • 打赏
  • 举报
回复
谢谢两位了,我的程序用了很长时间了,而且代码量很大,尤其是结构复杂,用三层是我将来一定要考虑的:)
数据库的缓冲机制怎么使用能详细说一下么?我的连接数一多的时候,SQL SERVER就会达到2G以上的内存,而且SQL SERVER的各种内存设置等等都已经试过,没有任何效果,还请过一个专业的公司,也没有解决问题。所以我才想在ISAPI中来控制连接数的,但如果数据库的缓冲能够解决,那就太好了, matq2008(叶子) 兄能说的详细些么?
rainsea 2003-11-26
  • 打赏
  • 举报
回复
BCB(天下三分明月夜,二分无赖是扬州),真是太感谢你了,我试试看
coolyylu 2003-11-26
  • 打赏
  • 举报
回复
我是用bcb5 ,使用Web Server Application生成的isapi/nsapi框架代码和WebModule

bcb6 里面通过Web Server Application生产的框架代码也是一样的

通过向导生成的Application都是使用宏定义的
#define Application Webbroker::Application

所以请问 BCB(天下三分明月夜,二分无赖是扬州) :
是使用手写的主程序和WebModule?还是使用向导做的?

通过向导做的主程序不可能有TISAPIApplication * Application; 还是要自己定义TISAPIApplication * Application;

BCB 2003-11-26
  • 打赏
  • 举报
回复
我上面的ISAPI程序是BCB6生成的,编译都通过了,那来什么冲突不冲突,
不需要你自已定义TISAPIApplication * Application;
coolyylu 2003-11-26
  • 打赏
  • 举报
回复
虽然有TISAPIApplication * Application;
但是这个和bcb自动产生的#define Application Webbroker::Application有冲突
而且关键在DllEntryPoint中使用不合法。
BCB 2003-11-26
  • 打赏
  • 举报
回复
// TISAPIApplication * Application; 头在ISAPIApp.hpp
所以加了头 #include "ISAPIApp.hpp"就可以设置
void __fastcall TWebModule1::WebModuleCreate(TObject *Sender)
{
Application->MaxConnections=10; // 最大线程数
}
代码如下:
=================================================
//---------------------------------------------------------------------------
#include "ISAPIApp.hpp" // 全局变量 Application定义
#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TWebModule1 *WebModule1;

//---------------------------------------------------------------------------
__fastcall TWebModule1::TWebModule1(TComponent* Owner)
: TWebModule(Owner)
{
}
//---------------------------------------------------------------------------
// TISAPIApplication * Application; 头在ISAPIApp.hpp
void __fastcall TWebModule1::WebModuleCreate(TObject *Sender)
{ // TWebModule的产生事件中
Application->MaxConnections=10;
}
//---------------------------------------------------------------------------
BCB 2003-11-26
  • 打赏
  • 举报
回复
TWebRequestHandler::MaxConnections
Sets or returns the MaxConnections used by the socket.

__property int MaxConnections = {read=FMaxConnections, write
=FMaxConnections, nodefault};

Description

Set MaxConnections to adjust the number of HTTP request messages the application can handle simultaneously. Use the ActiveCount and InactiveCount properties to get a sense of the frequency and duration of request messages. Then set MaxConnections so that it is high enough to avoid exceptions when the application runs out of Web modules, but low enough not to degrade performance too severely by running too many simultaneous threads.

If a request message is received when ActiveCount is already at MaxConnections, the application raises an exception.

Note: InactiveCount is only meaningful for Apache, ISAPI, or NSAPI applications. Each CGI application handles only a single request message, so there is no need to cache unused data modules.
yhec 2003-11-26
  • 打赏
  • 举报
回复
ISAPI中就可以设定最大线程数,大于这个线程数时,会自动排队。
叶子哟 2003-11-25
  • 打赏
  • 举报
回复
数据库可以启用缓冲机制,解决连接用户数问题
netsys2 2003-11-25
  • 打赏
  • 举报
回复
用三层模型,写个应用服务器,ISAPI不直接连数据库,由应用服务器来连接,
然后在应用服务器上控制连接数。

1,317

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder 网络及通讯开发
社区管理员
  • 网络及通讯开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧