我有一台服务器,它/应该能够同时处理很多连接。现在有时我有一个错误:“在查询期间丢失了与 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 带来了压力,而不是不分叉更好吗?