最新文章专题视频专题问答1问答10问答100问答1000问答2000关键字专题1关键字专题50关键字专题500关键字专题1500TAG最新视频文章推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37视频文章20视频文章30视频文章40视频文章50视频文章60 视频文章70视频文章80视频文章90视频文章100视频文章120视频文章140 视频2关键字专题关键字专题tag2tag3文章专题文章专题2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章专题3
当前位置: 首页 - 科技 - 知识百科 - 正文

MySQL的如何计算打开文件数(2)_MySQL

来源:动视网 责编:小采 时间:2020-11-09 17:59:57
文档

MySQL的如何计算打开文件数(2)_MySQL

MySQL的如何计算打开文件数(2)_MySQL:bitsCN.com 4. flush tables 后再看看 mysql>flush tables; mysql> show global status like 'open_%'; +------------------------+-------+ | Variable_name | Value | +----------
推荐度:
导读MySQL的如何计算打开文件数(2)_MySQL:bitsCN.com 4. flush tables 后再看看 mysql>flush tables; mysql> show global status like 'open_%'; +------------------------+-------+ | Variable_name | Value | +----------


bitsCN.com

  4. flush tables 后再看看

  mysql>flush tables;
  mysql> show global status like 'open_%';
  +------------------------+-------+
  | Variable_name | Value |
  +------------------------+-------+
  | Open_files | 1 |
  | Open_streams | 0 |
  | Open_table_definitions | 0 |
  | Open_tables | 0 |
  | Opened_files | 52 |
  | Opened_tables | 15 |
  +------------------------+-------+
  lsof | grep /home/mysql
  ...
  mysqld 24349 mysql 5u unix 0x000001041e8de040 4244009 /home/mysql/mysql.sock
  mysqld 24349 mysql 22u unix 0x00000102378ff980 4244128 /home/mysql/mysql.sock
  ...
  可以看到,flush 之后,所有的文件描述符都释放了。
  通过测试可以得知,另一个打开的文件描述符是 slow query log所用。
  如果是有大量的 MyISAM 表,那么就需要特别注意打开文件数是否会超出了。
  二、原理
  接下来仔细了解下这个最大文件数相关的参数:
  table_cache (新版本改成了 table_open_cache) The number of cached open tables.
  open_files_limit If this is not 0, then mysqld will use this value to reserve file descriptors to use with setrlimit().
  If this value is 0 then mysqld will reserve max_connections*5 or max_connections + table_cache*2 (whichever is larger)
  number of files.
  如果 open_files_limit 不是设置为 0,则以 setrlimit() 函数计算后的结果为准,如果设置为 0,则实际值是 max_connections*5 或 max_connections + table_cache*2 中的最大者。
  因此,想要解决打开文件数超限的问题,还需要综合系统内核(ulimit -n),mysqld自身(open_files_limit),以及表缓存数(table_open_cache)等多方面因素。
  不过,实际测试中,发现却不是这样的,open_files_limit采用了内核的最大,而非上面的计算结果。
  1. 查看内核
  ulimit -n
  65535
  2. 修改 my.cnf

  vi /etc/my.cnf
  ...
  open_files_limit = 10000
  ...
  3. 重启 mysqld
  /etc/init.d/mysql restart
  4. 查看结果

  mysql>show global variables like '%open%';
  | open_files_limit | 65535 |
  | table_open_cache | 1000 |
  5. 不设置 open_files_limit 看看

  vi /etc/my.cnf
  ...
  #open_files_limit = 10000
  ...
  重启
  /etc/init.d/mysql restart
  查看
  mysql>show global variables like '%open%';
  | open_files_limit | 65535 |
  | table_open_cache | 1000 |

bitsCN.com

文档

MySQL的如何计算打开文件数(2)_MySQL

MySQL的如何计算打开文件数(2)_MySQL:bitsCN.com 4. flush tables 后再看看 mysql>flush tables; mysql> show global status like 'open_%'; +------------------------+-------+ | Variable_name | Value | +----------
推荐度:
标签: 文件 打开 如何
  • 热门焦点

最新推荐

猜你喜欢

热门推荐

专题
Top