• [Warning] InnoDB: A long semaphore wait


    mysql版本: 5.7.29

    大量的日志
    2021-08-13T00:59:23.099878Z 0 [Warning] InnoDB: A long semaphore wait:
    --Thread 139974037272320 has waited at srv0srv.cc line 1989 for 614 seconds the semaphore:
    X-lock on RW-latch at 0x396b1648 created in file dict0dict.cc line 1191
    a writer (thread id 139973910796032) has reserved it in mode exclusive
    number of readers 0, waiters flag 1, lock_word: 0
    Last time read locked in file row0purge.cc line 882
    Last time write locked in file /export/home/pb2/build/sb_0-37309218-1576676677.02/mysql-5.7.29/storage/innobase/row/row0mysql.cc line 4313
    2021-08-13T00:59:23.099912Z 0 [Warning] InnoDB: A long semaphore wait:
    --Thread 139972907202304 has waited at buf0flu.cc line 1217 for 334 seconds the semaphore:
    SX-lock on RW-latch at 0x7f56938befc0 created in file buf0buf.cc line 1468
    a writer (thread id 139973910796032) has reserved it in mode exclusive
    number of readers 0, waiters flag 1, lock_word: 0
    Last time read locked in file row0sel.cc line 1343
    Last time write locked in file /export/home/pb2/build/sb_0-37309218-1576676677.02/mysql-5.7.29/storage/innobase/row/row0upd.cc line 2875
    InnoDB: ###### Starts InnoDB Monitor for 30 secs to print diagnostic info:
    InnoDB: Pending preads 0, pwrites 0

    解决办法:

    原来 Linux内核信号量默认设置太小,造成大量等待,
    默认
    # cat /proc/sys/kernel/sem
    250 32000 32 128
    说明:
    第一列,表示每个信号集中的最大信号量数目。
    第二列,表示系统范围内的最大信号量总数目。
    第三列,表示每个信号发生时的最大系统操作数目。
    第四列,表示系统范围内的最大信号集总数目。


    将第三列调大一点,参考网上的数据
    echo "kernel.sem=250 32000 100 128">>/etc/sysctl.conf
    然后sysctl -p
    重启 MySQL

    错误不再出现,问题即可解决

  • 相关阅读:
    JS变量的作用域
    使用jquery修改css中带有!important的样式属性
    js异步加载的三种解决方案
    js 停止事件冒泡 阻止浏览器的默认行为(阻止超连接 # )
    【翻译】MongoDB指南/CRUD操作(二)
    【翻译】MongoDB指南/CRUD操作(一)
    【翻译】MongoDB指南/引言
    深入浅出UML类图(一)
    让thinkphp 5 支持pathinfo 的 nginx ,去掉index.php
    linux 常用命令
  • 原文地址:https://www.cnblogs.com/hxlasky/p/15136128.html
Copyright © 2020-2023  润新知