MySQL이 max_connections 제한보다 더 많은 연결을 허용하는 이유는 무엇입니까?

MySQL이 max_connections 제한보다 더 많은 연결을 허용하는 이유는 무엇입니까?

내 연결 통계는 다음과 같습니다.

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 |
+----------------------------+----------------------+

한도 보다 더 많은 연결이 허용되는 이유가 무엇인지 궁금합니다 max_connections. mysql이 더 많은 연결을 거부하면 안 됩니까, 아니면 오래된 연결을 천천히 정리해야 합니까? 로그에 따르면 후자가 사실인 것 같습니다.

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)

이는 mysql이 어쨌든 이러한 연결을 천천히 정리하므로 데이터가 더 이상 필요하지 않은 경우 이전 연결을 닫는 것이 중요하지 않다는 것을 의미합니까?

답변1

동시에 처리된 연결 수를 확인하기 위해 살펴봐야 할 매개 변수는 다음과 같습니다.Max_used_connections.

연결 필드는 마지막 다시 시작한 이후의 연결 카운터 역할을 해야 합니다.

사이

MySQL 서버에 대한 연결 시도 횟수(성공 여부)입니다.

Max_used_connections

서버 시작 이후 동시에 사용된 최대 연결 수입니다.

당신은 참조 할 수 있습니다이 SE 답변그리고문서더 깊은 곳으로.

답변2

이는 활성 연결 수가 아닙니다. Connections연결 시도 성공 여부입니다. 숫자를 살펴봐야 합니다 Threads_connected. netstatmysql 포트를 사용하여 연결을 확인하고 필터링할 수도 있습니다 .

이것은stackoverlow의 비슷한 게시물입니다.

관련 정보