Uploaded image for project: 'MariaDB Server'
  1. MariaDB Server
  2. MDEV-10238

Even I set max_connection in /etc/my.cnf on CentOS 7, it not work

Details

    • Bug
    • Status: Closed (View Workflow)
    • Minor
    • Resolution: Not a Bug
    • 10.1.12
    • N/A
    • OTHER
    • None
    • CentOS 7 VM

      Mariadb 10.1.12

    Description

      Hi

      I changed max_connection in /etc/my.cnf on CentOS 7 but it not work
      Could you guide me why?

      Thanks!

      My OS is Centos 7

      [root@localhost ~]# uname -a
      Linux localhost.localdomain 3.10.0-327.el7.x86_64 #1 SMP Thu Nov 19 22:10:57 UTC 2015 x86_64 x86_64 x86_64 GNU/Linux
       
      [root@localhost ~]# lsb_release -a
      LSB Version:    :core-4.1-amd64:core-4.1-noarch
      Distributor ID: CentOS
      Description:    CentOS Linux release 7.2.1511 (Core)
      Release:        7.2.1511
      Codename:       Core
       
      Mariadb version is 10.1.12
      [root@localhost ~]# rpm -qa | grep mariadb
      mariadb-10.1.12-4.el7.x86_64
      mariadb-server-10.1.12-4.el7.x86_64
      mariadb-errmsg-10.1.12-4.el7.x86_64
      mariadb-config-10.1.12-4.el7.x86_64
      mariadb-common-10.1.12-4.el7.x86_64
      mariadb-libs-10.1.12-4.el7.x86_64
      

      [root@localhost ~]# cat /etc/my.cnf
      [mysqld]
      datadir=/var/lib/mysql
      socket=/var/lib/mysql/mysql.sock
      # Disabling symbolic-links is recommended to prevent assorted security risks
      symbolic-links=0
      # Settings user and group are ignored when systemd is used.
      # If you need to run mysqld under a different user or group,
      # customize your systemd unit file for mariadb according to the
      # instructions in http://fedoraproject.org/wiki/Systemd
       
      # Added for Openstack
      bind-address = 172.16.7.195
      default-storage-engine = innodb
      innodb_file_per_table
      collation-server = utf8_general_ci
      character-set-server = utf8
       
      max_connections = 500
       
      [mysqld_safe]
      log-error=/var/log/mariadb/mariadb.log
      pid-file=/var/run/mariadb/mariadb.pid
       
      #
      # include all files from the config directory
      #
      !includedir /etc/my.cnf.d
      

      MariaDB [(none)]> show variables like 'max_connections';
      +-----------------+-------+
      | Variable_name   | Value |
      +-----------------+-------+
      | max_connections | 214   |
      +-----------------+-------+
      1 row in set (0.00 sec)
      

      Attachments

        Activity

          To be clear – to make it work for mysqld, you need to increase the soft limit; but you can only do it if your hard limit is high enough.

          elenst Elena Stepanova added a comment - To be clear – to make it work for mysqld, you need to increase the soft limit; but you can only do it if your hard limit is high enough.
          xugang_ustc@sina.com xugang added a comment -

          I checked my hard limit with -H

          seemed it is 4096

          as my soft limit is only 1024, I guess I can try to change it to 2048 first and see if settings worked

          thanks!

          xugang_ustc@sina.com xugang added a comment - I checked my hard limit with -H seemed it is 4096 as my soft limit is only 1024, I guess I can try to change it to 2048 first and see if settings worked thanks!
          xugang_ustc@sina.com xugang added a comment -

          @Elena Stepanova

          I did not know how to reopen this issue.

          But just one more question, seemed I changed soft limit to higher one, but still max_connection in /etc/my.cnf did not work

          ulimt -S -a

          [root@test11061 ~]# ulimit -S -a
          core file size (blocks, -c) 0
          data seg size (kbytes, -d) unlimited
          scheduling priority (-e) 0
          file size (blocks, -f) unlimited
          pending signals (-i) 31146
          max locked memory (kbytes, -l) 64
          max memory size (kbytes, -m) unlimited
          open files (-n) 16384
          pipe size (512 bytes, -p) 8
          POSIX message queues (bytes, -q) 819200
          real-time priority (-r) 0
          stack size (kbytes, -s) 8192
          cpu time (seconds, -t) unlimited
          max user processes (-u) 31146
          virtual memory (kbytes, -v) unlimited
          file locks (-x) unlimited

          Could you guide me how to change it permanent?

          Thanks!

          xugang_ustc@sina.com xugang added a comment - @Elena Stepanova I did not know how to reopen this issue. But just one more question, seemed I changed soft limit to higher one, but still max_connection in /etc/my.cnf did not work ulimt -S -a [root@test11061 ~] # ulimit -S -a core file size (blocks, -c) 0 data seg size (kbytes, -d) unlimited scheduling priority (-e) 0 file size (blocks, -f) unlimited pending signals (-i) 31146 max locked memory (kbytes, -l) 64 max memory size (kbytes, -m) unlimited open files (-n) 16384 pipe size (512 bytes, -p) 8 POSIX message queues (bytes, -q) 819200 real-time priority (-r) 0 stack size (kbytes, -s) 8192 cpu time (seconds, -t) unlimited max user processes (-u) 31146 virtual memory (kbytes, -v) unlimited file locks (-x) unlimited Could you guide me how to change it permanent? Thanks!
          elenst Elena Stepanova added a comment - - edited

          Please run SELECT @@open_files_limit on your MariaDB server, and compare the result with the limit you think you've set in the system.
          If @@open_files_limit is lower than that, most likely you set the limit not for the user which the server is running under (usually mysql user), or not system-wide.
          For instructions how to do it for a particular user and make it permanent, please check CentOS documentation.

          If @@open_files_limit on your running MariaDB server is indeed 16384, but you are not getting the expected value for max_connections, please attach the output of SHOW GLOBAL VARIABLES.

          elenst Elena Stepanova added a comment - - edited Please run SELECT @@open_files_limit on your MariaDB server, and compare the result with the limit you think you've set in the system. If @@open_files_limit is lower than that, most likely you set the limit not for the user which the server is running under (usually mysql user), or not system-wide. For instructions how to do it for a particular user and make it permanent, please check CentOS documentation. If @@open_files_limit on your running MariaDB server is indeed 16384, but you are not getting the expected value for max_connections , please attach the output of SHOW GLOBAL VARIABLES .
          xugang_ustc@sina.com xugang added a comment -

          Yeah, your are right

          Seemed my open file limits did not take effect

          MariaDB [(none)]> SELECT @@open_files_limit;
          --------------------

          @@open_files_limit

          --------------------

          1024

          --------------------
          1 row in set (0.00 sec)

          Strange, I did update /etc/security/limits.conf like below
          cat /etc/security/limits.conf
          ...
          root soft nofile 16384
          root hard nofile 16384

          I guess MariaDB did not use this way to update system-wide parameters in CentOS 7 as systemd used
          Checked mariadb.service file again found below info

          1. It's not recommended to modify this file in-place, because it will be
          2. overwritten during package upgrades. If you want to customize, the
          3. best way is to create a file "/etc/systemd/system/mariadb.service",
          4. containing
          5. .include /usr/lib/systemd/system/mariadb.service
          6. ...make your changes here...
          7. or create a file "/etc/systemd/system/mariadb.service.d/foo.conf",
          8. which doesn't need to include ".include" call and which will be parsed
          9. after the file mariadb.service itself is parsed.
            #
          10. For more info about custom unit files, see systemd.unit(5) or
          11. http://fedoraproject.org/wiki/Systemd#How_do_I_customize_a_unit_file.2F_add_a_custom_unit_file.3F
          1. For example, if you want to increase mysql's open-files-limit to 10000,
          2. you need to increase systemd's LimitNOFILE setting, so create a file named
          3. "/etc/systemd/system/mariadb.service.d/limits.conf" containing:
          4. [Service]
          5. LimitNOFILE=10000
          1. Note: /usr/lib/... is recommended in the .include line though /lib/...
          2. still works.
          3. Don't forget to reload systemd daemon after you change unit configuration:
          4. root> systemctl --system daemon-reload
          1. Use [mysqld.INSTANCENAME] as sections in my.cnf to configure this instance.

          Seemed we need create one directory under /etc/systemd/system/mariadb.server with file limits.conf

          I did so and restart maridb service

          Magic things happened.

          MariaDB [(none)]> SELECT @@open_files_limit
          -> ;
          --------------------

          @@open_files_limit

          --------------------

          16384

          --------------------
          1 row in set (0.00 sec)

          MariaDB [(none)]> SELECT @@max_connections;
          -------------------

          @@max_connections

          -------------------

          1000

          -------------------
          1 row in set (0.00 sec)

          It worked.

          Thanks!

          xugang_ustc@sina.com xugang added a comment - Yeah, your are right Seemed my open file limits did not take effect MariaDB [(none)] > SELECT @@open_files_limit; -------------------- @@open_files_limit -------------------- 1024 -------------------- 1 row in set (0.00 sec) Strange, I did update /etc/security/limits.conf like below cat /etc/security/limits.conf ... root soft nofile 16384 root hard nofile 16384 I guess MariaDB did not use this way to update system-wide parameters in CentOS 7 as systemd used Checked mariadb.service file again found below info It's not recommended to modify this file in-place, because it will be overwritten during package upgrades. If you want to customize, the best way is to create a file "/etc/systemd/system/mariadb.service", containing .include /usr/lib/systemd/system/mariadb.service ...make your changes here... or create a file "/etc/systemd/system/mariadb.service.d/foo.conf", which doesn't need to include ".include" call and which will be parsed after the file mariadb.service itself is parsed. # For more info about custom unit files, see systemd.unit(5) or http://fedoraproject.org/wiki/Systemd#How_do_I_customize_a_unit_file.2F_add_a_custom_unit_file.3F For example, if you want to increase mysql's open-files-limit to 10000, you need to increase systemd's LimitNOFILE setting, so create a file named "/etc/systemd/system/mariadb.service.d/limits.conf" containing: [Service] LimitNOFILE=10000 Note: /usr/lib/... is recommended in the .include line though /lib/... still works. Don't forget to reload systemd daemon after you change unit configuration: root> systemctl --system daemon-reload Use [mysqld.INSTANCENAME] as sections in my.cnf to configure this instance. Seemed we need create one directory under /etc/systemd/system/mariadb.server with file limits.conf I did so and restart maridb service Magic things happened. MariaDB [(none)] > SELECT @@open_files_limit -> ; -------------------- @@open_files_limit -------------------- 16384 -------------------- 1 row in set (0.00 sec) MariaDB [(none)] > SELECT @@max_connections; ------------------- @@max_connections ------------------- 1000 ------------------- 1 row in set (0.00 sec) It worked. Thanks!

          People

            Unassigned Unassigned
            xugang_ustc@sina.com xugang
            Votes:
            0 Vote for this issue
            Watchers:
            2 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved:

              Git Integration

                Error rendering 'com.xiplink.jira.git.jira_git_plugin:git-issue-webpanel'. Please contact your Jira administrators.