Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Przerywanie bezczynnych połączeń mysql

Ręczne czyszczenie:

Możesz ZABIĆ procesid.

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;

Ale:

  • aplikacja php może zgłaszać błędy (lub serwer WWW, sprawdź dzienniki błędów)
  • nie naprawiaj tego, co nie jest zepsute - jeśli nie brakuje Ci połączeń, po prostu je zostaw.

Usługa automatycznego czyszczenia;)

Lub konfigurujesz serwer mysql, ustawiając krótszy czas oczekiwania na wait_timeout i 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)

Zestaw z:

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

(a także ustawić w pliku konfiguracyjnym na wypadek ponownego uruchomienia serwera)

Ale leczysz objawy, a nie przyczynę – dlaczego połączenia są otwarte? Jeśli skrypt PHP się skończył, czy nie powinien się zamknąć? Upewnij się, że serwer WWW nie korzysta z puli połączeń...



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Strona internetowa z najlepszymi praktykami w wielu językach

  2. Ostrzeżenie PHP:mysqli_connect():(HY000/2002):Połączenie odrzucone

  3. Znajdź rekordy z jednej tabeli, które nie istnieją w innej

  4. Jak przenieść wszystkie bazy danych MySQL ze starego na nowy serwer?

  5. SQLSTATE[HY000] [2002] Próba połączenia nie powiodła się.. - Podczas próby połączenia z serwera lokalnego na zdalny