MySQL设置最大连接数( 二 )


增加table_open_cache或max_tmp_tables 参数的大小后,从操作系统的角度看,mysqld进程需要使用的文件描述符的个数就要相应的增加,这个是由open_files_limit参数控制的 。
mysql> show variables like ‘open_files%’; +——————+——-+ | Variable_name | Value | +——————+——-+ | open_files_limit | 2670 | +——————+——-+ 1 row in set (0.00 sec) 但是这个参数是OS限制的,所以我们设定的值并不一定总是生效 。如果OS限制MySQL不能修改这个值,那么置为0 。如果是专用的MySQL服务器上,这个值一般要设置的尽量大,就是设为没有报Too many open files错误的最大值,这样就能一劳永逸了 。当操作系统无法分配足够的文件描述符的时候,mysqld进程会在错误日志里记录警告信息 。相应的,有两个状态变量记录了当前和历史的文件打开信息:
mysql> show global status like ‘%open%file%’; +—————+——-+ | Variable_name | Value | +—————+——-+ | Open_files | 0 | | Opened_files | 76 | +—————+——-+ 2 rows in set (0.00 sec) MySQL为每个连接分配线程来处理,可以通过threads_connected参数查看当前分配的线程数量:
mysql> show status like ‘%thread%’; +——————————————+——-+ | Variable_name | Value | +——————————————+——-+ | Delayed_insert_threads | 0 | | Performance_schema_thread_classes_lost | 0 | | Performance_schema_thread_instances_lost | 0 | | Slow_launch_threads | 0 | | Threads_cached | 0 | | Threads_connected | 1 | | Threads_created | 1 | | Threads_running | 1 | +——————————————+——-+ 8 rows in set (0.00 sec) 比较threads_connected参数和前面提到的max_connections参数,也可以作为目前的系统负载的参照,决定是否需要修改连接数 。
查看每个线程的详细信息:mysql>show processlist;对影响系统运行的线程:kill connection|query threadid的命令杀死 。




推荐阅读