Link to home
Start Free TrialLog in
Avatar of joegensh
joegensh

asked on

Browser timeout during SQL execution

Coldfusion MX 6.1
SQL server 2000 sp3

I am having problems with browser timeouts during long-running SQL tasks executed through <CFQUERY>

The process runs for about 30 seconds then I get this in the browser window

The page cannot be displayed
The page you are looking for is currently unavailable. The Web site might be experiencing technical difficulties, or you may need to adjust your browser settings.

I have already added this <cfsetting requesttimeout="10000">
and I have changed the timeout settnig to 600 in the CFIDE admin tool.

I also added <cfflush> throughout.

One last thing... I have verified both through QA testing the tables and through SQL server traces that the code continues to execute AFTER the server sends the "The page cannot be diplayed to browser"...so i know that the SQL is valid...100% sure.  Are there settings on the client that cause the browser to timeout? What am I missing?

One last thing... SQL 2 and 3 (see below) take about 3 minutes to execute on average according to the trace.



code:

<!--- this procedure loads the table
etl.dbo.bldg_permit_fact
--->
<html>
<head>
<title>Process permit fact table</title>
</head>
<body>
<cfflush interval="5">
<h3> Processinig fact table updates...this may take a couple minutes</h3>
<cfflush>
<cfsetting requesttimeout="10000">


      <cfloop from="1" to="4" index="i">
            <cfquery name ="elt_fact#i#" datasource="reports">
                  [ First SQL here...]      
            </cfquery>
            
      </cfloop>
<h3>rows inserted...updates started</h3>
<cfflush>

<cfquery name="etl_fact_metrics" datasource="reports">
  [Second SQL here]
</cfquery>

<cfflush>
<h3>Almost there...one more update!</h3>

<cfquery name="etl_perm" datasource="reports">
   [Third SQL here]
</cfquery>
fact table processed successfully
</body>
</html>
Avatar of speshal
speshal

Try caching your queries if you can:
<cfquery name="etl_perm" datasource="reports" CachedWithin="#CreateTimeSpan(0,1,0,0)#">
It may not work the first time due to a timeout but should on the rest


Also have a look here at a similar situation:
https://www.experts-exchange.com/questions/21025883/CFQUERY-Browser-Timeout.html

speshal
are thouse update,insert,delete statements?
or just select statements?

it those are select statements, i suggest indexing those tables.
this should give you faster results.

How many records are those tables anyway?
Avatar of joegensh

ASKER

All the SQL is DML (Update, Inserts and Delets), there are no Selects.  The tables are fairly big for the server (comaq proliant 2 processors). Both tables are 1,000,000 rows+

I feel I've tuned the SQL as good as I can.  All indexes are dropped on the columns being written too and the read columns are PKs.

I've also run SQL through the tunning wizards in SQL server.

I'll try the first suggestion....I am unsure what the cachedWith does or if it is even applicable to DML SQL.

My main question is does sql server support the timeout settings that are being passed from the cfsetting tags?
you might want to try moving your sql statements to storedprocedure.

You may get faster results. if it really takes that long it will time out.

IE will time out regardless of any settings. I have read that somewhere but i could not find the
link anymore. i am unsure what is the timeout limit.
30 Seconds...

The official company policy is that storedprocs are out of favor....I like stored procs personally.

I actually backed around this issued by creating a <cfschedule> tag with an emai notification to the end user when the page runs its stuff.  Not optimal, but it works

ASKER CERTIFIED SOLUTION
Avatar of CetusMOD
CetusMOD
Flag of Netherlands image

Link to home
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
Start Free Trial