我正在努力解决以下问题一段时间,并尝试了各种谷歌搜索的许多建议。
我们在 Windows服务器2012 R2 上使用 IIS 8.5
在经典ASP 中运行一个网站我们使用 MySQL
的网站我们在白天但在不同的时间发生这种情况,我怀疑这是在网站繁忙或许多查询时。 (不确定)
在事件查看器(应用程序)中,我们得到 Active Server Pages错误。
当发生这种情况时,尝试向MySQL发出查询的页面只会响应错误500(内部错误)。
有几种类型的错误,下面是一些:
以下错误可能发生在许多不同的页面上,这只是最后一个的例子。
Error: File /update-project.asp CreateObject Exception. The CreateObject of '(null)' caused exception C0000005..
还有这种应用程序错误。这是最后一个例子:
Faulting application name: w3wp.exe, version: 8.5.9600.16384, time stamp: 0x52157ba0
Faulting module name: ntdll.dll, version: 6.3.9600.18895, time stamp: 0x5a4b127e
Exception code: 0xc0000374
Fault offset: 0x000e6214
Faulting process id: 0x2cd0
Faulting application start time: 0x01d3b5ffb8b88f62
Faulting application path: C:\Windows\SysWOW64\inetsrv\w3wp.exe
Faulting module path: C:\Windows\SYSTEM32\ntdll.dll
Report Id: c17383f3-21f4-11e8-80f1-0cc47adae555
Faulting package full name:
Faulting package-relative application ID:
我已尝试更改应用程序池设置中其他帖子的建议,增加MySQL缓冲区大小等等。
一旦发生这种情况,我就会进行 ApplicationPool回收,问题就会消失。
我已下载 DebugDiag 2 并为 w3wp.exe 进程创建了规则,当发生这种情况时,会记录一些转储文件。
然后我打开分析仪并分析它们,但我似乎没有看到如何阅读或解释它们可能是什么问题。
有没有办法可以发布或提供这些转储文件给某人试图帮助我,因为我正在把我的头发拉出来。
我期待任何能够帮助我或引导我走向正确方向的人的任何回应,甚至指出我尝试其他事情。
提前致谢
以下是连接到MySQL并使用FileSystemObject以及从外部API获取数据的3个示例。这些样本中的任何内容看起来都不正确,因为它不会一直发生,因为它不会一直发生,可以在我的任何页面上,而不是总是相同的。
sConnection = "DRIVER={MySQL ODBC 5.3 ANSI Driver}; SERVER=localhost; PORT=3306;" &_
"DATABASE=accufilemain; USER=myuser; PASSWORD=mypassword; OPTION=3;"
Set con = Server.CreateObject("ADODB.Connection")
con.Open(sConnection)
sql_check = "Select * From clients Where id = " & ClientID
Set RS = con.Execute(sql_check)
If Not RS.EOF Then
'''Get my field values
ValABC = RS("CustomerID")
End If
State = RS.State
If State <> 0 Then
RS.Close
Set RS = Nothing
End If
con.Close
Set con = Nothing
sFolder1 = "C:\inetpub\wwwroot\mywebsite\files\" & ClientID
Set fs=CreateObject("Scripting.FileSystemObject")
If Not fs.FolderExists(sFolder1) Then
fs.CreateFolder(sFolder1)
End If
Set fs = nothing
GetURL = ""
set objHttp = Server.CreateObject("Msxml2.ServerXMLHTTP")
objHttp.open "GET", "otherwebsite/api/1.1.2/Customer/Get?$skip=" & MyVAL4 & "&$top=100&apikey=" & Myapikey & "&CompanyId=" & MyCompanyId, false
objHttp.setRequestHeader "Authorization", "Basic " & MyBase64AuthDetails
objHttp.setRequestHeader "Content-Type", "application/json"
objHttp.Send
GetURL = objHttp.ResponseText
Set objHttp = Nothing
'''' Then I can search GetURL for what I need as a string.
答案 0 :(得分:0)
我有机会分析转储,这就是我找到的。
崩溃线程31的callstack如下。
0:031> kL
# ChildEBP RetAddr
00 026ce798 778c8d78 ntdll!RtlReportCriticalFailure+0x83
01 026ce7a8 778c9629 ntdll!RtlpHeapHandleError+0x1c
02 026ce7d8 77866035 ntdll!RtlpLogHeapFailure+0xa1
03 026ce830 7174ecfa ntdll!RtlFreeHeap+0x44485
04 026ce844 717a0100 msvcr120!free+0x1a
05 026ce890 7184bab0 msvcr120!setlocale+0x186
06 026ce8bc 7184a8c3 myodbc5a!SQLFreeHandle+0x1a362
07 026ce8dc 71df704a myodbc5a!SQLFreeHandle+0x19175
.
.
.
如前所述,这是一个明显的堆腐败问题。更具体地说,它是通过调用“double free”操作来实现的,在该操作中你试图释放已经空闲的内存块。
仔细观察调用堆栈,我可以看到这是由“myodbc5a”模块引起的。这是一个Oracle模块。
0:031> lmvm myodbc5a
Browse full module list
start end module name
71830000 71d6b000 myodbc5a C (export symbols) myodbc5a.dll
Loaded symbol image file: myodbc5a.dll
Image path: C:\Program Files (x86)\MySQL\Connector.ODBC 5.3\myodbc5a.dll
Image name: myodbc5a.dll
Browse all global symbols functions data
Timestamp: Mon Jul 17 23:53:56 2017 (596D9464)
CheckSum: 00000000
ImageSize: 0053B000
File version: 5.3.9.0
Product version: 5.3.9.0
File flags: 0 (Mask 3)
File OS: 40004 NT Win32
File type: 2.0 Dll
File date: 00000000.00000000
Translations: 0409.04e4
CompanyName: Oracle Corporation
ProductName: Connector/ODBC 5.3
InternalName: myodbc5a
OriginalFilename: myodbc5a.dll
ProductVersion: 5, 3, 9, 0
FileVersion: 5, 3, 9, 0
PrivateBuild: Production
SpecialBuild: GA release
FileDescription: MySQL ODBC 5.3 ANSI Driver
LegalCopyright: Copyright (c) 1995, 2013, Oracle and/or its affiliates.
LegalTrademarks: MySQL, MyODBC, Connector/ODBC are trademarks of Oracle Corporation
Comments: provides core driver functionality
您现在有2个选项可以解决此问题。
联系Oracle支持人员并说明您遇到的与“myodbc5a”dll相关的问题,并检查他们是否在最新版本中解决了此问题
根据 - https://forums.mysql.com/read.php?37,661803,661993#msg-661993
如果您有任何其他问题,请与我们联系。
答案 1 :(得分:0)
我已升级到最新的所有相关MySQL更新。然后我将连接器降级为5.3.4连接器并将其放置几周以查看并且问题已经消失。我没有遇到过一个问题。