我使用的是MySQL版本5.7.15,ubuntu0.16.04.1。当我启动MySQL时,我会在日志下面,
2016-11-06T13:44:56.838233Z 0 [Warning] option 'table_open_cache': unsigned value 33554432 adjusted to 524288
2016-11-06T13:44:56.839061Z 0 [Warning] Changed limits: max_open_files: 1024 (requested 1049386)
2016-11-06T13:44:56.839078Z 0 [Warning] Changed limits: max_connections: 214 (requested 800)
2016-11-06T13:44:56.839082Z 0 [Warning] Changed limits: table_open_cache: 400 (requested 524288)$ ulimit \ grep打开的文件(-n) 1024
在谷歌中,它被指定为需要增加open_files_limit值才能有更多的max_connections。
仅仅在/etc/ MySQl /mysql.con.d/mysqld.cnf上设置以下值并重新启动MySQl服务器就足够了吗?
open_files_limit = 2048
max_connections = 800
table_open_cache = 600还有其他方法可以在不重新启动MySQL服务器的情况下更改值吗?
在open_files_limit配置文件上设置MySQL是否足够?
发布于 2016-11-16 02:06:49
首先,您必须更改操作系统以增加open files (-n) 1024。MySQL的价值只反映了这一点。
max_connections = 214是一个慷慨的数字。让我们讨论一下你是否真的需要更多。
来自一个服务器的24个连接可能过多。如果有那么多人,他们可能会被彼此绊倒。最终结果是在不增加吞吐量的情况下增加延迟。我见过这样的情况,最好的解决办法是更早,而不是以后。
table_open_cache的单位是表,而不是字节。而且它是一个缓存,所以通常可以有一个较小的数字。(有一些STATUS值表示它是否“太小”。)
底线:在重新启动mysqld之前,减少客户端线程的数量。
发布于 2016-11-15 11:13:34
始终可以在http://dev.mysql.com/doc/refman/5.7/en/dynamic-system-variables.html上检查变量是否是动态的。
或者直接查看参数:http://dev.mysql.com/doc/refman/5.7/en/server-system-variables.html#sysvar_打开_文件_限制
如果它是动态的,您可以:
set global <variable_name> = <value>;不过,不要忘记更改您的my.cnf,否则下次重新启动将覆盖它。
如果不是,则必须重新启动MySQL才能实现。甲骨文正致力于获得越来越多的动态变量,您可以看到这一趋势正在通过5.5 -> 5.6 -> 5.7。不幸的是,总是会有需要重新启动的参数。
https://dba.stackexchange.com/questions/155260
复制相似问题