mysql 如何正确设置最大连接数max_connections

数据库默认的最大连接数为mysql的最大连接数默认是100, 最大可以达到16384,如何设置该值,除了考虑平台业务程序所需要的连接数多少外,还需要根据系统的内存是否足够。根据以下的系统配置对mysql最大连接数进行设置说明:
(1)系统内存为:32G;
(2)mysql当前最大连接数为:151个
通过top -H 查看内存使用情况,如:

[poseidon@iZwz90yas4kb5ad02eyywnZ home]$ top -H
top - 11:27:15 up 1220 days,  2:51, 10 users,  load average: 0.40, 0.95, 0.77
Threads: 3860 total,   1 running, 3858 sleeping,   1 stopped,   0 zombie
%Cpu(s):  3.0 us,  1.8 sy,  0.0 ni, 94.8 id,  0.3 wa,  0.0 hi,  0.1 si,  0.0 st
KiB Mem : 32782012 total,   547572 free, 22160556 used, 10073884 buff/cache
KiB Swap:        0 total,        0 free,        0 used. 10128020 avail Mem 

  PID USER      PR  NI    VIRT    RES    SHR S %CPU %MEM     TIME+ COMMAND                                                                                          
14833 poseidon  20   0  166004   6284   1616 R  1.6  0.0   0:02.49 top                                                                                              
 2373 poseidon  20   0 4214640 664680  13360 S  1.3  2.0   1:43.28 java                                                                                             
 4957 poseidon  20   0 3192164 763476   3128 S  1.3  2.3   9224:31 java                                                                                             
14731 poseidon  20   0 4179588 642796  13640 S  1.3  2.0   0:02.20 java                                                                                             
23143 poseidon  20   0 4653384 841900  13356 S  1.3  2.6  30:04.48 java                                                                                             
29565 poseidon  20   0 4838380 904040  13068 S  1.3  2.8  32:00.54 java                                                                                             
10852 poseidon  20   0   61.8g   3.7g      0 S  1.0 11.7 812:52.99 java                                                                                             
11863 poseidon  20   0 4209288 839152   7080 S  1.0  2.6   2046:57 java                                                                                             
27929 poseidon  20   0 3958620   1.3g   3392 S  1.0  4.1   8483:52 java                                                                                             
 8891 root      10 -10  178156  54576   6376 S  0.7  0.2  64:11.48 AliYunDun                                                                                        
19510 root      20   0 3910388  76192   2052 S  0.7  0.2   1542:32 3_scheduler                                                                                      
  943 poseidon  20   0 4329760 794696   7384 S  0.3  2.4   0:52.06 java                                                                                             
  955 poseidon  20   0 4329760 794696   7384 S  0.3  2.4   5:49.79 java                                                                                             
  977 poseidon  20   0 4329760 794696   7384 S  0.3  2.4   3:18.34 java                                                                                             
 1033 poseidon  20   0 4329760 794696   7384 S  0.3  2.4 155:06.40 java                                                                                             
 2386 poseidon  20   0 4214640 664680  13360 S  0.3  2.0   0:00.37 java                                                                                             
 4973 poseidon  20   0 3192164 763476   3128 S  0.3  2.3 107:07.41 java                                                                                             
 5983 poseidon  20   0 4788860   1.6g   3516 S  0.3  5.2 920:43.43 java                                                                                             
 5984 poseidon  20   0 4788860   1.6g   3516 S  0.3  5.2 348:23.88 java                                                                                             
 5999 poseidon  20   0 4788860   1.6g   3516 S  0.3  5.2 320:08.62 java                                                                                             
 7630 poseidon  20   0  155208   2280    944 S  0.3  0.0   0:00.10 sshd                                                                                             
14989 root      10 -10  178156  54576   6376 S  0.3  0.2   0:00.23 AliYunDun                                                                                        
 9058 poseidon  20   0 4162028 369232  11504 S  0.3  1.1   0:39.55 java                                                                                             
20032 poseidon  20   0 2919580   1.7g   7268 S  0.3  5.4   0:10.21 mysqld                                                                                           
10847 poseidon  20   0   61.8g   3.7g      0 S  0.3 11.7 381:17.71 java     

查看kiB Mem:一行,total 为总的内存数(单位为kb),free为空闲的内存(单位为kb),也就是只有547572/1024=534.73mb空闲,mysql 的一个连接数就是一个线程,通常一个线程占用的内存为8mb,不过根据实际的数据来看的话,一个线程占用的内存不止8mb,如:
(3)查看centos系统一个线程占用的内存:

[root@iZwz90yas4kb5ad02eyywnZ bits]# ulimit -s
8192

(4)根据mysql的端口查看对应的进程id:

netstat -nlp|grep 5190
tcp6       0      0 :::5190                 :::*                    LISTEN      10364/mysqld

(5)根据进程id(10364)查看该进程对应的总的线程数:

[root@iZwz90yas4kb5ad02eyywnZ app]# ps hH p 10364|wc -l
142

(6)根据进程id(10364)查看该线程对应的线程情况:

注:实践证明,设置的最大连接数,不管当前实际使用的连接数为多少,mysql占用的内存都是固定的,最大连接数固定为151,不管实际使用的连接数为多少,mysql占用总的内存5.4%已经固定,转换为:32G10245.4%/151=11.72mb,按照实际的情况,一个线程占用的内存为11.72mb,所以在设置最大连接数时,需按照每增加一个连接数,就占用大于8Mb的内存,否则出现设置的最大连接数过大导致系统没有足够的空闲的内存提供,从而导致msql 服务启动不了。为使得所设置的最大连接数生效,除了考虑系统空闲内存外,还需要查看对应的打开文件数的open_files_limit 。可知,操作系统最大文件描述符限制为 1024, 在 配置文件中添加open_files_limit = 65535 实际上也没有生效

更改 MySQL 在 Linux 的最大文件描述符限制,编辑 /usr/lib/systemd/system/mysqld.service 文件,在文件最后添加:

LimitNOFILE=65535
LimitNPROC=65535

保存后,执行下面命令,使配置生效(重启mysql服务)

$ systemctl daemon-reload
$ systemctl restart mysqld.service

[root@iZwz90yas4kb5ad02eyywnZ app]#  top -H -p 10364
top - 17:40:35 up 1220 days,  9:05, 11 users,  load average: 0.14, 0.18, 0.22
Threads: 142 total,   0 running, 142 sleeping,   0 stopped,   0 zombie
%Cpu(s):  3.4 us,  1.6 sy,  0.0 ni, 94.6 id,  0.3 wa,  0.0 hi,  0.1 si,  0.0 st
KiB Mem : 32782012 total,   433412 free, 22162676 used, 10185924 buff/cache
KiB Swap:        0 total,        0 free,        0 used. 10125068 avail Mem 

  PID USER      PR  NI    VIRT    RES    SHR S %CPU %MEM     TIME+ COMMAND                                                                                                                                    
29898 poseidon  20   0 2919580   1.7g   7268 S  1.0  5.4   0:03.54 mysqld                                                                                                                                     
10385 poseidon  20   0 2919580   1.7g   7268 S  0.3  5.4 221:43.87 mysqld                                                                                                                                     
23435 poseidon  20   0 2919580   1.7g   7268 S  0.3  5.4   0:03.66 mysqld                                                                                                                                     
10364 poseidon  20   0 2919580   1.7g   7268 S  0.0  5.4   1:01.97 mysqld                                                                                                                                     
10367 poseidon  20   0 2919580   1.7g   7268 S  0.0  5.4   5:53.80 mysqld                                                                                                                                     
10368 poseidon  20   0 2919580   1.7g   7268 S  0.0  5.4  11:44.17 mysqld                                                                                                                                     
10369 poseidon  20   0 2919580   1.7g   7268 S  0.0  5.4  13:43.68 mysqld                                                                                                                                     
10370 poseidon  20   0 2919580   1.7g   7268 S  0.0  5.4  13:45.55 mysqld                                                                                                                                     
10371 poseidon  20   0 2919580   1.7g   7268 S  0.0  5.4  14:08.40 mysqld                                                                                                                                     
10372 poseidon  20   0 2919580   1.7g   7268 S  0.0  5.4  14:30.96 mysqld                                                                                                                                     
10373 poseidon  20   0 2919580   1.7g   7268 S  0.0  5.4  31:24.59 mysqld                                                                                                                                     
10374 poseidon  20   0 2919580   1.7g   7268 S  0.0  5.4  11:55.39 mysqld                                                                                                                                     
10375 poseidon  20   0 2919580   1.7g   7268 S  0.0  5.4  11:50.13 mysqld                                                                                                                                     
10376 poseidon  20   0 2919580   1.7g   7268 S  0.0  5.4  16:24.38 mysqld                                                                                                                                     
10380 poseidon  20   0 2919580   1.7g   7268 S  0.0  5.4   4:34.70 mysqld                                                                                                                                     
10381 poseidon  20   0 2919580   1.7g   7268 S  0.0  5.4   9:47.35 mysqld                                                                                                                                     
10382 poseidon  20   0 2919580   1.7g   7268 S  0.0  5.4   0:40.80 mysqld                                                                                                                                     
10383 poseidon  20   0 2919580   1.7g   7268 S  0.0  5.4  19:55.73 mysqld                                                                                                                                     
10384 poseidon  20   0 2919580   1.7g   7268 S  0.0  5.4 158:43.95 mysqld                                                                                                                                     
10386 poseidon  20   0 2919580   1.7g   7268 S  0.0  5.4   0:00.00 mysqld                                                                                                                                     
10387 poseidon  20   0 2919580   1.7g   7268 S  0.0  5.4  71:15.12 mysqld                                                                                                                                     
10388 poseidon  20   0 2919580   1.7g   7268 S  0.0  5.4   0:44.06 mysqld                                                                                                                                     
10389 poseidon  20   0 2919580   1.7g   7268 S  0.0  5.4   0:00.00 mysqld                                                                                                                                     
26752 poseidon  20   0 2919580   1.7g   7268 S  0.0  5.4   0:04.86 mysqld                                                                                                                                     
32549 poseidon  20   0 2919580   1.7g   7268 S  0.0  5.4   0:42.98 mysqld                                                                                                                                     
 7317 poseidon  20   0 2919580   1.7g   7268 S  0.0  5.4   0:02.04 mysqld                                                                                                                                     
 4632 poseidon  20   0 2919580   1.7g   7268 S  0.0  5.4   0:01.60 mysqld                                                                                                                                     
32366 poseidon  20   0 2919580   1.7g   7268 S  0.0  5.4   0:28.42 mysqld                                                                                                                                     
 4408 poseidon  20   0 2919580   1.7g   7268 S  0.0  5.4   0:16.76 mysqld                                                                                                                                     
 9484 poseidon  20   0 2919580   1.7g   7268 S  0.0  5.4   0:00.90 mysqld                                                                                                                                     
17250 poseidon  20   0 2919580   1.7g   7268 S  0.0  5.4   0:14.27 mysqld                                                                                                                                     
 6564 poseidon  20   0 2919580   1.7g   7268 S  0.0  5.4   0:35.00 mysqld                                                                                                                                     
 7302 poseidon  20   0 2919580   1.7g   7268 S  0.0  5.4   0:16.78 mysqld                                                                                                                                     
 7304 poseidon  20   0 2919580   1.7g   7268 S  0.0  5.4   0:07.55 mysqld                                                                                                                                     
13523 poseidon  20   0 2919580   1.7g   7268 S  0.0  5.4   0:08.39 mysqld                                                                                                                                     
13524 poseidon  20   0 2919580   1.7g   7268 S  0.0  5.4   0:02.86 mysqld                                                                                                                                     
30521 poseidon  20   0 2919580   1.7g   7268 S  0.0  5.4   0:00.72 mysqld                                                                                                                                     
30522 poseidon  20   0 2919580   1.7g   7268 S  0.0  5.4   0:00.59 mysqld                                                                                                                                     
30529 poseidon  20   0 2919580   1.7g   7268 S  0.0  5.4   0:00.95 mysqld                                                                                                                                     
30530 poseidon  20   0 2919580   1.7g   7268 S  0.0  5.4   0:11.08 mysqld                                                                                                                                     
30531 poseidon  20   0 2919580   1.7g   7268 S  0.0  5.4   0:13.79 mysqld                                                                                                                                     
30535 poseidon  20   0 2919580   1.7g   7268 S  0.0  5.4   0:00.42 mysqld                                                                                                                                     
30539 poseidon  20   0 2919580   1.7g   7268 S  0.0  5.4   0:00.44 mysqld                                                                                                                                     
30614 poseidon  20   0 2919580   1.7g   7268 S  0.0  5.4   0:10.07 mysqld                                                                                                                                     
30818 poseidon  20   0 2919580   1.7g   7268 S  0.0  5.4   0:00.01 mysqld                                                                                                                                     
30918 poseidon  20   0 2919580   1.7g   7268 S  0.0  5.4   0:01.93 mysqld                                                                                                                                     
31898 poseidon  20   0 2919580   1.7g   7268 S  0.0  5.4   0:00.21 mysqld                                                                                                                                     
32669 poseidon  20   0 2919580   1.7g   7268 S  0.0  5.4   0:00.01 mysqld   

在内存充足的情况下,最大连接数的设置一般为:max_used_connections / max_connections * 100% (理想值≈ 85%)即可。

上一篇:LeetCode 1319.连通网络的操作次数


下一篇:修改Mysql最大连接数