Alleged memory leak in MySQL master on a huge database

Hi everyone.
I am having a trouble with the MySQL installation that causes slow but steady memory consumption increase on the production database.
I am attaching the config and a screenshot that shows MySQL memory usage has been increasing by 20GB over the course of the last two days.
Eventually I will have to restart the MySQL (as I have done many times by now) which will cause some downtime as the database size is over 850 GB and it usually takes about half an hour to restart.
It would be ideal to figure what causes this but I have no idea where to start.
I would grealy appreciate any help.
Thanks!

[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
bind-address = 0.0.0.0
user=mysql
symbolic-links=0

log_timestamps = SYSTEM
log_error = /var/log/mysql/error.log
log_bin_trust_function_creators = 1

sql_mode = "ERROR_FOR_DIVISION_BY_ZERO,NO_ZERO_IN_DATE,NO_ENGINE_SUBSTITUTION"

log_bin = binlog
log_bin_index = binlog_list
max_binlog_size = 1G
expire_logs_days = 5

binlog_row_image = MINIMAL
binlog-do-db = admin
server-id       = 1

max_connections = 10000
open_files_limit = 10000
wait_timeout=150
interactive_timeout=7200
back_log = 4096

key_buffer_size = 512M
max_allowed_packet = 1024M
table_open_cache = 20000
#table_open_cache = 64
table_definition_cache = 10000
sort_buffer_size = 2M
read_buffer_size = 1M
read_rnd_buffer_size = 1M
net_buffer_length = 32K

group_concat_max_len = 4K

join_buffer_size = 320M
max_join_size = 1024M

tmp_table_size = 4G
max_heap_table_size = 8G

thread_cache_size = 80
thread_stack = 4M

innodb_buffer_pool_size = 450G
innodb_buffer_pool_instances = 80
innodb_log_file_size = 6G

innodb_log_buffer_size = 64M
innodb_lock_wait_timeout = 60

innodb_file_per_table = 1
innodb_page_cleaners = 8
innodb_read_io_threads = 32
innodb_write_io_threads = 8
innodb_flush_method = O_DSYNC
innodb_flush_log_at_trx_commit = 2

innodb_io_capacity = 100

skip-external-locking

slow_query_log=ON
long_query_time = 0
log_output=FILE
slow_query_log_file = /var/log/mysql/slow.log
log_slow_admin_statements=OFF
log_slow_slave_statements=OFF
log_slow_rate_limit=100
log_slow_rate_type='query'
slow_query_log_always_write_time=1
log_slow_verbosity='full'
slow_query_log_use_global_control='all'
log_slow_extra=ON

innodb_temp_data_file_path=ibtmp1:100M:autoextend:max:10G

Is this MySQL 5.7 or 8.0?

Hi Matthew.
It’s 8.0.

Are you closing connections after each query/txn or are you using a connection pooler which is keeping connections open for extended periods of time?

Thank you for your reply.
We use PDO for PHP to work with the database, and it does close connections.
I am attaching the graph that shows that connection count varies over the course of the day (the graph depicts last 7 days) while memory consumption steadily grows, so it doesn’t seem to be the issue.