Uploaded image for project: 'MariaDB Server'
  1. MariaDB Server
  2. MDEV-17371

InnoDB: Warning: a long semaphore wait

    XMLWordPrintable

    Details

      Description

      We are running Drupal 8.5.6 on a SLES12 SP3 guest VM with MariaDB 10.0.35. We recently started encountering an issue where mysqld.log was filling up with:

      InnoDB: Warning: a long semaphore wait:
      --Thread 140299741705984 has waited at fut0fut.ic line 51 for 241.00 seconds the semaphore:
      X-lock on RW-latch at 0x7f9a23adf680 '&block->lock'
      a writer (thread id 140299742004992) has reserved it in mode  exclusive
      number of readers 0, waiters flag 1, lock_word: 0
      Last time read locked in file btr0cur.cc line 5640
      Last time write locked in file /home/abuild/rpmbuild/BUILD/mariadb-10.0.35/storage/xtradb/buf/buf0buf.cc line 3863
      InnoDB: Warning: a long semaphore wait:
      --Thread 140299892901632 has waited at ibuf0ibuf.cc line 2821 for 241.00 seconds the semaphore:
      Mutex at 0x5559577b1980 '&ibuf_mutex', lock var 1
      waiters flag 1
      InnoDB: Warning: semaphore wait:
      --Thread 140299741705984 has waited at fut0fut.ic line 51 for 241.00 seconds the semaphore:
      X-lock on RW-latch at 0x7f9a23adf680 '&block->lock'
      a writer (thread id 140299742004992) has reserved it in mode  exclusive
      number of readers 0, waiters flag 1, lock_word: 0
      Last time read locked in file btr0cur.cc line 5640
      Last time write locked in file /home/abuild/rpmbuild/BUILD/mariadb-10.0.35/storage/xtradb/buf/buf0buf.cc line 3863
      InnoDB: Warning: Writer thread is waiting this semaphore:
      --Thread 140299742004992 has waited at buf0buf.cc line 2703 for 104.00 seconds the semaphore:
      S-lock on RW-latch at 0x7f9a23d4e840 '&block->lock'
      a writer (thread id 140299639863040) has reserved it in mode  exclusive
      number of readers 0, waiters flag 1, lock_word: 0
      Last time read locked in file buf0flu.cc line 1037
      Last time write locked in file /home/abuild/rpmbuild/BUILD/mariadb-10.0.35/storage/xtradb/buf/buf0buf.cc line 3863
      InnoDB: Warning: Writer thread is waiting this semaphore:
      --Thread 140299639863040 has waited at btr0cur.cc line 592 for 185.00 seconds the semaphore:
      S-lock on RW-latch at 0x555958ddc438 '&new_index->lock'
      a writer (thread id 140299741705984) has reserved it in mode  exclusive
      number of readers 0, waiters flag 1, lock_word: fffffffffff00000
      Last time read locked in file btr0cur.cc line 592
      Last time write locked in file /home/abuild/rpmbuild/BUILD/mariadb-10.0.35/storage/xtradb/ibuf/ibuf0ibuf.cc line 411
      InnoDB: Warning: Writer thread is waiting this semaphore:
      --Thread 140299741705984 has waited at fut0fut.ic line 51 for 241.00 seconds the semaphore:
      X-lock on RW-latch at 0x7f9a23adf680 '&block->lock'
      a writer (thread id 140299742004992) has reserved it in mode  exclusive
      number of readers 0, waiters flag 1, lock_word: 0
      Last time read locked in file btr0cur.cc line 5640
      Last time write locked in file /home/abuild/rpmbuild/BUILD/mariadb-10.0.35/storage/xtradb/buf/buf0buf.cc line 3863
      InnoDB: Warning: Writer thread is waiting this semaphore:
      ...
      

      Apart from the stock my.cnf we have:

      [mysqld]
      bind-address = 127.0.0.1
      max_allowed_packet = 256M
      innodb_log_file_size = 281M
      innodb_adaptive_hash_index = 0
      innodb_purge_threads = 4
      innodb_flush_neighbors = 0
      innodb_lock_wait_timeout = 100
      ignore-db-dir = .BackupExpressChangeJournal
      ignore-db-dir = .BackupExpressJob
      ignore-db-dir = lost+found
      

      We added the following from the above after we started encountering this error:

      innodb_adaptive_hash_index = 0
      innodb_purge_threads = 4
      innodb_flush_neighbors = 0
      innodb_lock_wait_timeout = 100
      

      Unfortunately we do not have a stack backtrace nor can we provide a SQL command that exhibits the problem. When this error occurs, there are about 150 SQL commands listed in "SHOW PROCESSLIST". When the error occurs again, we will run the following to provide a stack backtrace and provide the "SHOW PROCESSLIST" output:

      # gdb -ex "set pagination 0" -ex "thread apply all bt" --batch -p <pid>
      

        Attachments

          Issue Links

            Activity

              People

              Assignee:
              marko Marko Mäkelä
              Reporter:
              achinayoung_waubonsee Albert Chin-A-Young
              Votes:
              0 Vote for this issue
              Watchers:
              4 Start watching this issue

                Dates

                Created:
                Updated:
                Resolved:

                  Git Integration