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

アイドル状態のmysql接続を終了する

    手動クリーンアップ:

    プロセスIDを強制終了できます。

    mysql> show full processlist;
    +---------+------------+-------------------+------+---------+-------+-------+-----------------------+
    | Id      | User       | Host              | db   | Command | Time  | State | Info                  |
    +---------+------------+-------------------+------+---------+-------+-------+-----------------------+
    | 1193777 | TestUser12 | 192.168.1.11:3775 | www  | Sleep   | 25946 |       | NULL                  |
    +---------+------------+-------------------+------+---------+-------+-------+-----------------------+
    
    mysql> kill 1193777;
    

    しかし:

    • phpアプリケーションがエラーを報告する場合があります(またはWebサーバー、エラーログを確認してください)
    • 壊れていないものを修正しないでください -接続が不足していない場合は、そのままにしておきます。

    自動クリーナーサービス;)

    または、 wait_timeout および interactive_timeout

    mysql> show variables like "%timeout%";
    +--------------------------+-------+
    | Variable_name            | Value |
    +--------------------------+-------+
    | connect_timeout          | 5     |
    | delayed_insert_timeout   | 300   |
    | innodb_lock_wait_timeout | 50    |
    | interactive_timeout      | 28800 |
    | net_read_timeout         | 30    |
    | net_write_timeout        | 60    |
    | slave_net_timeout        | 3600  |
    | table_lock_wait_timeout  | 50    |
    | wait_timeout             | 28800 |
    +--------------------------+-------+
    9 rows in set (0.00 sec)
    

    設定:

    set global wait_timeout=3;
    set global interactive_timeout=3;
    

    (また、サーバーの再起動時に備えて、構成ファイルに設定します)

    しかし、根本的な原因ではなく症状を治療しているのです-なぜ接続が開いているのですか? PHPスクリプトが終了したら、閉じてはいけませんか? Webサーバーが接続プールを使用していないことを確認してください...



    1. Entity Frameworkを介してOracleデータベースのIDを自動的に生成するにはどうすればよいですか?

    2. 別のプロセスが古いデータを取得しないようにSELECTをロックします

    3. データウェアハウスのカレンダーテーブル

    4. RANK、DENSE_RANK、およびROW_NUMBER関数間の類似点と相違点