Re: possible bug / memory leak in DispatchQueue and EventManager?

From: Andrus Adamchik (andru..bjectstyle.org)
Date: Thu Aug 23 2007 - 07:03:25 EDT

  • Next message: Andrus Adamchik: "Re: Strange Oracle Connection Issue"

    Hi Ayhan,

    I applied the patch that is derived from the one suggested by Phil
    (his patch and comments finally made the cause of the leak obvious to
    me. Doh!):

        https://issues.apache.org/cayenne/browse/CAY-770

    I'd appreciate if you could build the code from SVN and confirm that
    the fix worked. Then I'll close the issue. Let me know if you need
    help with the build.

    Thanks
    Andrus

    On Feb 21, 2007, at 10:55 AM, Ayhan Kondoz wrote:

    > Hi,
    >
    >
    >
    > i think i found a possible bug / memory leak within the
    > DispatchQueue and EventManager.
    >
    >
    >
    >
    >
    > First a little bit about my setup:
    >
    >
    >
    > I have 3 servers. Each server runs an axis service. The service
    > uses cayenne 1.2.1 to connect to a database. It reads customer and
    > account information from the DB etc..
    >
    > The servers are using cayenne's shared caching with javagroups as
    > the messaging service so that changes made from one server are
    > dispatched to the other servers.
    >
    >
    >
    > The avarage connections per second is somewhere around 4-5.
    >
    >
    >
    > However I have a very strange problem with this setup so I startet
    > to search for the reason. The problem is that with nearly constant
    > and unchanging usage the load of each server increases over time.
    > To further test this I created a test server with a similar setup.
    > There I created a test program that creates totally constant usage.
    > But even with the unchanging usage the load of the server is
    > increasing until the cpu load is so high that the requests can not
    > be processed anymore.
    >
    >
    >
    > I installed a java profiler to trying to pinpoint the location of
    > this error and this is what I found out.
    >
    >
    >
    > I let the server run for 24 hours and then stopped the program
    > which creates the test usage.
    >
    > But even while the server was idle there where still a lot of
    > instances in the java heap after the GC run.
    >
    >
    >
    > http://img206.imageshack.us/img206/9769/memorysy5.jpg
    >
    >
    >
    > Please note the HashMap, WeakReference and Invocation counts. I
    > pressume that the $ObjectProvider_*** is cayenne aswell but I am
    > not sure.
    >
    >
    >
    > Now the following image shows the cpu profile with incoming
    > connections.
    >
    >
    >
    > http://img339.imageshack.us/img339/2441/cpuci0.jpg
    >
    >
    >
    > As you can see 58% of the cpu time is used within HashSet.add().
    >
    >
    >
    > So when I consider the two facts i think that there might be a
    > possible problem with the EventManager. The first table tells us
    > that there are over 1 million instances of HashSet's and cayenne
    > Invocations. So it seems like the set's within the DispatchQueue
    > are not recycled properly so that the object count rises over time
    > which result in extremly high processtime when trying to add new
    > HashSet's.
    >
    >
    >
    >
    >
    > Thanks
    >
    > Ayhan
    >
    >
    >
    >
    >
    >
    >
    > Ayhan Kondoz
    >
    >
    >
    > Software-Entwicklung
    >
    >
    >
    > ----------------------------------------------------------------------
    > ------------
    >
    > Telefon: +49 (0) 40 513 06 616
    >
    > Telefax: +49 (0) 40 513 06 998 616
    >
    > E-Mail: ayhan.kondo..reenet-ag.de <mailto:ayhan.kondoz@freenet-
    > ag.de>
    >
    > Website: http://www.freenet.de <http://www.freenet.de/> ; http://
    > www.freenet-ag.de <http://www.freenet-ag.de/>
    >
    > ----------------------------------------------------------------------
    > ------------
    >
    > freenet.de AG
    >
    > Deelbögenkamp 4c
    >
    > 22297 Hamburg
    >
    > ----------------------------------------------------------------------
    > ------------
    >
    > Vorsitzender des Aufsichtsrates: Prof. Dr. Helmut Thoma
    >
    > Vorstand: Eckhard Spoerr (Vors.),
    > Axel Krieger, Stephan Esch, Eric Berger
    >
    > Amtsgericht Hamburg HRB 74048
    >
    >
    >
    >
    >
    > Diese Information ist ausschließlich für die adressierte Person
    > oder Organisation bestimmt und könnte vertrauliches und/oder
    > privilegiertes Material enthalten. Personen oder Organisationen,
    > für die diese Information nicht bestimmt ist, ist es nicht
    > gestattet, diese zu lesen, erneut zu übertragen, zu verbreiten,
    > anderweitig zu verwenden oder sich durch sie veranlasst zu sehen,
    > Maßnahmen irgendeiner Art zu ergreifen. Sollten Sie diese Nachricht
    > irrtümlich erhalten haben, bitten wir Sie, sich mit dem Absender in
    > Verbindung zu setzen und das Material von Ihrem Computer zu löschen.
    >
    >
    >
    > The information transmitted is intended only for the person or
    > entity to which it is addressed and may contain confidential and/or
    > privileged material. Any review, retransmission, dissemination or
    > other use of, or taking of any action in reliance upon, this
    > information by persons or entities other than the intended
    > recipient is prohibited. If you received this in error, please
    > contact the sender and delete the material from any computer.
    >
    >
    >



    This archive was generated by hypermail 2.0.0 : Thu Aug 23 2007 - 07:07:36 EDT