0

我有一台服务器,它/应该能够同时处理很多连接。现在有时我有一个错误:“在查询期间丢失了与 MySQL 服务器的连接”。当时我正在解决这个问题

def mysql_handling(string):
    global cursor
    tries=0
    while True:
        if tries<5:
            try: 
                cursor.execute(string)
                if 'SELECT' not in string:
                    db.commit()
                break
            except MySQLdb.Error, e:
                print("Error %d: %s" %(e.args[0], e.args[1]))
                cursor.close() 
                time.sleep(0.1)
                cursor = get_cursor() #setting up a new mysql connection
                #mysql_error_tracking(string)
                tries+=1
        else:
            sys.exit(1)

所以现在我能够同时处理很多连接,但有时我有这个错误(丢失连接。)我想知道在哪个查询发生这种情况,以及其中是否存在某种模式。所以为了跟踪这个,我还想用一个有点像这样的脚本将它存储在 mysql-database 中:

def mysql_error_tracking(string):
    #Clone/fork
    try:
        error_serv = os.fork()
    except:
        print "error_FORK failed!"

    if error_serv:
        print 'there is a MYSQL-ERROR, SAVE!!!'

        cursor.execute("SELECT count FROM query_errors WHERE string= "+"'"+str(string)+"'")
        data=cursor.fetchone()
        print data
        if data is None:
            cursor.execute("INSERT INTO query_errors (string) VALUES ("+"'"+str(string)+"')")
            db.commit()
            print 'insert in queries'
        else:
            cursor.execute("UPDATE query_errors SET count=count+1 WHERE string= "+"'"+str(string)+"'")
            db.commit()
            print 'count ploes 1'
        sys.exit(0)

这确实有效,但是分叉​​连接似乎真的给已经存在的 mysql-connection 带来了压力,而不是不分叉更好吗?

4

0 回答 0