Ryan, thanks a lot for your response. I'll answer a few statements you made.
We have logging turned on for anything over 30 seconds. These errors only happen during database optimization times, or on credit card/echeck processing pages which have to connect out to our bank transaction processing companies. Besides that one page, which doesn't run every second or anything, the rest of the site is really optimized, and runs very quickly. It's just the CPU will travel up around 50-75% on peak times (aka, time to add another box). ~98% or so of our database connections are through stored procs, connecting to a ms sql server on a separate box. Our dbas work night & day to keep it optimized, and they do a good job, though historically, whenever sql has problems, CF crashes. -nathan strutz Ryan Hartwich wrote: > Try going into the debugging area if CF Admin and making sure that it is > logging pages that run longer than X seconds. Set it to 60 seconds or so and > watch which files show up in the logs. Then, run those files in development > with the full debugging turned on and see if 1) there are sql statements or > stored procedure calls that take a long time 2) if the page calls many sub > pages and any of them take a long time to run. > > Most likely you will identify a few key pages that everyone runs that are > very cpu intensive. > > Here are a few of the things I 'fix' > > rewrite queries that take a long time if possible (adding indexes to tables > may help) > > rewrite stored procedures > > look for queries that are called on every page or repeatedly on the same page > (in a loop) that can be cached. You may find that you have 3-5 queries in > your application.cfm page that run for every request that pull back the same > information. Running these could take a tenth of a second or more, adding > load to CF, the database, lag time to connect, etc. > > If you have a page with a loop with a query inside it and the only thing in > the query that changes is the primary key, try rewriting the query so that > you can put it on the outside of the loop and use a query of query inside the > loop. i.e. you have a query called 100 times (loop 1 to 100), each time > returning 1 row. Rewrite to return all 100 rows, place outside loop. > Inside loop, query the 100 row record set for the individual row. this cuts > database connects from 100 to 1. > > If you are running MS Access, get rid of it :-) > > ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~| Logware (www.logware.us): a new and convenient web-based time tracking application. Start tracking and documenting hours spent on a project or with a client with Logware today. Try it for free with a 15 day trial account. http://www.houseoffusion.com/banners/view.cfm?bannerid=67 Message: http://www.houseoffusion.com/lists.cfm/link=i:4:207945 Archives: http://www.houseoffusion.com/cf_lists/threads.cfm/4 Subscription: http://www.houseoffusion.com/lists.cfm/link=s:4 Unsubscribe: http://www.houseoffusion.com/cf_lists/unsubscribe.cfm?user=89.70.4 Donations & Support: http://www.houseoffusion.com/tiny.cfm/54

