Add in checker code to see if a session exists before using the session var.
IsDefined('session')


> Just tried your approach (sessionmanagement=no for bots) but every bot 
> that hits a page that references a session variable (even in a check) then 
> throws an error:
>
> "Before session variables can be used, the session state management system 
> must be enabled using the CFAPPLICATION tag."
>
> Any idea on how to get around this error so that the bots can see content? 
> It would be nice to at least allow the bots to index something other than 
> an error message :)
>
> Terry
>
>
>> Interesting topic.
>>
>> We gave up using client variables a while back when they started
>> severely impacting performance under load.   It's incredibly important
>> to avoid client variables on systems under load.  When we switched
>> from client vars to a cookie (hashed user ID & password combo) and
>> used sessions exclusively, the site performance improved significantly.
>>
>>
>> The problem you outline seems to be a problem for session variables
>> too. Using the runtime.SessionTracker, CFMX reports that there are
>> currently 3900 open sessions (20 min timeout) on our server.  Probably
>> about 1/3 to 1/2 of them are either users who dont have cookies turned
>> on (and therefore create a new session each page), or are bots.  It's
>> unclear how much of a performance hit this needless creation and
>> destruction of sessions causes, but it certainly isn't optimal.
>>
>> Thanks for the cfapplication switching idea.  I'll give it a shot and
>> see if the number of active sessions drops.
>>
>> I'd be interested in hearing if anyone has any ideas about stopping
>> sessions from cookieless people from being created (that cant be
>> identified as being bots) in the first place.  I've got a feeling
>> there is no solution for this one though.
>>
>> Regards,
>> Terry
>>
>>
>>
>> > Sorry, meant to post the whole thing. :)
>> >
>
>>
>> > For the last few weeks I've been having some problems with House of
>>
>> > Fusion. The memory for the JRun.exe has been going through the roof
>>
>> > and I didn't know why. The code was tight, nothing had really
>> changed
>> > on the site, so what was up? The answer was Yahoo.
>> > In the last 3 weeks Yahoo has ramped up their indexing of sites. For
>> a
>> > site as large as House of Fusion, this can take quite a bit of time.
>>
>> > I've logged 2-4 yahoo bot hits per second at some times.
>> > So how was yahoo the problem? Because of client variables. Not DB
>> > client variables and not even the dreaded registry client variables.
>>
>> > Just simple cookie based client variables. It seems that when a
>> client
>> > variable is set, a memory structure is also set for CF. Now each bot
>>
>> > hit is assumed to be it's own session as it does not accept cookies.
>>
>> > This mean each bot hit generates a memory structure of about 1k. Now
>>
>> > this is not really a lot, but when you have a few 10's of thousands
>> of
>> > hits from bots a day, it adds up.
>> > I'm still waiting on word from Macromedia as to when a client memory
>>
>> > structure times out, but this seems to be the issue.
>> > So what's the solution? There are 4.
>> > 1. Increase your ram. If you can do this, then ramp up your memory
>> as
>> > high as you can. This is not a perfect solution but it saves
>> throwing
>> > time at the problem and gives you a 'buffer' against problems of
>> this
>> > sort.
>> > 2. Set a robots.txt with a Crawl-delay setting. Mine is set to 1
>> > second but you can set yours to something higher
>> > 3. set a different cfapplication for the most common bots. I use a
>> > simple regular expression to find key words that only exist in
>> bots:
>> > <CFIF
>> REFindNoCase('Slurp|Goo>
>> glebot|BecomeBot|msnbot|Mediapartners-Google|ZyBorg|RufusBot|EMonitor',
>>
>> > cgi.http_user_agent)>
>> > <CFAPPLICATION name="FusionA" clientmanagement="no"
>> > sessionmanagement="no" setclientcookies="no" setdomaincookies="no"
>> > clientstorage="Cookie">
>> > <CFELSE>
>> > <CFAPPLICATION name="FusionA" clientmanagement="yes"
>> > sessionmanagement="no" setclientcookies="yes" setdomaincookies="no"
>>
>> > clientstorage="Cookie">
>> > </CFIF>
>> > This will make sure that a client structure is NOT created for one
>> of
>> > these bots.
>> > 4. Use the same regex to clean out the client structure after the
>> bot
>> > finishes the page. Use structclear(client) to remove the data in the
>>
>> > onRequestEnd.cfm, the onRequestEnd method of the application.cfc or
>> in
>> > the template itself.
>> > Bottom line is that while bots are great for indexing your content,
>>
>> > they can cause havoc on your system when a lot of memory is assigned
>>
>> > to what is essentially a 'dead session'.
>> >
>> > http://www.blogoffusion.com/index.
> cfm/2005/11/28/pseudomemory-leak
>
> 

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~|
Find out how CFTicket can increase your company's customer support 
efficiency by 100%
http://www.houseoffusion.com/banners/view.cfm?bannerid=49

Message: http://www.houseoffusion.com/lists.cfm/link=i:4:226464
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

Reply via email to