How is it looking now? Any more crashes after the changes? I hope not. :-)

By the way lol@elevator example. That was funny.

<Ajas Mohammed />
http://ajashadi.blogspot.com
We cannot become what we need to be, remaining what we are.
No matter what, find a way. Because thats what winners do.
You can't improve what you don't measure.
Quality is never an accident; it is always the result of high intention,
sincere effort, intelligent direction and skillful execution; it represents
the wise choice of many alternatives.


On Wed, Dec 7, 2011 at 3:14 PM, Cheyenne Throckmorton <
cheyenne.throckmor...@gmail.com> wrote:

> Fortunately (weird I know) we just had the server crash again this
> afternoon.  It at least gave me an excuse to throw some new arguments into
> the jvm.config file to restart the cf service
>
> We went with suggestions from everybody and one from a ugtv webcast with
> Carl Meyer that I've been watching to try and wrap my brain around JVM,
> memory, permgen stuff.
>
> Here are the commands we changed
> -Xmx1182m -XX:MaxPermSize=512m
>
> Here is a command we added since it the machine has 4 cores, we decided to
> hopefully utilize some multi-threading to improve performance
> -XX:ParallelGCThreads=4
>
> The good thing about the crash was that I have pretty much ruled out any
> one application being the culprit, as with inspection of several distinct
> OOM permgen crashes we had different applications running and doing
> different things.  Over the last month, the hibernate application I think
> is getting the finger pointed at it, only because I believe it uses the
> most amount of permgen space with all of its dynamic loading.
>
> Perhaps its kind of like always blaming me (at 6'11 340lbs for those who
> don't know me) for setting off the elevator overloaded alarm because I just
> so happen to use up the most space, but I could have been on the elevator
> just fine until 80 little kids jumped on and caused the problem of maxing
> out the load/space.
>
> In that scenario, kicking me off the elevator isn't the solution, and
> perhaps with these new commands we've just gotten a bigger elevator which
> may work a little faster even though long-term we may need to investigate
> putting the hibernate app on a diet.  I will keep monitoring the situation
> and update everyone as I learn more, for those of you that are just reading
> to learn in case you run into this and for those or you expert server techs
> that love peering into the mind of a coder stuck trying to learn server
> maintenance problems.
>
> Cheyenne
>
>
> On Wed, Dec 7, 2011 at 9:43 AM, Ajas Mohammed <ajash...@gmail.com> wrote:
>
>> On first look, I think you really need to go up on your max memory. On
>> our servers, which are still on 32bit windows, we have min setting of 512MB
>> and Max of 1182MB.
>>
>>
>> # Arguments to VM
>> java.args=-server -Xmx512m
>>
>> # Arguments to VM
>> java.args=-server -Xmx1182m
>>
>> Having said that, like Charlie says always, its not a final solution to
>> the problem but in your case I think its a good starting point.Unless you
>> have some kind of other memory constraints, on this server which I dont
>> know of, you should go up.
>>
>> Lot of people say, you should put both the min and max at same setting.
>> In my case, that didnt work out, hence min at 512MB and Max 1182MB.
>>
>> About FusionReactor, I have to say there is nothing to learn. You will
>> grasp in one day. I had written a getting started guide which was posted on
>> FR community devnet site.
>> http://www.fusion-reactor.com/community/developers/autodev_detailed.cfm?article=FRS-238I
>>  am sure they have more updated articles as mine was written at time of
>> version 3.5.1 but still its a good start.
>>
>> Let us know if you need help with that. In your case, I would see System
>> Metrics page, running requests page and also stack trace of the request to
>> see what is going on.
>>
>> Others, correct me, if there is anything, I dont mind at all. :-)
>>
>>
>> <Ajas Mohammed />
>> http://ajashadi.blogspot.com
>> We cannot become what we need to be, remaining what we are.
>> No matter what, find a way. Because thats what winners do.
>> You can't improve what you don't measure.
>> Quality is never an accident; it is always the result of high intention,
>> sincere effort, intelligent direction and skillful execution; it represents
>> the wise choice of many alternatives.
>>
>>
>> On Wed, Dec 7, 2011 at 12:01 AM, Cheyenne Throckmorton <
>> cheyenne.throckmor...@gmail.com> wrote:
>>
>>> You guys rock with all kinds of answers, I'll definitely be trying them
>>> out tomorrow when I have a better brain and before whirly.  Below is my
>>> JVM.config file.
>>>
>>> Also for others maybe following the thread I found this 1 of 4 article
>>> by Charlie helpful, but then for Charlie I was trying to find the other
>>> parts after I had determined that I was indeed getting the outofmemory
>>> errors in the -out file
>>>
>>> http://www.carehart.org/blog/client/index.cfm/2010/11/3/when_memory_problems_arent_what_they_seem_part_1
>>>
>>> One thing I don't get about the -out files is why -out and -out1 are the
>>> only current ones and then -out2 seems to be when the server first started
>>> recording and then they only go to -out200 which was before I started
>>> seeing this problem.  I see in your article I can make them bigger than
>>> 200kb, which I may have to do, but it seems weird they stop making at 200
>>> and then I essentially only have the latest 400kb in two files
>>>
>>> Ajas good point on the 10-day free trials, we have a copy of one or the
>>> other that we purchased awhile back, but admittedly in our organization
>>> Eric Jones was the main server maintenance guy, until he moved on.  He kept
>>> track of those licenses and servers.  I've been debating which would be
>>> longer, to find the license and learn the software or fix the problem :)
>>>
>>> Finally, revisiting Charlie's idea to look at the last funky thing
>>> before the server went down around 16:24 I do see this 2min earlier, and it
>>> is in the app that utilizes Hibernate, so I'll definitely need to see if I
>>> have a CFC incorrectly set up as an interface or abstract class java style
>>> in a way that CF doesn't like and that potentially could be the root of
>>> this deal.  Unfortunately, since my -out logs don't capture the last outage
>>> a few days ago I can't compare, but maybe when I try to re-trigger the
>>> event tomorrow I can get this same result.
>>>
>>> 12/06 16:22:28 Error [jrpp-4004] - Object instantiation exception.An
>>> exception occurred while instantiating a Java object. The class must not be
>>> an interface or an abstract class. Error: ''. The specific sequence of
>>> files included or processed is:
>>> F:\.........................\webroot\index.cfm, line: 883
>>> 12/06 16:22:44 Information [scheduler-1] - Session
>>> 8430f0f809b2ff4d892f6b78787f5d723575 ended on ip . Length: 2:00:01 Active
>>> sessions: -1
>>> 12/06 16:22:52 Error [jrpp-4004] - Object instantiation exception.An
>>> exception occurred while instantiating a Java object. The class must not be
>>> an interface or an abstract class. Error: ''. The specific sequence of
>>> files included or processed is: F:\.....................\webroot\index.cfm,
>>> line: 883
>>> 12/06 16:22:56 Error [jrpp-4004] - Exception thrown by error-handling
>>> template:
>>> 12/06 16:22:59 error ROOT CAUSE: java.lang.OutOfMemoryError: PermGen
>>> space
>>>
>>> jvm.config file
>>>
>>> #
>>> # VM configuration
>>> #
>>> java.home=C:/Program Files/Java/jdk1.6.0_24/jre
>>>
>>> # Arguments to VM
>>> java.args=-server -Xmx512m -Dsun.io.useCanonCaches=false
>>> -XX:MaxPermSize=192m -XX:+UseParallelGC -Xbatch
>>> -Dcoldfusion.rootDir={application.home}/../
>>> -Djava.security.policy={application.home}/../lib/coldfusion.policy
>>> -Djava.security.auth.policy={application.home}/../lib/neo_jaas.policy
>>> -Dcoldfusion.classPath={application.home}/../lib/updates,{application.home}/../lib,{application.home}/../gateway/lib/,{application.home}/../wwwroot/WEB-INF/cfform/jars,{application.home}/../wwwroot/WEB-INF/flex/jars
>>> -Dcoldfusion.libPath={application.home}/../lib
>>>
>>> #
>>> # commas will be converted to platform specific separator and the result
>>> will be passed
>>> # as -Djava.ext.dirs= to the VM
>>> java.ext.dirs={jre.home}/lib/ext
>>>
>>> #
>>> # where to find shared libraries
>>>
>>> java.library.path={application.home}/../lib,{application.home}/../jintegra/bin,{application.home}/../jintegra/bin/international,{application.home}/../lib/oosdk/classes/win
>>> system.path.first=false
>>>
>>> #
>>> # set the current working directory - useful for Windows to control
>>> # the default search path used when loading DLLs since it comes
>>> # before system directory, windows directory and PATH
>>> java.user.dir={application.home}/../../lib
>>>
>>> # JVM classpath
>>>
>>> java.class.path={application.home}/servers/lib,{application.home}/../lib/macromedia_drivers.jar,{application.home}/lib/cfmx_mbean.jar,{application.home}/../lib/oosdk/classes,{application.home}/../lib/oosdk/lib,{application.home}/lib
>>>
>>>
>>>
>>> On Tue, Dec 6, 2011 at 10:58 PM, Charlie Arehart 
>>> <char...@carehart.org>wrote:
>>>
>>>> On top of all that’s been said, I’d add this:
>>>>
>>>> Yes, it’s likely that you simply need to increase the maxpermsize.
>>>> Sometimes just another 100-300 can be enough to solve the problem.
>>>>
>>>> But you also want to make sure that this is really the **first** error
>>>> that puts CF into a bad state. It could be that something else precedes it
>>>> and precipitates it.
>>>>
>>>> Look in in the [cf]\runtime\logs\, in its out log for this instance, at
>>>> the time of your crash, and look back in that log (before the crash) to see
>>>> if any other errors or unusual messages show up. If you see none for 1-20
>>>> minutes before that permgen message, then that alone would seem to be the
>>>> problem.
>>>>
>>>> As to how it could happen, you’re on the right track but not quite
>>>> right in what you’ve concluded. The saving of class files is not quite
>>>> connected as you think. That’s about compiling, where the permgen is about
>>>> loading. CF loads classes into the template cache (and thereby the permgen,
>>>> when they’re first requested--and are not in the cache already, or later
>>>> when it’s no longer in the cache for any reason, including a restart. A
>>>> class can be removed from the template cache also during the life of the
>>>> server when the template cache becomes full and it needs to make room for a
>>>> more newly requested one, by removing the least recently used one).
>>>>
>>>> And CF will obtain that class (to load when needed) either by compiling
>>>> it from source on the fly, or by pulling it from that cfclasses directory
>>>> (if you have enabled that “save class files” option in the Admin).
>>>>
>>>> So how does the permgen get stressed? Most often by excessive loading
>>>> of templates into the template cache. Again, when it gets full, it removes
>>>> the oldest to make room for new ones. How could it get full? Because the
>>>> number of templates that need to be loaded (CFM files, CFCs,  and indeed a
>>>> class is created for each METHOD in a CFC) exceeds its size. The default is
>>>> 1024. That’s also not a hard cap. There is a soft cache on top of that.
>>>>
>>>> If you look in the cfclasses directory, see how many files are there.
>>>> You might even sort it by date modified and see how many are recently
>>>> edited. If that number is at or near 1024, it’s likely your app uses lots
>>>> of files and therefore creates lots of classes, which can then cause this
>>>> stress. If you increase the size of the template cache, beware that that
>>>> cache is stored in the heap, so you may need to raise that, too. (Yes,
>>>> loading things into the template cache then affects both the heap and the
>>>> permgen, from my observation.)
>>>>
>>>>
>>>> Does that make sense, does that help? You’re right, you don’t find much
>>>> out there about it. Hope this is helpful. I may blog it once we have some
>>>> back and forth. (I’ve hinted at this info in some entries, but not devoted
>>>> one to it.)
>>>>
>>>> /charlie
>>>>
>>>>
>>>>
>>>> *From:* ad...@acfug.org [mailto:ad...@acfug.org] *On Behalf Of *Cheyenne
>>>> Throckmorton
>>>> *Sent:* Tuesday, December 06, 2011 10:09 PM
>>>> *To:* discussion@acfug.org
>>>> *Subject:* [ACFUG Discuss] PermGen CF Server Memory Errors
>>>>
>>>>
>>>>
>>>> One of our CF servers keeps needing to have the CF service rebooted on
>>>> it in order to work and continue serving our sites 1-2x / week.
>>>>  Fortunately we do have a web service on one of the other box that monitors
>>>> this machine to let us know when it starts bugging out again.
>>>>
>>>>
>>>>
>>>> The error I am getting on the server has to do with an out of memory
>>>> perm gen space issue, something that there is tons of stuff online about
>>>> but nothing that I've been able to succinctly tell is a good idea to look
>>>> toward resolving the issue.  Here are the errors we get before the service
>>>> fails.
>>>>
>>>>
>>>>
>>>> javax.servlet.ServletException: ROOT CAUSE:
>>>> java.lang.OutOfMemoryError: PermGen space
>>>>
>>>>
>>>>
>>>> 12/06 16:24:46 Error [jrpp-3954] - PermGen space The specific sequence
>>>> of files included or processed is:
>>>> F:\...................\case-studies\ENDO-enduring-hot-seat-discussion\index.cfm''
>>>>
>>>> 12/06 16:24:46 error ROOT CAUSE: java.lang.OutOfMemoryError: PermGen
>>>> space
>>>>
>>>>
>>>>
>>>> javax.servlet.ServletException: ROOT CAUSE: java.lang.OutOfMemoryError:
>>>> PermGen space
>>>>
>>>>
>>>>
>>>> Server: Windows Server 2008 R2 64bit
>>>>
>>>> ColdFusion  9,0,1,274733 Standard
>>>>
>>>> Java Version:  1.6.0_24
>>>>
>>>> RAM 8GB
>>>>
>>>>
>>>>
>>>> JVM Arguments
>>>>
>>>> -server -Dsun.io.useCanonCaches=false -XX:MaxPermSize=192m
>>>> -XX:+UseParallelGC -Xbatch -Dcoldfusion.rootDir={application.home}/../
>>>> -Dcoldfusion.libPath={application.home}/../lib
>>>>
>>>> Despite my attendance of multiple Charlie lectures and/or because of
>>>> such attendance I certainly do not consider myself an expert in the memory
>>>> underpinnings of CF.  What I do believe is happening through some research
>>>> and late night testing is that essentially the server stores information
>>>> (in think in cfclasses) that is essentially compiled java code.  It does
>>>> this to speed the delivery of data generated by CF in a caching like
>>>> mechanism.
>>>>
>>>>
>>>>
>>>> There is a checkmark in the settings that says "Save Class Files" which
>>>> I suspect would solve the problem if indeed this area is getting overflowed
>>>> and not properly Garbage Collected (if GC even runs in PermGen).  However,
>>>> unchecking that is not recommended for a production machine, and it would
>>>> obviously slow down all of the sites.  Similarly I've seen posts that say
>>>> to just increase the MaxPermSize, but I find many posts after those saying
>>>> that is not solve and just delaying the problem.  I'd rather solve the
>>>> problem.
>>>>
>>>>
>>>>
>>>> Additionally, when observing the websites when it is acting up we get a
>>>> lot of totally blank pages along with 200 OK http response codes.  I have
>>>> also gotten partial pages at times, but that all leads me to some sort of
>>>> partial template loading until the permgen runs out of memory.
>>>>
>>>>
>>>>
>>>> Finally, I don't know that it is a 100% deal, but we have launched a
>>>> new application on this server that makes use of the new ORM Hibernate
>>>> functionality.  This happened right around the same time we started
>>>> observing these issues.  This was my first shot at ORM within CF and I know
>>>> I need to go back and re-look at how I have the lazy-loading set up.  I
>>>> have a feeling that it can definitely be tuned better and that it's
>>>> possible this type of code may make heavy use of the permgen space with
>>>> dynamically loading data in the way that it works.  This heavy banging in
>>>> the permgen along with an untuned JVM may be the combo that is causing our
>>>> problems, or maybe I'm way off.  Figured I'd throw it out there to group to
>>>> see what thoughts and solutions might be out there beyond my teams
>>>> continued googling of words like "permgen", "coldfusion", "hibernate",
>>>> "orm" and "arehart" :)
>>>>
>>>>
>>>>
>>>> - Cheyenne Throckmorton
>>>>
>>>>
>>>>
>>>> P.S. Looking forward to seeing folks at Whirlyball tomorrow night.
>>>>
>>>>
>>>> --
>>>> Cheyenne Throckmorton - Atlanta, GA
>>>> Blog      : www.CheyenneJack.com
>>>> Twitter   : @cheyennejack
>>>> Founder : www.AtlantaUserGroups.com
>>>>                www.TheTallStreetJournal.com
>>>>                www.MohawksRock.com
>>>>
>>>> -------------------------------------------------------------
>>>> To unsubscribe from this list, manage your profile @
>>>> http://www.acfug.org?fa=login.edituserform
>>>>
>>>> For more info, see http://www.acfug.org/mailinglists
>>>> Archive @ http://www.mail-archive.com/discussion%40acfug.org/
>>>> List hosted by FusionLink <http://www.fusionlink.com>
>>>> -------------------------------------------------------------
>>>>
>>>
>>>
>>>
>>> --
>>> Cheyenne Throckmorton - Atlanta, GA
>>> Blog      : www.CheyenneJack.com
>>> Twitter   : @cheyennejack
>>> Founder : www.AtlantaUserGroups.com
>>>                www.TheTallStreetJournal.com
>>>                www.MohawksRock.com
>>>
>>
>>
>
>
> --
> Cheyenne Throckmorton - Atlanta, GA
> Blog      : www.CheyenneJack.com
> Twitter   : @cheyennejack
> Founder : www.AtlantaUserGroups.com
>                www.TheTallStreetJournal.com
>                www.MohawksRock.com
>

Reply via email to