V souboru my.cnf jsem nastavil maximální připojení na asi 2000.
max_connections=2048
Upgradoval jsem na 5.5.20 a nyní vidím následující řádek v protokolu chyb.
120201 19:40:24 [Warning] Changed limits: max_open_files: 1024 max_connections: 214 table_cache: 400
Proč mysql změnil maximální hodnotu připojení na 214?
# mysqladmin variables | grep max_connections
| max_connections | 214
Měkké a tvrdé otevřené soubory omezené OS jsou 1024
# ulimit -Sa | grep "open files"
open files (-n) 1024
# ulimit -Ha | grep "open files"
open files (-n) 1024
Počet skutečně použitých maximálních připojení:
# mysql -e"show status like '%used_connections%'"
+----------------------+-------+
| Variable_name | Value |
+----------------------+-------+
| Max_used_connections | 95 |
+----------------------+-------+
Zdá se mi v pořádku. Nemůžete mít max_connections větší než to, protože open_files_limit je příliš nízká. Pro každé připojení MySQL otevře několik souborů. Podívejte se zde .
Budete tedy muset zvýšit limit otevřených souborů ve vašem operačním systému a poté můžete zadat vyšší hodnotu max_connections.
Zdá se, že se jedná o stejný problém, na který jsem odpověděl v stackoverflow zde , přestože používám CentOS 7 a MySQL 5.6.26
Musíte otevřít limit otevřených souborů jak pro uživatele mysql (v limity.conf), tak pro službu mysql (v souboru mysql.service).
připojte tyto dva řádky k /etc/security/limits.conf
mysql hard nofile 65535
mysql soft nofile 65535
připojte tento řádek k /usr/lib/systemd/system/mysqld.service (v části [service])
LimitNOFILE=65535
poté se restartujte a zkontrolujte, zda tyto chybové zprávy zmizely z vašeho protokolu chyb mysql.
Zdá se, že se jedná o nějakou chybu v novém mysqldu. Měl jsem stejný problém. Nastavení max_connections na 700 fungovalo, ale pokud jsem jej nastavil na 900, během spuštění byl resetován na 214. Pokud by to byla záměrná změna, pak by to snížilo na 700 nebo něco podobného, hodnota 214 nedává smysl.
Každopádně, zvýšení limitu deskriptoru pomocí ulimit -n problém vyřeší.