Govardhan Gurav Ответов: 1

Как обрабатывать 2000 одновременных подключений в базе данных mysql?


How to handle 2000 concurrent connections in Mysql database?

В настоящее время я получаю ошибку "слишком много соединений" через каждые 1-2 часа.

Мой сервер имеет Windows 2012 R2, x64 с 8 ГБ оперативной памяти и 500 ГБ жесткого диска.

Каковы настройки my.cnf для того же самого?

Что я уже пробовал:

Ниже приведен текущий файл my.cnf

[mysqld]
пропустить-имя-разрешение
порт= 3306
розетка= "C:/xampp/mysql/mysql.sock"
basedir="C:/xampp/mysql"
никакое сжатие="C:/xampp/tmp"
datadir="C:/xampp/mysql/data"
pid_file="MySQL-сервера.пид"
скип-внешняя блокировка

log_error="mysql_error.log"
key_buffer_size = 16М
max_allowed_packet = 500м
table_cache = 64
net_buffer_length = 1М
read_buffer_size = 512К
read_rnd_buffer_size = 512К
myisam_sort_buffer_size = 8М
group_concat_max_len = 4М

max_connect_errors = 500
значения max_connections = 500
net_write_timeout = 3000
net_read_timeout = 3000
slow_launch_time = 10
параметр БД slow_query_log = выкл.
thread_cache_size = 2000
back_log = 100
performance_schema = выкл.
значение query_cache_size. = 512 МБ
query_cache_limit = 5М
join_buffer_size = 4М
sort_buffer_size = 4М
max_heap_table_size = 64М
tmp_table_size = 32М
table_open_cache = 2048
table_definition_cache=300
innodb_file_per_table=1
open_files_limit=50000


Пожалуйста, предложите решение...

Спасибо.

1 Ответов

Рейтинг:
1

Afzaal Ahmad Zeeshan

Цитата:
Как обрабатывать 2000 одновременных подключений в базе данных Mysql?
Но что делать, если ваше решение получает более 2000, скажем 2500? Я бы рекомендовал вместо того, чтобы доводить сервер до предела, попробовать использовать другие методы.

Для ваших рабочих нагрузок с интенсивным чтением рассмотрите возможность использования методов кэширования, они помогут вам уменьшить общую нагрузку, и ваши одновременные пользователи тоже могут вырасти до 20 000! Кэширование может быть сделано на сервере, через CDN и т. д.

Прочтите их, чтобы узнать больше об этом,
MySQL :: MySQL 5.7 Справочное Руководство :: 8.10.3 Кэш Запросов MySQL[^]
Как оптимизировать MySQL с помощью кэша запросов на Ubuntu 18.04 | DigitalOcean[^]
https://medium.com/@amangoeliitb/improving-database-performance-with-redis-dbd38fdf3cb[^]

Для рабочих нагрузок с интенсивной записью рассмотрите возможность совместного использования и секционирования базы данных. При таком подходе ваш сервер позаботится о передаче данных на сервер, ответственный за их хранение, а другим серверам не придется беспокоиться о данных; это уменьшит нагрузку.

Прочтите их, чтобы узнать больше об этом,
MySQL :: MySQL NDB Cluster: масштабируемость[^]
https://medium.com/pinterest-engineering/sharding-pinterest-how-we-scaled-our-mysql-fleet-3f341e96ca6f[^]

Кроме того, есть ли у вас размещенный план для компонента database engine? Если это так, рассмотрите облачную службу, которая может масштабироваться по мере необходимости; но вы можете ненавидеть это решение по нескольким очевидным причинам. :-)