mysql报错Changed limits: max_open_files: 5000

mysql报错Changed limits: max_open_files: 5000

分类: MySQL

2018-04-08 20:39:02

OS:CentOS 7.4
DB:mysql 5.7.17
error.log日志里报错信息:
 

  1. 2018-04-08T09:52:52.641263Z 0 [Warning] Changed limits: max_open_files: 5000 (requested 50000)
  2. 2018-04-08T09:52:52.641467Z 0 [Warning] Changed limits: max_connections: 4190 (requested 10000)
  3. 2018-04-08T09:52:52.641476Z 0 [Warning] Changed limits: table_open_cache: 400 (requested 2000)

看到这个错误第一反应是去数据库查查当前的参数都是多少,和日志里提示的是一样的
 

  1. mysql> show variables like '%files%';
  2. +---------------------------+--------+
  3. | Variable_name | Value |
  4. +---------------------------+--------+
  5. | character_set_filesystem | binary |
  6. | innodb_log_files_in_group | 2 |
  7. | innodb_open_files | 400 |
  8. | keep_files_on_create | OFF |
  9. | large_files_support | ON |
  10. | open_files_limit | 5000 |
  11. +---------------------------+--------+
  12. 6 rows in set (0.00 sec)
  13.  
  14. mysql> show variables like '%connections%';
  15. +----------------------+-------+
  16. | Variable_name | Value |
  17. +----------------------+-------+
  18. | max_connections | 4190 |
  19. | max_user_connections | 0 |
  20. +----------------------+-------+
  21. 2 rows in set (0.00 sec)
  22.  
  23.  
  24. mysql> show variables like '%table_open_cache%';
  25. +----------------------------+-------+
  26. | Variable_name | Value |
  27. +----------------------------+-------+
  28. | table_open_cache | 400 |
  29. | table_open_cache_instances | 16 |
  30. +----------------------------+-------+
  31. 2 rows in set (0.01 sec)


看到是max_open_files,难道是操作系统限制了?也没有啊
 

  1. [root@iz2ze6jo3o3bqbcongnypoz mysql]# ulimit -n
  2. 65535

my.cnf文件里也没有对这些参数做修改,因为是用mysqld.service启动的,难道是这个文件的问题吗?
 

  1. [root@iz2ze6jo3o3bqbcongnypoz system]# more /usr/lib/systemd/system/mysqld.service 
  2. # Copyright (c) 2015, 2016, Oracle and/or its affiliates. All rights reserved.
  3. #
  4. # This program is free software; you can redistribute it and/or modify
  5. # it under the terms of the GNU General Public License as published by
  6. # the Free Software Foundation; version 2 of the License.
  7. #
  8. # This program is distributed in the hope that it will be useful,
  9. # but WITHOUT ANY WARRANTY; without even the implied warranty of
  10. # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
  11. # GNU General Public License for more details.
  12. #
  13. # You should have received a copy of the GNU General Public License
  14. # along with this program; if not, write to the Free Software
  15. # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
  16. #
  17. # systemd service file for MySQL forking server
  18. #
  19.  
  20. [Unit]
  21. Description=MySQL Server
  22. Documentation=man:mysqld(8)
  23. Documentation=http://dev.mysql.com/doc/refman/en/using-systemd.html
  24. After=network.target
  25. After=syslog.target
  26.  
  27. [Install]
  28. WantedBy=multi-user.target
  29.  
  30. [Service]
  31. User=mysql
  32. Group=mysql
  33.  
  34. Type=forking
  35.  
  36. PIDFile=/var/run/mysqld/mysqld.pid
  37.  
  38. # Disable service start and stop timeout logic of systemd for mysqld service.
  39. TimeoutSec=0
  40.  
  41. # Execute pre and post scripts as root
  42. PermissionsStartOnly=true
  43.  
  44. # Needed to create system tables
  45. ExecStartPre=/usr/bin/mysqld_pre_systemd
  46.  
  47. # Start main service
  48. ExecStart=/usr/sbin/mysqld --daemonize --pid-file=/var/run/mysqld/mysqld.pid $MYSQLD_OPTS
  49.  
  50. # Use this to switch malloc implementation
  51. EnvironmentFile=-/etc/sysconfig/mysql
  52.  
  53. # Sets open_files_limit
  54. LimitNOFILE = 5000


果然是...把这个参数修改为65535后,重启mysql,问题消失了。

 

  1. LimitNOFILE = 5000 这个值默认就是5000,下面这篇文档说清楚这个事了:


https://dev.mysql.com/doc/refman/5.7/en/using-systemd.html

猜你喜欢

转载自my.oschina.net/u/3367404/blog/1803093