CN101782864B - 一种改善Web服务器通信服务稳定性的方法 - Google Patents

一种改善Web服务器通信服务稳定性的方法 Download PDF

Info

Publication number
CN101782864B
CN101782864B CN 200910188548 CN200910188548A CN101782864B CN 101782864 B CN101782864 B CN 101782864B CN 200910188548 CN200910188548 CN 200910188548 CN 200910188548 A CN200910188548 A CN 200910188548A CN 101782864 B CN101782864 B CN 101782864B
Authority
CN
China
Prior art keywords
web server
web
improving
communication service
thread
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN 200910188548
Other languages
English (en)
Other versions
CN101782864A (zh
Inventor
陈闽峰
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
LANWON TECHNOLOGY CO., LTD.
Original Assignee
SHENZHEN LANDWIND NETWORK CO Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by SHENZHEN LANDWIND NETWORK CO Ltd filed Critical SHENZHEN LANDWIND NETWORK CO Ltd
Priority to CN 200910188548 priority Critical patent/CN101782864B/zh
Publication of CN101782864A publication Critical patent/CN101782864A/zh
Application granted granted Critical
Publication of CN101782864B publication Critical patent/CN101782864B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Information Transfer Between Computers (AREA)

Abstract

本发明公开了一种改善Web服务器通信服务稳定性的方法,包括步骤:A1、在Web服务器上建立Web服务主进程;A2、所述Web服务主进程将ISAPI扩展任务程序加载到内存中;A3、在所述Web服务器与客户端进行通信时,所述Web服务主进程启动相应的线程执行所述ISAPI扩展任务程序,并同时启动相应的进程完成所述线程要求的处理任务,所述Web服务主进程开辟所述线程和所述进程之间进行通信的共享内存区。

Description

一种改善Web服务器通信服务稳定性的方法
技术领域
本发明涉及通信技术领域,具体涉及一种改善Web服务器通信服务稳定性的方法。
背景技术
Web服务器也称为WWW(WORLD WIDE WEB)服务器,主要功能是提供网上信息浏览服务。WWW是Internet的多媒体信息查询工具,是Internet上近年才发展起来的服务,也是发展最快和目前用的最广泛的服务。正是因为有了WWW工具,才使得近年来Internet迅速发展,且用户数量飞速增长。WWW是World Wide Web(环球信息网)的缩写,也可以简称为Web,中文名字为“万维网”。通过万维网,人们只要通过使用简单的方法,就可以很迅速方便地取得丰富的信息资料。由于用户在通过Web浏览器访问信息资源的过程中,无需再关心一些技术性的细节,而且界面非常友好,因而Web在Internet上一推出就受到了热烈的欢迎,走红全球,并迅速得到了爆炸性的发展。
如图1所示,Web服务器可以解析(handles)HTTP协议。当Web服务器接收到一个HTTP请求(request),会返回一个HTTP响应(response),例如送回一个HTML页面。为了处理一个请求(request),Web服务器可以响应(response)一个静态页面或图片,进行页面跳转(redirect),或者把动态响应(dynamic response)的产生委托(delegate)给一些其它的程序。无论它们的目的如何,这些服务器端(server-side)的程序通常产生一个HTML的响应(response)来让浏览器可以浏览。
使用最多的web server服务器软件有两个:微软的信息服务器(IIS),和Apache。Microsoft的Web服务器产品为Internet Information Server(IIS),IIS是允许在公共Intranet或Internet上发布信息的Web服务器。IIS是目前最流行的Web服务器产品之一,很多著名的网站都是建立在IIS的平台上。IIS是一种Web服务组件,其中包括Web服务器、FTP服务器、NNTP服务器和SMTP服务器,分别用于网页浏览、文件传输、新闻服务和邮件发送等方面,它使得在网络(包括互联网和局域网)上发布信息成了一件很容易的事。它提供ISAPI(Intranet ServerAPI)作为扩展Web服务器功能的编程接口。
如图2所示,互联网服务应用程序编程接口(Internet ServerApplication Programming Interface,简称ISAPI)是一组API函数。它是一种用来开发扩展IIS程序的强有力的方法。使用该方法可以开发基于Web的医学影像显示接口层,通过该接口层Web浏览器就可以访问到集群存储服务器上的影像数据。
如图3所示,医学影像显示接口层具体的任务处理操作流程:首先Web浏览器通过标准HTTP协议向Web服务器发出取图请求。Web服务器接收到求请后,通过TCP/IP协议向影像存储服务器发出连接请求,收到影像存储服务器的连接确认后读取影像数据,数据读取成功断开连接。图像获取成功后,Web服务器应该根据浏览器传过来的参数进行相应的处理,如调整图像大小,数据压缩,文件格式转换等。图像处理完毕后将结果返回给Web浏览器。
如图4所示,ISAPI扩展任务程序以DLL形式被Web服务加载到自己的进程空间,因此和Web服务共用一个地址空间,且在没有客户请求时可以将其从内存中卸载;当接收到多个客户请求时使用多线程实现任务处理方案,由线程调用ISAPI扩展任务程序,因为ISAPI扩展任务和调用它的进程(IIS)在同一进程地址空间中,这样它们就可以互相直接联系。这种方式一个最大的隐患就是会导致整个IIS当机,有些时候会时整个Web服务器瘫痪。
发明内容
本发明要解决的技术问题是提供一种改善Web服务器通信服务稳定性的方法,克服现有技术Web服务器通信服务单纯采用多线程的ISAPI扩展任务与每个客户端进行通信,容易导致通信服务不稳定的缺陷。
本发明为解决上述技术问题所采用的技术方案为:
一种改善Web服务器通信服务稳定性的方法,包括步骤:
A1、在Web服务器上建立Web服务主进程;
A2、所述Web服务主进程将ISAPI扩展任务程序加载到内存中;
A3、在所述Web服务器与客户端进行通信时,所述Web服务主进程启动相应的线程执行所述ISAPI扩展任务程序,并同时启动相应的进程完成所述线程要求的处理任务,所述Web服务主进程开辟所述线程和所述进程之间进行通信的共享内存区。
所述的改善Web服务器通信服务稳定性的方法,其中所述步骤A3包括步骤:建立管理进程,由所述管理进程为所述线程和所述进程在所述共享内存区内分配内存资源。
所述的改善Web服务器通信服务稳定性的方法,其中所述步骤A3包括步骤:所述Web通信服务主进程在所述共享内存区内设置进程状态表,所述进程状态表用于标记线程和进程的状态。
所述的改善Web服务器通信服务稳定性的方法,其中所述步骤A3包括步骤:所述Web服务主进程在所述共享内存区内设置进程消息表,所述进程消息表用于存储进程间进行通信的消息内容。
所述的改善Web服务器通信服务稳定性的方法,其中所述步骤A3包括步骤:所述Web服务主进程在所述共享内存区内设置子进程属性信息结构,所述子进程属性信息结构用于标记所述进程的相关信息。
所述的改善Web服务器通信服务稳定性的方法,其中所述步骤A3包括步骤:所述Web服务主进程在所述共享内存区内设置进程选择属性信息结构,所述进程选择属性信息结构用于标记所述进程与其它进程的关系信息。
所述的改善Web服务器通信服务稳定性的方法,其中所述步骤A3包括步骤:所述Web服务主进程在所述共享内存区内设置管理进程属性信息结构,所述管理进程属性信息结构用于记录所述管理进程的管理信息。
所述的改善Web服务器通信服务稳定性的方法,其中所述步骤A3包括步骤:所述线程将ISAPI扩展任务数据拷入到所述共享内存区内的数据交换区,然后等待处理结果。
所述的改善Web服务器通信服务稳定性的方法,其中为所述进程设置生存期,超过生存期的所述进程将结束运行。
所述的改善Web服务器通信服务稳定性的方法,其中所述Web服务主进程设置初始默认启动子进程数,如果处于生存状态的所述进程数量小于所述初始默认启动子进程数,所述Web服务主进程启动新的所述进程。
本发明的有益效果:本发明改善Web服务器通信服务稳定性的方法在Web服务器上采用线程和进程协同完成ISAPI扩展任务的处理方式提供Web服务,消除了单纯多线程通信服务不稳定的因素,极大改善了Web服务器的通信服务稳定性,本发明改善Web服务器通信服务稳定性的方法是Web服务器技术的重大进步。
附图说明
本发明包括如下附图:
图1为现有技术Web服务示意图;
图2为现有技术通过ISAPI医学影像显示接口层访问集群存储服务器上的影像数据示意图;
图3为现有技术通过ISAPI医学影像显示接口层访问集群存储服务器上的影像数据流程图;
图4为现有技术Web服务器进程IIS与ISAPI扩展程序在同一地址空间的示意图;
图5为本发明技术方案示意图;
图6为本发明设置管理进程进行资源管理的示意图;
图7为本发明将数据结构映射到共享内存区示意图;
图8为本发明Web服务线程的运行流程图;
图9为本发明Web服务管理进程运行流程图;
图10为本发明Web服务进程运行流程图;
图11为本发明实施例示意图;
图12为本发明实施例通过任务管理器查看进程运行状态的示意图;
图13为本发明实施例主进程日志示意图;
图14为本发明实施例子进程日志示意图。
具体实施方式
下面根据附图和实施例对本发明作进一步详细说明:
如图5所示,为了保证Web服务器能够提供稳定的Web通信服务,把所有的处理任务量化成数据的输入、处理、输出三个环节。ISAPI扩展任务请求数据的输入和处理结果数据的输出只涉及到数据内容的拷贝,环节简单不可能出现什么问题。问题主要出现在ISAPI扩展任务处理过程,由于影像处理的请求任务比普通的文字处理请求要复杂多变,处理过程可能出现的问题很难全部控制,所以将该环节独立到Web服务程序之外来考虑,这样就不会影响Web服务程序的稳定性。
如何能将ISAPI扩展任务处理环节独立到Web服务程序(Web服务主进程)之外呢?我们使用了一种方法将每一个ISAPI扩展任务独立成一个个进程,将并发处理的每一个线程任务对应一个进程,由每一个进程来处理该线程需要完成的任务,当发生一个ISAPI扩展任务时线程将输入数据提交给该进程,由进程处理任务,线程等待进程处理,进程处理结束将结果传给线程,线程返回请求结果。任务线程与处理进程通道的搭建由Web服务程序(Web服务主进程)或者管理进程来负责,Web服务主进程或者管理进程同时实现处理进程分配策略。当处理进程发生错误无法完成处理任务,线程结束等待返回错误信息,Web服务主进程或者管理进程将该处理进程关闭,重新启动一个新的进程代替原进程。使用这种方法可以将处理环节独立于服务程序(Web服务主进程)之外,避免系统处理错误导致崩溃的可能性。
如图6和图7所示,根据上述说明,我们可以知道该方法的实现主要是分成三部分,分别是Web服务主进程(Web Server Process)、数据交换区(Shared Memory)、ISAPI扩展任务进程(Task Process)。但是这三部分如何联系起来以及如何避免线程相互抢夺资源呢?为了将这三部分有效的组织起来,还需要再引入一个管理进程(Manage Process),由管理进程来对资源进行有效的分配。因为系统在运行的时候会为每个进程分配不同的内存区域,对不同进程来说,它们具有独立的数据空间,要进行数据传递需要分配一个共享内存区(Shared Memory)。首先在启动Web服务主进程的时候可以通过系统函数CreateFileMapping创建一个共享内存区,通过MapViewOfFile将内存区影射到进程地址中,然后定义三个数据结构,分别记录是子进程属性信息结构、进程选择属性信息结构和管理进程属性信息结构:
子进程属性信息结构:
struct LChildProcInfo
{
       LProcState State;//进程当前状态
       HANDLE ProcessHandle;//进程句柄
       DWORD ProcessId;//进程编号
       HWND Handle;//进程接收消息对象句柄
       DATE OpenTime;//进程打开时间
       DATE SuspendTime;//进程最后一次挂起时间
       DWORD ChannelId;//通道进程编号
       DWORD ThreadId;//通道线程编号
       int Command;//处理命令编号
       int DataState;//数据读写状态0:输入,1:输出,-1:错误
       bool IsLastFragment;//是否为结尾数据,True为数据传输结束
       int Size;//数据大小
       char Data[0x100000];//任务处理数据交换区
};
进程选择属性信息结构:
struct LPipeProcInfo
{
       DWORD ProcessId;//进程编号
           int Request;//向父进程请求通道句柄,0:无处理任务,1:有处理
任务
           int Result;//返回值,0~N:返回处理子进程索引
           DWORD ChannelId;//请求通道进程ID
           DWORD ThreadId;//请求通道线程ID
    };
    管理进程属性信息结构:
    struct LParentProcInfo
    {
           HWND Handle;//父进程对象句柄
           int MaxProcCount;//子进程总数
           LPipeProcInfo Channel[100];//任务进程选择
    };
将三个结构影射到共享内存区中,同时由Web服务主进程或者管理进程在共享内存区中设置进程状态表,进程状态表如表1所示,这样进程间就可以知道各自的状态,以便如何进行下一步的操作。
表1
Figure G2009101885482D00081
对进程状态的记录后还需要一组用于进程间通信的消息命令,由Web服务主进程或者管理进程在共享内存区中设置进程消息表,进程消息表如表2所示。
表2
  消息命令   命令描述
  WM_PROCESS_OPEN   进程已经打开,向父进程发出通知
  WM_PROCESS_CLOSE   进程已经关闭,向父进程发出通知
  WM_PROCESS_EXECUTE   向父进程发出通知,进程已经开始执行操作,需要更新启动一个新进程进行监听
  WM_PROCESS_SUSPEND   向父进程发出通知,进程已经挂起
  WM_PROCESS_Stop   向子进程发出通知,要求停止处理
如图8、图9和图10所示,管理进程启动后将进程消息句柄记录在管理进程属性信息结构中。为了避免启动任务进程影响系统的运行效率,在启动管理进程后由Web服务主进程或者管理进程预先启动几个处理子进程,使用CreateProcess启动任务进程,函数调用结束后返回进程ID号,找出进程状态表中未记录进程信息的位置,将内容写入该位置,同时将进程设置为psInit状态表示该任务进程正在启动中,还不能接收任务处理。子进程启动后通过系统函数OpenFileMapping打开管理进程创建的共享内存区,通过MapViewOfFile将内存区影射到该进程地址中,这样子进程就可以访问进程信息列表中的信息。使用GetCurrendProcessId获取该进程ID找出列表中记录该进程的位置,将进程状态修改为psSuspend,说明进程已经启动成功,可以执行任务。同时使用PostMessage向管理进程发出WM_PROCESS_OPEN消息,通知管理进程可以为该进程分配任务。管理进程进入等待任务求请状态,实时检测管道进程属性信息表变量Request属性值,如果值为1表示需要分配一个资源给服务线程来处理任务。当Web服务主进程接收到一个任务请求时,首先判断处理子进程属性信息结构,该线程是否已经分配了处理资源,如果已经分配了资源,直接向处理进程发出处理请求,如果未分配资源,将管道进程属性信息变量Request值设为1,向管理进程发出请求,管理进程为该线程分配资源,将Result设置为0~N的值,指定处理子进程属性信息具体的位置,同时向分配进程发出WM_PROCESS_EXECUTE消息,通知进程进入执行状态。如果所有的进程都处于处理状态,管理进程直接启动一个进程来执行任务。的到资源后线程向该结构分别填写Command:处理命令信息,DataState:0输入状态,Size:输入数据大小,Data:数据内容,State:进程状态设为psExecute,然后等待进程处理结束返回结果。如果Data定义的最大空间不能放下输入的数据,可以采用多次填入数据的方法来实现大数据的输入,采用IsLastFragment来识别数据是否传输完成。处理进程接收到处理任务,从子进程属性信息结构中读取数据,进行处理,处理结束后向任务线程返回处理结果,分别填写DataState:1输出状态,Size:输出数据大小,Data:数据内容。如果处理错误DataState值-1处理错误。如果Data定义的最大空间不能放下输出的数据,可以采用多次填入数据的方法来实现大数据的输出,采用IsLastFragment来识别数据是否传输完成。任务线程判断DataState状态如果值为1,说明任务处理完成读取Data数据,将内容返回给Web浏览器,结束任务。如果值为-1,说明处理错误,将进程状态设置为psError,结束任务。管理进程定期检测各进程状态,发现有psError状态进程,将其关闭。为了提高线程与进程交互效率,避免任务线程每次处理都要向管理进程申请资源,所以当进程任务处理完后,并没有直接退出执行状态,仍然记录对应线程信息,延迟一段时间,等待该线程的下一次处理任务。延迟一段时间,如果未接收到对应线程任务,处理子进程重新进入psSuspend状态将挂起时候记录在信息列表结构变量SuspendTime中,同时发管理进程发出WM_PROCESS_SUSPEND消息,通知管理进程该处理进程可以接收下一个线程任务。每个任务进程都设置了一个生存期,然后通过与SuspendTime时间进行比较来判断是否已经超过了进程的生存期。如果进程已经超过生存期结束进程,向Web服务主进程或者管理进程发出WM_PROCESS_CLOSE消息。由于每个进程都有一定的生存期,也就是说过一段时间后所有的旧进程都会被关闭,如果没有了任务进程,就无法接收任务请求,所以Web服务主进程或者管理进程设置了一个初始默认启动进程数,如果进程数量小于初始默认启动进程数,Web服务主进程或者管理进程会启动新的任务进程来补充处理任务。使用定期更换进程的方法可以进一步提高系统的稳定性。当系统关闭的时候Web服务主进程或者管理进程会向各处理子进程发出WM_PROCESS_STOP消息,要求关闭所有处理。使用该方法,Web服务主进程内的线程任务只负责将任务输入数据拷入到数据交换区,然后等待处理结果,处理结束后再从数据交换区拷出输出数据返回结Web浏览器,Web服务主进程内部环节简单,稳定性高。
具体实施例
如图11所示,在医学影像应用中,为了实现跨internet访问远端的存储服务器影像数据,使用本方法开发了一个基于Web的医学影像显示接口层,通过该接口层Web浏览器就可以访问到PACS集群存储服务器上的影像数据,将其传送到Web浏览器上。Web服务器上包括三个应用程序,分别是WebPACS.dll该程序是ISAPI扩展动态库用于接收浏览器的访问请求,WebServerManage.exe,负责管理处理进程,WebServerChild.exe,负责处理WebPACS.dll接收的处理任务。图12所示是应用程序实例后在任务管理器中的表现方式,w3wp.exe是Window2003系统IIS的Web服务实现程序,由它加载WebPACS.dll。
WebPACS.dll、WebServerManage和WebServerChild实例化后的具体运行流程:WebServerManage.exe主进程启动后将进程消息句柄记录在属性信息中。为了避免启动任务进程影响系统的运行效率,在启动管理主进程后应该预先启动几个处理子进程,使用CreateProcess启动任务进程,函数调用结束后返回进程ID号,找出子进程信息列表中未记录进程信息的位置,将内容写入该位置,同时将进程设置为psInit状态表示该WebServerChild.exe任务进程正在启动中,还不能接收任务处理。
WebServerChild.exe子进程启动后打开管理进程创建的共享内存区,将其影射到该进程地址中,这样处理子进程就可以访问进程信息列表中的信息。将进程状态修改为psSuspend,说明进程已经启动成功,可以执行任务。同时使用PostMessage向管理主进程发出WM_PROCESS_OPEN消息,通知管理主进程可以为该进程分配任务。
WebServerManage.exe主进程进入等待任务求请状态,实时检测管道进程属性信息表变量Request属性值,如果值为1表示需要分配一个资源给服务线程来处理任务。当Web服务接收到一个任务请求时,WebPACS.dll启动一个线程任务,首先判断处理子进程属性信息结构,该线程是否已经分配了处理资源,如果已经分配了资源,直接向WebServerChild.exe处理进程发出处理请求,如果未分配资源,将管道进程属性信息变量Request值设为1,向WebServerManage.exe主进程发出请求,管理进程为该线程分配资源,将Result设置为0~N的值,指定处理子进程属性信息具体的位置,同时向分配进程发出WM_PROCESS_EXECUTE消息,通知WebServerChild.exe进程进入执行状态。如果所有的进程都处于处理状态,管理进程直接启动一个进程来执行任务。的到资源后线程向该结构分别填写Command:处理命令信息,DataState:0输入状态,Size:输入数据大小,Data:数据内容,State:进程状态设为psExecute,然后等待进程处理结束返回结果。如果Data定义的最大空间不能放下输入的数据,可以采用多次填入数据的方法来实现大数据的输入,采用IsLastFragment来识别数据是否传输完成。
例如:客户端需要将PACS服务器上的DICOM图像文件专换成一个JPG格式文件,返回到Web浏览器上进行显示,可以在Web浏览器输入如下命令
http://www.testwado.com/WebPACS.dll?wado?requestType=WADO
&studyUID=1.2.826.0.1.3680043.2.461.20041015144704.1956.0410150046
&seriesUID=1.2.840.113564.10.1.35698029491047416502138619819516012856218
&objectUID=1.2.840.113564.10.1.229317351633176186331581051171102532328274
&contentType=image%2Fjpeg&columns=800&rows=800&windowCenter=1500&windowWidth=2000 &imageQuality=90
当服务器接收到这条命令后,http://www.testwado.com/WebPACS.dll?为IIS解析内容,后面参数我们通过WebPACS.dll将内容写入处理子进程属性信息结构传送给WebServerChild.exe进行处理。
WebServerChild.exe进程接收到处理任务,从处理子进程属性信息表中读取数据,首先到PACS存储服务器读取对应的DICOM图像文件,然后根据输入参数将宽高设置成800X800,窗宽窗位设置成WW2000WL1500,以90的压缩率转换成JPG图像文件,处理结束后向任务线程返回处理结果,分别填写DataState:1输出状态,Size:输出数据大小,Data:数据内容。如果处理错误DataState值-1处理错误。如果Data定义的最大空间不能放下输出的数据,可以采用多次填入数据的方法来实现大数据的输出,采用IsLastFragment来识别数据是否传输完成。WebPACS.dll任务线程判断DataState状态如果值为1,说明任务处理完成读取Data数据,将内容返回给Web浏览器,结束任务。如果值为-1,说明处理错误,将进程状态设置为psError,结束任务。管理进程定期检测各进程状态,发现有psError状态进程,将其关闭。为了提高WebPACS.dll线程与WebServerChild.exe进程交互效率,避免任务线程每次处理都要向管理进程申请资源,所以当进程任务处理完后,并没有直接退出执行状态,仍然记录对应线程信息,延迟一段时间,等待该线程的下一次处理任务。延迟一段时间,如果未接收到对应线程任务,WebServerChild.exe进程重新进入psSuspend状态将挂起时候记录在信息列表结构变量SuspendTime中,同时向管理进程发出WM_PROCESS_SUSPEND消息,通知管理进程该处理进程可以接收下一个线程任务。我们为每个WebServerChild.exe进程设置了一个生存期,然后通过与SuspendTime时间进行判断来确认是否已经超过了进程的生存期。如果进程已经超过生存期结束进程,向管理进程发出WM_PROCESS_CLOSE消息。
由于每个WebServerChild.exe进程都有一定的生存期,也就是说过一段时间后所有的旧进程都会被关闭,如果没有了WebServerChild.exe进程,就无法接收任务请求,所以WebServerManage.exe进程设置了一个初始默认启动进程数,如果进程小于指定数量,管理进程会启动新的任务进程来补充处理任务。使用定期更换进程的方法可以进一步提高系统的稳定性。当系统关闭的时候WebServerManage.exe进程会向各WebServerChild.exe子进程发出WM_PROCESS_STOP消息,要求关闭所有处理。
如图13和图14所示,在主进程日志中可以了解到各任务进程的使用情况,在子进程日志中可以了解到进程访问存储服务器数据及返回web数据的使用情况。
使用该方法,Web服务程序内的线程任务只负责将任务输入数据拷贝到数据交换区,然后等待处理结果,处理结束后再从数据交换区拷贝输出数据返回结Web浏览器,服务进程内部环节非常简单,稳定性高。当WebServerChild.exe处理当前一次任务的时候发生未知的异常错误,中止了程序,WebPACS.dll任务线程等待处理过程,延迟一段时间后认为系统错误,结束等待,向浏览器回返错误信息,这样不会影响到Web服务的稳定性。
本领域技术人员不脱离本发明的实质和精神,可以有多种变形方案实现本发明,以上所述仅为本发明较佳可行的实施例而已,并非因此局限本发明的权利范围,凡运用本发明说明书及附图内容所作的等效结构变化,均包含于本发明的权利范围之内。

Claims (10)

1.一种改善Web服务器通信服务稳定性的方法,其特征在于,包括步骤:
A1、在Web服务器上建立Web服务主进程;
A2、所述Web服务主进程将ISAPI扩展任务程序加载到内存中;
A3、在所述Web服务器与客户端进行通信时,所述Web服务主进程启动相应的线程执行所述ISAPI扩展任务程序,并同时启动相应的进程完成所述线程要求的处理任务,所述Web服务主进程开辟所述线程和所述进程之间进行通信的共享内存区。
2.根据权利要求1所述的改善Web服务器通信服务稳定性的方法,其特征在于,所述步骤A3包括步骤:建立管理进程,由所述管理进程为所述线程和所述进程在所述共享内存区内分配内存资源。
3.根据权利要求2所述的改善Web服务器通信服务稳定性的方法,其特征在于,所述步骤A3包括步骤:所述Web服务主进程在所述共享内存区内设置进程状态表,所述进程状态表用于标记线程和进程的状态。
4.根据权利要求3所述的改善Web服务器通信服务稳定性的方法,其特征在于,所述步骤A3包括步骤:所述Web服务主进程在所述共享内存区内设置进程消息表,所述进程消息表用于存储进程间进行通信的消息内容。
5.根据权利要求4所述的改善Web服务器通信服务稳定性的方法,其特征在于,所述步骤A3包括步骤:所述Web服务主进程在所述共享内存区内设置子进程属性信息结构,所述子进程属性信息结构用于标记所述进程的相关信息。
6.根据权利要求5所述的改善Web服务器通信服务稳定性的方法,其特征在于,所述步骤A3包括步骤:所述Web服务主进程在所述共享内存区内设置进程选择属性信息结构,所述进程选择属性信息结构用于标记所述进程与其它进程的关系信息。
7.根据权利要求6所述的改善Web服务器通信服务稳定性的方法,其特征在于,所述步骤A3包括步骤:所述Web服务主进程在所述共享内存区内设置管理进程属性信息结构,所述管理进程属性信息结构用于记录所述管理进程的管理信息。
8.根据权利要求7所述的改善Web服务器通信服务稳定性的方法,其特征在于,所述步骤A3包括步骤:所述线程将ISAPI扩展任务数据拷入到所述共享内存区内的数据交换区,然后等待处理结果。
9.根据权利要求8所述的改善Web服务器通信服务稳定性的方法,其特征在于:为所述进程设置生存期,超过生存期的所述进程将结束运行。
10.根据权利要求9所述的改善Web服务器通信服务稳定性的方法,其特征在于:所述Web服务主进程设置初始默认启动子进程数,如果处于生存状态的所述进程数量小于所述初始默认启动子进程数,所述Web服务主进程启动新的所述进程。
CN 200910188548 2009-12-01 2009-12-01 一种改善Web服务器通信服务稳定性的方法 Active CN101782864B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN 200910188548 CN101782864B (zh) 2009-12-01 2009-12-01 一种改善Web服务器通信服务稳定性的方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN 200910188548 CN101782864B (zh) 2009-12-01 2009-12-01 一种改善Web服务器通信服务稳定性的方法

Publications (2)

Publication Number Publication Date
CN101782864A CN101782864A (zh) 2010-07-21
CN101782864B true CN101782864B (zh) 2013-05-08

Family

ID=42522873

Family Applications (1)

Application Number Title Priority Date Filing Date
CN 200910188548 Active CN101782864B (zh) 2009-12-01 2009-12-01 一种改善Web服务器通信服务稳定性的方法

Country Status (1)

Country Link
CN (1) CN101782864B (zh)

Families Citing this family (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102073537A (zh) * 2010-09-29 2011-05-25 深圳市蓝韵实业有限公司 一种高并发Web医学影像服务器的实现方法
CN102103526A (zh) * 2011-02-14 2011-06-22 博视联(苏州)信息科技有限公司 服务端和客户端间通过服务管理进行进程间通信的方法及系统
CN102347989A (zh) * 2011-10-25 2012-02-08 百度在线网络技术(北京)有限公司 基于资源描述符号的数据配送方法及配送系统
CN103092584A (zh) * 2011-11-03 2013-05-08 深圳市蓝韵网络有限公司 在浏览器上调整医学图像窗宽和窗位的方法
CN104077381B (zh) * 2012-05-02 2018-09-14 北京奇虎科技有限公司 网页访问请求处理方法和分配方法
CN104063461B (zh) * 2012-05-02 2018-10-12 北京奇虎科技有限公司 处理用户访问网页的请求的方法及系统
CN104079598B (zh) * 2013-03-27 2018-09-28 腾讯科技(深圳)有限公司 一种实现网页协同浏览的方法和装置
CN103618758B (zh) * 2013-10-31 2017-01-11 新浪网技术(中国)有限公司 Web服务器及其系统资源访问控制方法
CN105915587B (zh) * 2016-04-05 2019-03-26 网宿科技股份有限公司 内容推送方法、系统、以及缓存服务器
CN107302549B (zh) * 2016-04-14 2021-05-25 宾盛科技(武汉)有限公司 一种远程数据传输与存储系统及方法
CN109545333A (zh) * 2018-11-15 2019-03-29 青岛海信医疗设备股份有限公司 Dicom影像显示、处理的方法及装置
CN111488214B (zh) * 2020-04-17 2022-07-12 上海智殷自动化科技有限公司 一种实时系统下多任务之间的通信方法
CN114138507B (zh) * 2021-11-09 2024-05-17 中国联合网络通信集团有限公司 Python程序服务化方法、装置及计算机可读存储介质

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1266223A (zh) * 1999-03-08 2000-09-13 英业达股份有限公司 应用程序进程监控的方法
US6694371B1 (en) * 1997-09-01 2004-02-17 Yamatake Corporation Communication interface device and method
CN1588316A (zh) * 2004-06-29 2005-03-02 北京大学 应用服务器的性能优化方法
CN1997000A (zh) * 2005-12-31 2007-07-11 腾讯科技(深圳)有限公司 一种基于虚拟主机的web服务器及用户获取访问数据的方法

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6694371B1 (en) * 1997-09-01 2004-02-17 Yamatake Corporation Communication interface device and method
CN1266223A (zh) * 1999-03-08 2000-09-13 英业达股份有限公司 应用程序进程监控的方法
CN1588316A (zh) * 2004-06-29 2005-03-02 北京大学 应用服务器的性能优化方法
CN1997000A (zh) * 2005-12-31 2007-07-11 腾讯科技(深圳)有限公司 一种基于虚拟主机的web服务器及用户获取访问数据的方法

Also Published As

Publication number Publication date
CN101782864A (zh) 2010-07-21

Similar Documents

Publication Publication Date Title
CN101782864B (zh) 一种改善Web服务器通信服务稳定性的方法
CN102073537A (zh) 一种高并发Web医学影像服务器的实现方法
US6950866B1 (en) XML-based integrated services parsing
US10042628B2 (en) Automated upgrade system for a service-based distributed computer system
CN100498699C (zh) 在运行时系统中共享对象
Grimm et al. System support for pervasive applications
KR100898315B1 (ko) 인핸스드 런타임 호스팅
JP4914717B2 (ja) 維持可能なグリッドマネージャ
CN1989489B (zh) 数据处理方法和装置
US7349970B2 (en) Workload management of stateful program entities
WO2010116676A1 (ja) サービス提供装置、サービス提供システム、サービス提供装置のデータ処理方法およびコンピュータプログラム
JP5347648B2 (ja) プログラム、情報処理装置及び状態出力方法
US20090119302A1 (en) Asynchronous client to server updates
CN110245003A (zh) 一种机器学习单机算法编排系统及方法
WO2006121526A2 (en) Fast and reliable synchronization of file system directories
JP2007500386A (ja) グリッド組織
JP2007500383A (ja) アプリケーションスタートプロトコル
Weimer et al. Reef: Retainable evaluator execution framework
US20140053157A1 (en) Asynchronous execution flow
US20090037902A1 (en) Transitioning From Static To Dynamic Cluster Management
JP3409308B2 (ja) クライアント/サーバ・コンピューティング・システム及びサーバ処理方法
JP4627636B2 (ja) 非同期コンポーネントをアプリケーションフレームワークアグノスティックにするメカニズム
Simão et al. A checkpointing‐enabled and resource‐aware Java Virtual Machine for efficient and robust e‐Science applications in grid environments
Chun et al. Apache REEF: Retainable evaluator execution framework
US20220308940A1 (en) Allocating and using file descriptors for an application executing on a plurality of nodes

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
ASS Succession or assignment of patent right

Owner name: SHENZHEN LANYUN NETWORK CO., LTD.

Free format text: FORMER OWNER: LANYUN INDUSTRY CO., LTD.;SHENZHEN CITY

Effective date: 20120820

C41 Transfer of patent application or patent right or utility model
TA01 Transfer of patent application right

Effective date of registration: 20120820

Address after: Futian District King Road Shenzhen city Guangdong province 518034 green garden building room 410 (only office)

Applicant after: Shenzhen Landwind Network Co., Ltd.

Address before: 518034 Guangdong city of Shenzhen province Futian District King Road Green Garden E room 408-413

Applicant before: Landwind Co., Ltd.

C14 Grant of patent or utility model
GR01 Patent grant
C56 Change in the name or address of the patentee

Owner name: LANWANG TECHNOLOGY CO., LTD.

Free format text: FORMER NAME: SHENZHEN LANDWIND NETWORK CO., LTD.

CP03 Change of name, title or address

Address after: Nanshan District Xueyuan Road in Shenzhen city of Guangdong province 518000 No. 1001 Nanshan Chi Park A3 building 6 floor

Patentee after: LANWON SCIENCE & TECHNOLOGY CO., LTD.

Address before: Futian District King Road Shenzhen city Guangdong province 518034 green garden building room 410 (only office)

Patentee before: Shenzhen Landwind Network Co., Ltd.

C56 Change in the name or address of the patentee
CP01 Change in the name or title of a patent holder

Address after: Nanshan District Xueyuan Road in Shenzhen city of Guangdong province 518000 No. 1001 Nanshan Chi Park A3 building 6 floor

Patentee after: LANWON TECHNOLOGY CO., LTD.

Address before: Nanshan District Xueyuan Road in Shenzhen city of Guangdong province 518000 No. 1001 Nanshan Chi Park A3 building 6 floor

Patentee before: LANWON SCIENCE & TECHNOLOGY CO., LTD.