Warum lässt MySQL mehr Verbindungen zu als das Max_Connections-Limit?

Warum lässt MySQL mehr Verbindungen zu als das Max_Connections-Limit?

Hier sind meine Verbindungsstatistiken.

mysql> show status like 'Conn%';
+-----------------------------------+-------+
| Variable_name                     | Value |
+-----------------------------------+-------+
| Connection_errors_accept          | 0     |
| Connection_errors_internal        | 0     |
| Connection_errors_max_connections | 0     |
| Connection_errors_peer_address    | 0     |
| Connection_errors_select          | 0     |
| Connection_errors_tcpwrap         | 0     |
| Connections                       | 274   |
+-----------------------------------+-------+

mysql> SHOW VARIABLES LIKE 'max_%';
+----------------------------+----------------------+
| Variable_name              | Value                |
+----------------------------+----------------------+
| max_allowed_packet         | 16777216             |
| max_binlog_cache_size      | 18446744073709547520 |
| max_binlog_size            | 104857600            |
| max_binlog_stmt_cache_size | 18446744073709547520 |
| max_connect_errors         | 100                  |
| max_connections            | 151                  |
| max_delayed_threads        | 20                   |
| max_digest_length          | 1024                 |
| max_error_count            | 64                   |
| max_execution_time         | 0                    |
| max_heap_table_size        | 16777216             |
| max_insert_delayed_threads | 20                   |
| max_join_size              | 18446744073709551615 |
| max_length_for_sort_data   | 1024                 |
| max_points_in_geometry     | 65536                |
| max_prepared_stmt_count    | 16382                |
| max_relay_log_size         | 0                    |
| max_seeks_for_key          | 18446744073709551615 |
| max_sort_length            | 1024                 |
| max_sp_recursion_depth     | 0                    |
| max_tmp_tables             | 32                   |
| max_user_connections       | 0                    |
| max_write_lock_count       | 18446744073709551615 |
+----------------------------+----------------------+

Ich frage mich, warum mehr Verbindungen zugelassen werden als das max_connectionsLimit? Sollte MySQL nicht mehr Verbindungen ablehnen oder löscht es langsam alte Verbindungen? Aus den Protokollen geht hervor, dass Letzteres der Fall ist?

tail -f /var/log/mysql/error.log
2020-12-15T07:21:59.253969Z 60 [Note] Aborted connection 60 to db: 'my_db' user: 'my_user' host: 'my_ip' (Got an error reading communication packets)
2020-12-15T07:21:59.253979Z 57 [Note] Aborted connection 57 to db: 'my_db' user: 'my_user' host: 'my_ip' (Got an error reading communication packets)
2020-12-15T07:21:59.253994Z 56 [Note] Aborted connection 56 to db: 'my_db' user: 'my_user' host: 'my_ip' (Got an error reading communication packets)
2020-12-15T07:21:59.254119Z 58 [Note] Aborted connection 58 to db: 'my_db' user: 'my_user' host: 'my_ip' (Got an error reading communication packets)
2020-12-15T07:21:59.254136Z 54 [Note] Aborted connection 54 to db: 'my_db' user: 'my_user' host: 'my_ip' (Got an error reading communication packets)
2020-12-15T07:21:59.254143Z 59 [Note] Aborted connection 59 to db: 'my_db' user: 'my_user' host: 'my_ip' (Got an error reading communication packets)
2020-12-15T07:21:59.254154Z 61 [Note] Aborted connection 61 to db: 'my_db' user: 'my_user' host: 'my_ip' (Got an error reading communication packets)
2020-12-15T07:21:59.254565Z 55 [Note] Aborted connection 55 to db: 'my_db' user: 'my_user' host: 'my_ip' (Got an error reading communication packets)
2020-12-15T07:21:59.254581Z 53 [Note] Aborted connection 53 to db: 'my_db' user: 'my_user' host: 'my_ip' (Got an error reading communication packets)
2020-12-15T07:21:59.254593Z 62 [Note] Aborted connection 62 to db: 'my_db' user: 'my_user' host: 'my_ip' (Got an error reading communication packets)

Bedeutet dies, dass es keine Rolle spielt, ob alte Verbindungen geschlossen werden, wenn die Daten nicht mehr benötigt werden, da MySQL diese ohnehin langsam bereinigt?

Antwort1

Ich denke, der Parameter, den Sie sich ansehen sollten, um zu sehen, wie viele Verbindungen gleichzeitig verarbeitet wurden, istMax_used_connections.

Das Feld „Verbindungen“ sollte als Zähler der Verbindungen seit dem letzten Neustart dienen.

Anschlüsse

Die Anzahl der Verbindungsversuche (erfolgreich oder nicht) zum MySQL-Server.

Max_used_connections

Die maximale Anzahl gleichzeitig genutzter Verbindungen seit dem Serverstart.

Weitere Informationen finden Sie unterdiese SE-AntwortUnddie Dokumentationzu tief weiter.

Antwort2

Dies ist nicht die Anzahl der aktiven Verbindungen. ConnectionsEs handelt sich um die Anzahl der erfolgreichen oder fehlgeschlagenen Verbindungsversuche. Sie müssen sich die Threads_connectedAnzahl ansehen. Sie können Verbindungen auch überprüfen netstatund nach MySQL-Port filtern.

Das istein ähnlicher Beitrag von Stackoverlow.

verwandte Informationen