[mythtv-users] MySQL related BE deadlocks - collective wisdom needed
Warpme
warpme at o2.pl
Mon Aug 1 15:33:53 UTC 2011
On 7/31/11 10:31 PM, Warpme wrote:
> On 7/31/11 8:42 PM, Michael T. Dean wrote:
>> On 07/31/2011 11:08 AM, Warpme wrote:
>>> Recently I got idea to switch to different code paths in MySQL
>>> clientlib.
>>> This is result of one from my current hypothesis assuming that myth is
>>> putting "unfortunate" (in sense not yet catched mysql bug) load on
>>> MySQL and issue I have is simple libsqlclient bug.
>>>
>>> Assuming this, and fact that bug seems to be in communication code, I
>>> decided to possibly change mysqlclient code execution path.
>>> Simplest move is switch client-server comm. from Unix socket TCP. btw:
>>> I also enable MySQL general logging (huh log has 350M).
>>>
>>> System is under test since Yesterday.
>>> Having already +80 rec. I noticed in LOG some MySQL related errors not
>>> seen in past when I had Unix socket comm.
>>>
>>> So it is possible that by changing comm. I change code execution path
>>> in way that now mysqlclient is not hanging, and BE has chance to log
>>> error.
>>>
>>> Indeed, in past hang on traces was usually during mplexid query. As BE
>>> was already hung - this error wasn't logged in BE log. Now it is.
>>>
>>> I'm attaching part of BE log with those errors.
>>> I was trying to correlate 8:07:14& 15:05:18 entries with mysql query
>>> log. Any non-standard things I'm able to catch are something like this:
>>>
>>> 659 Prepare SELECT mplexid FROM channel WHERE chanid = ?
>>> 659 Reset stmt
>>> 659 Execute SELECT mplexid FROM channel WHERE chanid = 12805
>>> 659 Close stmt
>>> 1052 Connect mythtv at mythtv on mythconverg
>>> 1052 Query SET NAMES utf8
>>> 1052 Query SELECT mplexid FROM channel WHERE chanid = :CHANID
>>> 368 Prepare SELECT mplexid FROM channel WHERE chanid = ?
>>> 368 Reset stmt
>>> 368 Execute SELECT mplexid FROM channel WHERE chanid = 13101
>>> 368 Close stmt
>>> 5 Prepare SELECT mplexid FROM channel WHERE chanid = ?
>>> 5 Reset stmt
>>> 5 Execute SELECT mplexid FROM channel WHERE chanid = 12805
>>> 5 Close stmt
>>> 7 Prepare SELECT mplexid FROM channel WHERE chanid = ?
>>> 7 Reset stmt
>>> 7 Execute SELECT mplexid FROM channel WHERE chanid = 13101
>>> 7 Close stmt
>>> 6 Prepare SELECT mplexid FROM channel WHERE chanid = ?
>>> 6 Reset stmt
>>> 6 Execute SELECT mplexid FROM channel WHERE chanid = 12805
>>> 6 Close stmt
>>>
>>> It looks like at 1052 there was DB reconnect.
>>> Fortunately clientlib not hang here.
>>>
>>> BE log reported DB error is 1064 which means SQL syntax error. I don't
>>> know is it falsely reported by MySQL as SQL syntax issue - but in
>>> reality is related to reconnect, or it is rather sign of myth bug.
>>> I think it is reconnect result but somebody having expierience with
>>> mysql logs can say more here.
>>> Anyway, why here we have ":CHANID" instead of concrete number ?
>> Likely because we issued a prepare call, then got the DB reconnect, so
>> we lost the prepared statement and the Qt MySQL drivers issued the
>> prepared-statement SQL (with placeholders) as if it were normal SQL.
>>
>> Mike
>> _______________________________________________
>> mythtv-users mailing list
>> mythtv-users at mythtv.org
>> http://www.mythtv.org/mailman/listinfo/mythtv-users
>>
> Nice. It looks like we are narrowing problem. So now Q is why I'm
> loosing connection to DB.
> More and more it looks like issue of clientlib.
> One thing intriguing me: why there is no other reports about such issue.
> I saw some reports about hangs is clientlib - but all they were
> related to noticeable events in comm.infrastructure.
> It will be good to somehow log activity of this lib.
> Do anybody has idea how to do that ?
> We need longstanding on-line logging, not debugging as issue is
> sporadic and usually I need to hunt day or two for it.
> br
>
>
>
> _______________________________________________
> mythtv-users mailing list
> mythtv-users at mythtv.org
> http://www.mythtv.org/mailman/listinfo/mythtv-users
Hmm. It looks like my earlier post about possible workaround by
switching client-server comm. from socket to TCP is not working.
Today I had another deadlock with famous stack trace. DB log hasn't any
non-standard entries.
So what will be most reasonable as next steep:
1.try upgrade mysql to 5.5.14
2.pray for miracle that somebody finds[hints] solution
3.prepare to change OS (OMG)
br
-------------- next part --------------
A non-text attachment was scrubbed...
Name: warpme.vcf
Type: text/x-vcard
Size: 83 bytes
Desc: not available
Url : http://www.mythtv.org/pipermail/mythtv-users/attachments/20110801/c48cbc71/attachment.vcf
More information about the mythtv-users
mailing list