Ad Widget

Collapse

Something impossible has just happened!

Collapse
X
 
  • Time
  • Show
Clear All
new posts
  • rsvancara
    Member
    • Jul 2012
    • 42

    #1

    Something impossible has just happened!

    Hi,

    We migrated our zabbix installation from Postgresql (Mostly due to lock contention issues) to MySQL in hopes of being able to leverage the expertise of a broader community. We are seeing the following errors in our database when Zabbix is busy (doing anything, updating items from the front end etc).

    Code:
    15403:20121203:120017.481 [Z3005] query failed: [1205] Lock wait timeout exceeded; try restarting transaction [update ids set nextid=nextid+1 where nodeid=0 and table_name='events' and field_name='eventid']
     15403:20121203:120017.481 slow query: 50.983938 sec, "update ids set nextid=nextid+1 where nodeid=0 and table_name='events' and field_name='eventid'"
    zabbix_server [15403]: ERROR [file:db.c,line:1412] Something impossible has just happened.
    I have at the code in db.c that handles obtaining a "nextid" but this methodology of storing the nextid in a table and then performing select, update, select process appears to be highly error prone on a busy database when multiple threads are hitting the same table simultaneously.

    Any one found a way around this limitation? Seems to me, that is is a serious bottleneck in Zabbix and a horrible way to obtain the nextid for a busy database but I can see the virtue in building database agnostic code. I have read in an article linked below to convert this IDS table to MyISAM?

    We are running zabbix on and MySQL on the same system. On two separate systems, we have proxies configured for distributed monitoring.

    Zabbix Server:
    96 GB RAM
    12 Cores
    Database Volume has 6-15K RPM drives in RAID 10.

    Some things I have looked at?


Working...