-- 
Seth Remington
SaberLogic LLC
661 Suite B Weber Drive   Wadsworth, Ohio   44281
[EMAIL PROTECTED]   Ph: 330.335.6442    Fax: 330.336.8559


>>> On Tue, Dec 26, 2006 at  9:53 pm, in message
<[EMAIL PROTECTED]>,
[EMAIL PROTECTED] wrote: 
> On 12/26/06, Roger Haase <[EMAIL PROTECTED]> wrote:
>> Hi,
>>
>> I am testing a new server with Fedora Core 6 and Middlekit- Webware 9.2
>> and MySQL 5.0.  When the new server is idle for 5 (or more) hours I get
>> abends with OperationalError: (2006, 'MySQL server has gone away').
>> Restarting the webkit AppServer eliminates the immediate problem.
>>
>> I have not seen this problem on a lightly loaded server with Fedora
>> Core 4, MySQL 4.1, and Webware 9.1.  The Webkit AppServer is restarted
>> by cron daily in both cases.   In both cases the result of a call to
>> Middlekit MySQLObjectStore is saved in the Sitepage module at load time
>> for use by all servlets.
>>
>> Where should I be setting a timeout parameter for the Middlekit- MySql
>> connection?  Is 24 hours an unreasonable time limit?
> 
> Did your version of MySQLdb change as well? I've had problems on more
> than one occasion when upgrading.
> 
> Also, is there a setting on the server side, perhaps? Maybe something
> about how long to keep connections alive?
> 
> If this ultimately requires a fix in MiddleKit, I'm not yet sure what
> it should be or where it should go, as I haven't experienced this
> problem myself (but have not yet run MySQL 5 for lengthy periods of
> time). One option you might try is tweaking
> MiddleKit\Run\MySQLObjectStore.py to trap that specific exception and
> do some kind of recovery and retry. If you need help coding that, let
> me know.
> 
> But if there is a MySQL option that applies, that will be probably be
> the most expedient fix.
> 
> Let us know how it goes,
> 
> - Chuck


I ran into this same issue in SaberNet DCS 
(http://sabernetdcs.sourceforge.net/). I don't recall all of the details when I 
researched it at the time but I can tell you the solution I came up with. It 
involves using the ping() function in MySQLdb to keep the connection alive:


from TaskKit.Task import Task
from sndcs.Store import store
import time

class KeepSQLAlive(Task):
    
    def __init__(self):
            Task.__init__(self)
            self.store = store
    
    def run(self):
            conn, cur = self.store.connectionAndCursor()
            try:
                conn.ping()
            except:
                pass


This is implemented as a TaskKit task and by default runs every 30 seconds 
(probably overkill). The "store" object is a singleton data store instance used 
by everything, probably similar to what you describe in your app. Hope that 
helps.

-Seth

______________________________________________________________________
This email has been scanned by the MessageLabs Email Security System.
For more information please visit http://www.messagelabs.com/email 
______________________________________________________________________

-------------------------------------------------------------------------
Take Surveys. Earn Cash. Influence the Future of IT
Join SourceForge.net's Techsay panel and you'll get the chance to share your
opinions on IT & business topics through brief surveys - and earn cash
http://www.techsay.com/default.php?page=join.php&p=sourceforge&CID=DEVDEV
_______________________________________________
Webware-discuss mailing list
Webware-discuss@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/webware-discuss

Reply via email to