Cum pot face ca pool-ul meu de aplicații să nu se blocheze pe mine?
fundal
Totul a funcționat bine de mulți ani, până când am actualizat Windows 10 Pro la actualizarea sugerată Windows Feature Experience Pack.
Sistemul curent:
Ediția Windows 10 Pro
Versiunea 21H2
Instalat pe â8/â24/â2020
Versiunea sistemului de operare 19044.1415
Experimentați Windows Feature Experience Pack 120.2212.3920.0
Probabil că acest lucru a schimbat unele permisiuni ale utilizatorului și modul în care funcționa IIS; și până la punctul în care mi-am pierdut site-ul. A trebuit să reinstalez totul.
Eroare (C0000005)
Au trecut patru săptămâni de când am actualizat de la MariaDB 10.1 la MariaDB 10.6 și, cu asta, am trecut de la utilizarea MySQL ODBC 5.1 Driver la MariaDB Connector/ODBC 3.1 (Versiunea 3.01.15.00), care face parte din "seria actuală de lansare stabilă."
Aceste erori nu foarte utile lipsesc informații despre numărul de rând unde se află eroarea. Ei citesc:
Fișier /home.asp Eroare neașteptată. A apărut o eroare de captare (C0000005) într-un obiect extern. Scriptul nu poate continua să ruleze.
Și arată așa:
Ce am facut:
Mi-am verificat codul pentru conexiuni lăsate deschise la baza de date, așa cum este sugerat în această postare Eroare clasică ASP C0000005 dar inca primesc aceste erori. Aceste erori aleatorii (C0000005) ASP continuă să reducă grupul de aplicații și se comportă foarte mult așa cum este descris în acest fir unde unele scurgeri de memorie ar putea fi de vină.
Acum mă gândesc să folosesc un alt driver.
Răspunsurile din acest thread Ce sunt erorile ASP 0115 și C0000005 sugerează utilizarea conectorului ODBC versiunea 5.1.6 (mysql-connector-odbc-5.1.6-winx64.msi), care este din 2009. Aceasta MySQL Connector/ODBC 8.0.27 (mysql-connector-odbc-8.0.27-winx64.msi) pare mai actualizat. Și ar trebui să încerc.
Primul lucru pe care l-am observat este mult mai rapid. Acum sper doar că aceste erori C0000005 se vor termina.
Actualizare A: Erorile revin în continuare, dar mult mai devreme așa cum era de așteptat.
Am incercat pe 32 de biți driver-ul, de asemenea, mysql-connector-odbc-8.0.27-win32.msi pentru a vedea dacă ar funcționa, dar nici nu a putut încărca pagina. Cred că ar trebui să folosesc un pool de aplicații pe 32 de biți pentru ca acesta să funcționeze. (Nu am încercat asta.)
Actualizare B: Acum folosesc din nou Conector MySQL pe 64 de biți/ODBC 8.0.27 conducător auto.
Ar putea fi modul în care configurez driverul care reduce pool-ul meu de aplicații?
Acesta este șirul meu de conexiune:
Conn_STRING = "dsn=___;" & _
"TCPIP=1;" & _
„SERVER=127.0.0.1;” & _
„UID=___;” & _
„PWD=___;” & _
„BAZA DE DATE=___;” & _
„PORT=3306;” & _
„CONN_TIMEOUT=30;” & _
„CHARSET=utf8mb4;” & _
„READ_TIMEOUT=20;” & _
„WRITE_TIMEOUT=10;” & _
„Opțiune=3”
Am setat parametrii de conectare astfel:
Am observat că cumva pool-ul de aplicații continuă să ruleze în ciuda acestor erori înregistrate:
- <Event xmlns="http://schemas.microsoft.com/win/2004/08/events/event">
- <Sistem>
<Provider Name="Active Server Pages" />
<EventID Qualifiers="49152">5</EventID>
<Version>0</Version>
<Nivel>2</Nivel>
<Task>0</Task>
<Opcode>0</Opcode>
<Keywords>0x80000000000000</Keywords>
<TimeCreated SystemTime="2021-12-23T21:41:37.9772561Z" />
<EventRecordID>2212200</EventRecordID>
<Corelatie />
<Execution ProcessID="0" ThreadID="0" />
<Channel>Aplicație</Channel>
<Computer>vm-alb</Computer>
<Securitate />
</Sistem>
- <EventData>
<Date>Fișier /blog.asp Eroare neașteptată. A apărut o eroare de captare (C0000005) într-un obiect extern. Scriptul nu poate continua să ruleze.</Data>
</EventData>
</Eveniment>
De asemenea, văd un nou avertisment în jurnalul de sistem.
ACTUALIZAȚI
Am obosit multe drivere ODBC diferite. Drivere ODBC MariaDB și MySQL ODBC. Niciunul nu împiedică blocarea aplicațiilor. Înainte de a se prăbuși, o mulțime de erori C0000005 sunt înregistrate. Driverul MySQL ODBC 8.0 s-a dovedit a fi mult mai rapid și mai îngăduitor, dar ceva încă reduce pool-ul de aplicații. Acum folosesc driverul MySQL ODBC 8.0 Unicode.
MariaDB ODBC are o eroare?
În plus, acum am schimbat modul în care stabilesc obiectele. În loc să le setați așa
SET rs = Server.CreateObject("ADODB.Recordset")
SET wshell = Server.CreateObject("WScript.Shell")
SET mesaj = Server.CreateObject("CDO.Message")
Acum doar fac
SET rs = CreateObject("ADODB.Recordset")
SET wshell = CreateObject("WScript.Shell")
SET mesaj = CreateObject("CDO.Message")
Se pare că arată mai promițător. Unele erori au acum uneori numere de linie.
Am contactat Microsoft pentru a mă ajuta să interpretez Raportul meu de analiză DebugDiag dintre aceste accidente. De asemenea, am observat un model nou care a început să apară în jurnalele de erori. Mai întâi a Pagini Active Server urmat de Eroare de aplicație:
Eroare în paginile serverului activ:
Eroare: Fișier /blog.asp Eroare neașteptată.A apărut o eroare de captare (C0000005) într-un obiect extern. Scriptul nu poate continua să ruleze..
Eroare de aplicație:
Nume aplicație greșită: w3wp.exe, versiune: 10.0.19041.1, ștampilă de timp: 0x58c67bf3
Numele modulului cu erori: ntdll.dll, versiunea: 10.0.19041.1288, marcaj de timp: 0xa280d1d6
Cod de excepție: 0xc0000409
Compensarea erorii: 0x00000000000a2070
Id-ul procesului cu erori: 0x3144
Ora de pornire a aplicației greșite: 0x01d7fd9d0686ef42
Calea aplicației greșite: c:\windows\system32\inetsrv\w3wp.exe
Calea modulului defect: C:\WINDOWS\SYSTEM32\ntdll.dll
ID raport: cda5aa10-492d-4e5c-ae17-ac4f9dbf70ab
Nume complet pachet cu defecte:
ID aplicație defectuoasă legată de pachet:
După cum s-a sugerat Aici la mysql.com mi-am schimbat acum setarea conectorului DSN pentru utilizare cu ASP. Am bifat caseta Returnează rândurile potrivite în loc de rândurile efectuate
.
am avut Opțiune=3
în șirul meu de conexiune și găsit pe baza acest blog că probabil ar trebui să o declar ca FLAG_FIELD_LENGTH
(1) + FLAG_FOUND_ROWS
(2).
Orice sugestii sunt binevenite.