sql >> データベース >  >> RDS >> Mysql

MySQL:InnoDb:セマフォ待機が600秒以上続きました。サーバーを意図的にクラッシュさせます

    1022秒のグローバルステータスレポートの稼働時間から、これらのmy.cnf / iniを調査して検討し、先頭に#を付けて追加/変更/無効にするか、混乱を避けるために削除します。通常、1日に1回の変更のみが行われ、監視されます。あなたの場合、18分間のクラッシュで、それらすべてを1回のシャットダウン/再起動で作成しましょう。

    thread_cache_size=100 # from default because 83 threads created already, V8 CAP is 100 to avoid OOM
    innodb_buffer_pool_size=6G # from default of 128M, was full in 17 minutes
    table_open_cache=10000 # 1066 already opened in 17 minutes.
    

    SHOWGLOBALVARIABLESがどうしても必要です。およびSHOWENGINEINNODB STATUS; my.cnf / iniを完成させて、追加の提案を推測しないようにします。ここでストレージの制限に達している場合は、dropbox.comまたはpastebin.comがデータを共有するのに適した場所です。

    「[MySQL]Semaphorewait hassusted」を検索してstackoverflow.comdba.stackexchange.comまたはserverfault.comで以前の解決策を見つけます(私たちのpwはこれらの3つのサイトで共有されているため、3つのアカウントは必要ありません)。

    >

    ロールバックは17,856,929行を処理していました。単一のトランザクションでは、それは単一のトランザクションのより管理しやすい行数に分割するための分析が必要な負荷です。

    更新2017-11-18約09UTCwhIn my.cnf /ini[mysqld]セクション必要

    innodb_log_buffer_size=48M # from 256M
    innodb_log_file_size=256M # from default of 48M
    

    現在、これらは逆方向であり、17分間の再起動の原因の重要な部分を占めています。シャットダウン/再起動が必要であり、どちらの値も動的に変更することはできません。



    1. JOINで最高の結果を得る

    2. make_time()がPostgreSQLでどのように機能するか

    3. 致命的なエラー:未定義の関数getsqlvaluestring()の呼び出し

    4. SQLデータベースにアドレスを保存するためのベストプラクティス/標準