Когда сервер A запускал приложение node.js, подключенное к двум отдельным серверам mysqldb B и C.Сервер A сообщил об ошибках следующим образом:
Error: ER_CANT_CREATE_THREAD: Can't create a new thread (errno 11); if you are not out of available memory, you can consult the manual for a possible OS-dependent bug
at Handshake.Sequence._packetToError (/home/abc/workspace/node_modules/my$
at Handshake.ErrorPacket (/home/abc/workspace/node_modules/mysql/lib/prot$
at Protocol._parsePacket (/home/abc/workspace/node_modules/mysql/lib/prot$
at Parser._parsePacket (/home/abc/workspace/node_modules/mysql/lib/prot
Конфигурация RAM для серверов mysql db B и C - 192 ГБ, сервер Ubuntu 18.04.3 LTS, mysql 8 и его файл mysqld.cnf, настроенный как:
max_connections = 100000
innodb_buffer_pool_size = 20G
tmp_table_size = 1G
max_heap_table_size = 1G
read_rnd_buffer_size = 1G
thread_cache_size = 100000
open_files_limit = 1000000
table_definition_cache = 40096
table_open_cache = 1000000
Кто-то имеет представление за эту проблему.
Большое спасибо!
Одним из наиболее распространенных решений в этой ситуации является обновление программного ограничения nproc
. для MySQL. Вот как вы можете это сделать:
sudo vi /etc/security/limits.conf
mysql soft nproc
2048
на 4096
mysql soft nproc 4096
)Это ускорит программный nproc
и позволит серверу создавать больше потоков. Основываясь на конфигурации оборудования, которую вы описали, у системы будет более чем достаточно мощности, чтобы справиться с этим.
Надеюсь, это решит вашу проблему.