[Access/ASP] traag laden

Pagina: 1
Acties:

  • Manual
  • Registratie: Maart 2002
  • Laatst online: 11-05 12:58
Mensen,

Ik snap er niets van!

Ik heb een site. De database is Access en de taal is ASP. Wanneer ik de site laat vanaf de server van mijn provider duurt het ca. 30 seconden voordat hij begint te laden en de data binnenkomt.

De database was voorheen access 97 en ik heb hem ge-upgrade naar 2000 prof. De 97 versie werkte wel snel. Normaal wanneer ik upgrade heb ik geen problemen en werkt het wel snel.

Misschien heeft het path er wat mee te maken?

De path is: = "DRIVER={Microsoft Access Driver (*.mdb)};DBQ="& Server.MapPath("../../xxx/xxx.mdb")

Wanneer ik de OLEDB path probeer welke de path is voor access 2000 schiet het nog niet op.

De website is: www.goldid.nl
(het is een kant-en-klare code die ik ge-download heb en ga aanpassen aan mijn wensen)

Op dit moment sluit ik een probleem bij de provider zelf even uit omdat ik er meerdere sites heb draaien die wel snel binnen komen.

(Ik heb trouwens kabel internet)

Specs


  • Manual
  • Registratie: Maart 2002
  • Laatst online: 11-05 12:58
Moet ik misschien het e.e.a. toelichten? Normaal wordt er wel sneller op gereageerd. Misschien ben ik ook wel ongeduldig.. Sorry..

Specs


  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 09-09 20:58

Janoz

Moderator Devschuur®

!litemod

Hij laad idd traag, en het ligt niet aan de internet verbinding (Hier iets van een paar MB :P)

Ik heb een vermoeden dat het wel aan de server ligt. Ik krijg net zelf deze melding:
Microsoft OLE DB Provider for ODBC Drivers error '8007000e'

[Microsoft][ODBC Microsoft Access Driver] Not enough space on temporary disk.

E:\INETPUB\WWWROOT\PCA\GOLDID\DUHOME\../includes/inc_counter.asp, line 9

Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'


  • Manual
  • Registratie: Maart 2002
  • Laatst online: 11-05 12:58
hmm, zou idd kunnen. Ik ga even wat verwijderen.. Ik krijg trouwens ook script timeouts

Thanx...

Specs


  • Manual
  • Registratie: Maart 2002
  • Laatst online: 11-05 12:58
Chips. Het gaat nog niet sneller.. Ik heb zo ongeveer tussen de 7 en 10 meg. verwijderd.

Maakt het wat uit als ik RUNAT=SERVER gebruik of dat er misschien een LOOP niet werkt? Heeft het zin als mijn hosting provider IIS opnieuw start o.i.d.?

Specs


Verwijderd

Dit probleem kan optreden als:

-Je componenten niet afsluit(geheugen loopt vol)
-Brakke code!
-Een enorme dikke loop erin, slechte query's. Nooit een * gebruiken in je select statement
-Je een enorm software probleem hebt/hardware probleem(komt zelden voor)

Kijk eerst eens naar het geheugen verbruik, en laat anders een ff wat code zien. Misschien ben je dan beter te helpen. Dit kan echt alles zijn.

Aan je connectivity ligt het niet, heb met gepinged maar nette snelheid.

Volgens mij heb jij een combinatie van brakke code met een niet zo'n heel erg geoptmiliseerde databeest stuctuur. Laat eens ff wat zien!

  • Manual
  • Registratie: Maart 2002
  • Laatst online: 11-05 12:58
Tja, er zitten idd veel wildcards in.

Hoe kan ik het geheugen verbruik controlleren?

De default.asp bestaat uit vele includes dus moet ik een keuze maken. Ik denk dat het probleem hoofdzakelijk zit in onderstaand script. Het is wel een grote dikke vette query.
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
<!--#include file="../Connections/connDUportal.asp" -->
<%
set rsCounter = Server.CreateObject("ADODB.Recordset")
rsCounter.ActiveConnection = MM_connDUportal_STRING
rsCounter.Source = "SELECT DISTINCT  (SELECT COUNT (*) FROM USERS) AS MEMBERS,  (SELECT COUNT(*) FROM LINKS) AS LINKS,  (SELECT COUNT (*) FROM QUESTIONS) AS POLLS,  (SELECT COUNT (*) FROM MESSAGES) AS TOPICS, (SELECT COUNT (*) FROM NEWS) AS NEWS, (SELECT COUNT(*) FROM REPLIES) AS REPLIES  FROM BANNERS"
rsCounter.CursorType = 0
rsCounter.CursorLocation = 2
rsCounter.LockType = 3
rsCounter.Open()
rsCounter_numRows = 0
%>
<table width="100%" border="0" cellspacing="0" cellpadding="0">
  <tr> 
    <td align="left" valign="middle" height="20" class = "bg_navigator">&nbsp;<font face="Verdana, Arial, Helvetica, sans-serif" size="1"><b>Portal Statistieken</b></font></td>
  </tr>
  <tr> 
    <td align="left" valign="top" bgcolor="#000000">[img]"../assets/horizontalBar.gif"[/img]</td>
  </tr>
  <tr> 
    <td align="left" valign="top"> 
    <table border="0" cellspacing="2" cellpadding="5" width="180">
      <tr align="left" valign="middle"> 
        <td align="left"><b><font face="Verdana, Arial, Helvetica, sans-serif" size="1">Leden:</font></b></td>
        <td><b><font face="Verdana, Arial, Helvetica, sans-serif" size="1"><%=(rsCounter.Fields.Item("MEMBERS").Value)%></font></b></td>
      </tr>
      <tr align="left" valign="middle"> 
        <td align="left"><b><font face="Verdana, Arial, Helvetica, sans-serif" size="1">Links:</font></b></td>
        <td><b><font face="Verdana, Arial, Helvetica, sans-serif" size="1"><%=(rsCounter.Fields.Item("LINKS").Value)%></font></b></td>
      </tr>
      <tr align="left" valign="middle"> 
        <td align="left"><b><font face="Verdana, Arial, Helvetica, sans-serif" size="1">Nieuws:</font></b></td>
        <td><b><font face="Verdana, Arial, Helvetica, sans-serif" size="1"><%=(rsCounter.Fields.Item("NEWS").Value)%></font></b></td>
      </tr>
      <tr align="left" valign="middle"> 
        <td align="left"><b><font face="Verdana, Arial, Helvetica, sans-serif" size="1">Polls:</font></b></td>
        <td><b><font face="Verdana, Arial, Helvetica, sans-serif" size="1"><%=(rsCounter.Fields.Item("POLLS").Value)%></font></b></td>
      </tr>
      <tr align="left" valign="middle"> 
        <td align="left"><b><font face="Verdana, Arial, Helvetica, sans-serif" size="1">Topics:</font></b></td>
        <td><b><font face="Verdana, Arial, Helvetica, sans-serif" size="1"><%=(rsCounter.Fields.Item("TOPICS").Value)%></font></b></td>
      </tr>
      <tr align="left" valign="middle"> 
        <td align="left"><b><font face="Verdana, Arial, Helvetica, sans-serif" size="1">Replies:</font></b></td>
        <td><b><font face="Verdana, Arial, Helvetica, sans-serif" size="1"><%=(rsCounter.Fields.Item("REPLIES").Value)%></font></b></td>
      </tr>
    </table>
    </td>
  </tr>
  <tr> 
    <td align="left" valign="top" bgcolor="#000000">[img]"../assets/horizontalBar.gif"[/img]</td>
  </tr>
</table>
<%
rsCounter.Close()
%>

edit Janoz: Niet als je de daarvoor gebruikelijke code tags gebruikt *D

Specs


  • Manual
  • Registratie: Maart 2002
  • Laatst online: 11-05 12:58
hehehehe. Hij converteerd stukken code in smileys...

Er staat dus ( * ) op de plek van de smileys.

Specs


Verwijderd

Tja dat * verhaal dat gaat bij je eerste query al op. Verder zie ik dat je UltraDev gebruikt? Ik hoop dat ik het mis heb maar als dat inderdaad zo is dan zal ik je toch moeten aanraden om met de hand te gaan proggen. Mijn tip: koop een goed boek en ga met de hand leren proggen.

Dit is echt heel brak wat je hier op je scherm tovert. Ik heb ook wel eens dat ik ouwe scripts bekijk en denk van 'das nie handug' maar dit is niet goed.

Voor elke keer dat jij <% %> of <%= %> opnieuw aanroept zal ook het script-component worden aangeroepen. Dit is niet best.

Je zou bovenaan je pagina ff het volgende kunnen zetten:

response.buffer = True

Dan gaat ie je pagina al laden, terwijl je server nog bezig is met parsen. Succes ;)

  • Manual
  • Registratie: Maart 2002
  • Laatst online: 11-05 12:58
Nou dat boek heb ik al gekocht en gelezen (E-Commerce gericht). Ik prog. eigenlijk alleen maar in notepad. Ik had goldID er een beetje bij en er werd verder niet veel mee gedaan. Daar wilde ik verandering in brengen. Ik heb deze code dus ook niet zelf gemaakt ( wel met UltraDev
gemaakt :-) ), maar kan-en-klaar gedownload.

Ik kreeg net ook een tel. van iemand die zei dat een andere site van ons die daar gehost wordt niet goed werkt.

Response.buffer staat wel in de Default.asp en vele andere pagina's, maar als het inderdaad een brakke code is lijkt het me niet verstandig deze te gebruiken. Met deze code zorg ik er tevens voor dat de andere sites die bij mijn provider gehost worden niet goed functioneren. lijkt me niet de bedoeling...

Heb ik dan gelijk?

Specs


Verwijderd

Het enige wat buffer doet is de gegevens vasthouden toto dat alles geparsed is, als je deze op true zet dan laad ie alles gewoon op je schrem, dan zien mensen in ieder geval als iets!

  • ParaNoiMia
  • Registratie: Mei 2000
  • Laatst online: 05-09 11:47
Wat ik wel zie, is dat de recordset wel geclosed wordt, maar niet gedestroyed. Sluit de recordset met rsCounter.close en doe daarna een SET rsCounter=nothing, dan wordt het object ook direct uit het geheugen opgeruimd.

Je belast nu in ieder geval het memory van de webserver en daar hebben andere sites die op die webserver draaien ook last vast. Als je dit in al je ASP scripts zo hebt en krijgt ook nog aardig wat bezoekers (of je refreshed nu tijdens de development vaak je pagina's) dan wordt elke keer het object aangemaakt en niet gedestroyed.

  • Manual
  • Registratie: Maart 2002
  • Laatst online: 11-05 12:58
Tis in iedergeval een les voor de toekomst.

Ik gooi toch het hele script (ondanks 8 uur werk om de zaak te vertalen van eng. naar ned.) in de prullebak. Het hele script zit vol SELECT *-en.

Ik wil iedereen bedanken voor het mee denken en het advies..

Bedankt!

Specs


Verwijderd

Graag gedaan

Verwijderd

Euhm, dat traag laden kan misschien verklaard worden doordat Access 2000 redelijk traag is, ik heb hier ook soms problemen met de snelheid van Access, ofwel is je RAM bijna volledig gebruikt

  • Annie
  • Registratie: Juni 1999
  • Laatst online: 25-11-2021

Annie

amateur megalomaan

In dit geval ligt het niet aan "SELECT *" queries (tenminste niet in het stukje code wat je hierboven geeft).
Een "SELECT COUNT( * )" is namelijk iets heel anders en bovendien (meestal) zwaar geoptimaliseerd binnen de database.
Wat je echter wel doet is 6 subqueries uitvoeren en een compleet onnodige DISTINCT. Als de database een beetje groot wordt kan dat natuurlijk behoorlijk oplopen.

Heb je al geprobeerd de database van scratch op te bouwen cq. te comprimeren of welke opties access ook al weer had om het bestand te verkleinen.
Of misschien een andere connectiestring (Microsoft.Jet.OLEDB.4.0)?

/edit:
Hmm, ik lees nu dat de rest van de code ook niet echt geweldig is (understatement van de dag). Dus waarschijnlijk is de keuze om het allemaal te dumpen niet eens zo'n slecht idee :D

Today's subliminal thought is:

Pagina: 1