问题描述
我有来自 ASP 和 IIS 的遗留代码,使用 OLE.DB 连接作为站点配置,并且每当下载数据文件的大型查询请求(作为 html 但在 Excel 扩展中)时,IIS 在完成或终止之前不会响应所有其他请求。被检查以增加虚拟内存或应用程序池大小,但无济于事。只是怀疑这可能是大型 blob 处理的 IIS 限制,但还不知道如何解决或绕过这个问题。请帮助了解在 IIS 中创建大数据文件时可以做什么或如何防止拒绝请求。
- 我应该检查哪些 IIS 端应该修复的地方?
- 代码重构以防止 IIS 挂起
- 关于出行的任何其他建议......
不幸的是,这是遗留系统,我们的系统工程师声称没有这方面的经验。此外,ASP 似乎还没有太多资源可以从网络上解决类似问题。
下面的 ASP 代码是实际的,"sReportType=1" 工作正常,因为它只处理少量数据没有任何问题。 (虽然仍然怀疑它对操作有危害,但因为它的大小比……小)但是,当“sReportType=2”运行时,IIS只服务这个请求,不响应其他请求。
我确实理解即使有当前的 Excel 限制,它也只允许包含 15000 个低点并在手之前切断数据,但没有用。我也为大数据更改了 http 连接的 TTL,但没有奏效。修改后的 IIS 应用程序池改善了一点,但在从 DB 获取大数据时,拒绝其他连接的情况也一样。有时甚至html标签下载完成后也没有完成。
请提前感谢您的帮助。
<%@ Language=VBScript%>
<% On Error Resume next
setsize = 10
Set DbCon = Server.CreateObject("ADODB.Connection")
DbCon.Open("Provider=OLEDB...) 'DB Connection String
...
sReportType = Request("sReportType") 'receive report type
if sReportType = "" then
sReportType = "1"
end if
' Getting input value from request
sHospCd = Request("sHospCd")
sName = Request("sName")
sCHART_NO = Request("sCHART_NO")
sSex = Request("sSex")
sCZP_KIND = Request("sCZP_KIND")
sstartDate = Request("sstartDate")
sEndDate = Request("sEndDate")
sstOP_KIND = Request("sstOP_KIND")
If sReportType = "1" then
sPA_LAB_DATE = Request("sPA_LAB_DATE")
ePA_LAB_DATE = Request("ePA_LAB_DATE")
sPA_QUERY_YN = Request("sPA_QUERY_YN")
sPA_UPDATE_DATE = Request("sPA_UPDATE_DATE")
ePA_UPDATE_DATE = Request("ePA_UPDATE_DATE")
End If
If sReportType = "2" then 'Baseline
sFU_LAB_DATE = Request("sFU_LAB_DATE")
eFU_LAB_DATE = Request("eFU_LAB_DATE")
sFU_QUERY_YN = Request("sFU_QUERY_YN")
sFU_UPDATE_DATE = Request("sFU_UPDATE_DATE")
eFU_UPDATE_DATE = Request("eFU_UPDATE_DATE")
End If
...
...
subsql = ""
subsql2 = ""
qTitle = " Search Item [ "
if sReportType = "1" then
subsql = subsql & " FROM PATIENT P WHERE 1 = 1 "
subsql2 = subsql2 & ",P.HOSP_TRANS,P.HOSP_TRANS_NM,"
subsql2 = subsql2 & " P.LAB_DATE,P.WBC,DECODE(P.WBC_UNIT,'1','/mm<sup>3</sup>','2','/L','') AS WBC_UNIT,P.SEG_NEUTRO,P.BANDS,P.ANC,P.INIT_DATE,"
subsql2 = subsql2 & " GETMNM('6002',P.CZP_KIND) CZP_KIND,GETMNM('6003',P.CZP_WEEK) CZP_WEEK,P.CZP_S_DATE,P.CZP_E_DATE,P.NEXT_LAB_DATE,P.DOCTOR_NM,P.DOCTOR_EMAIL,P.PHARMA_NM,"
subsql2 = subsql2 & " P.PHARMA_EMAIL,P.INPUT_NM,P.INPUT_EMAIL,P.CMMT_RESULT,P.QUERY_RESULT,P.CMMT_SPEC "
ElseIf sReportType = "2" then 'Large Report Creation sql String
strTableWidth = "2800" 'Limit size of width
subsql = subsql & " FROM PATIENT P,FU B WHERE P.PAT_ID = B.PAT_ID "
subsql2 = subsql2 & ",B.FU_KIND,B.FU_NO,B.LAB_DATE,B.WBC,DECODE(B.WBC_UNIT,B.SEG_NEUTRO,B.BANDS,"
subsql2 = subsql2 & " B.ANC,DECODE(B.STOP_KIND,'StopFollow','Terminate','') AS STOP_KIND,"
subsql2 = subsql2 & " DECODE(B.STOP_CAUSE,'Irregular','Improve','3','Transfer','4','Others','') AS STOP_CAUSE,B.STOP_TRANS_NM,B.STOP_ETC,B.DOCTOR_NM,B.DOCTOR_EMAIL,B.PHARMA_NM,"
subsql2 = subsql2 & " B.PHARMA_EMAIL,B.INPUT_NM,B.INPUT_EMAIL,B.CMMT_RESULT,B.QUERY_RESULT,B.CMMT_SPEC "
End If
sql2 = "SELECT COUNT(*) " & subsql
tn = GetRecordCount(sql2)
If sReportType = "1" then
subsql = subsql & " ORDER BY P.HOSP_CD,P.RAND_DATE DESC,P.PAT_NM "
ElseIf sReportType = "2" then
subsql = subsql & " ORDER BY P.HOSP_CD,B.LAB_DATE DESC "
End If
qTitle = qTitle & " ]"
sql = " SELECT getHospNM(P.HOSP_CD) HOSP_NM,P.PAT_ID,P.HOSP_CD,P.RAND_DATE,P.PAT_NM,P.CHART_NO,P.dob,P.AGE,P.SEX,P.FILENAME,P.PAT_WANDERING,P.PAT_WANDERING_NUM "
sql = sql & subsql2
sql = sql & subsql
set objRs=DbCon.Execute(sql)
Response.buffer=true
Response.ContentType = "application/vnd.ms-excel; name='My_Excel'"
If sReportType = "1" then
response.addheader "Content-disposition","attachment;filename=small.xls"
ElseIf sReportType = "2" then
response.addheader "Content-disposition","attachment;filename=Large.xls"
End If
sHTTP_HOST = request.ServerVariables("HTTP_HOST")
%>
<table> <tr>...
' creating html table to print and start downloading file with ".xls" extension
...
<%
do while Not (objRs.BOF OR objRs.EOF)
aaa = objRs("aaa")
bbb = objRs("bbb")
ccc = objRs("ccc")
...
</tr>
<%
objRs.MoveNext
Response.Flush
Loop
'end of table loop
objRs.Close
DbCon.close
Set objRs = nothing
Set DbCon = nothing
%>
</table>
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)