无法在centos7上增加mariadb 10中的打开文件限制

7jmck4yq  于 2022-11-08  发布在  其他
关注(0)|答案(9)|浏览(141)

我搜索了主题主题并测试了选项,但我仍然无法增加我的mariadb服务器上的打开文件限制,该服务器被用作cpanel/whm服务器的远程数据库服务器。
我把它增加了

/etc/my.cnf 

open-files-limit=65550

这里是一些结果


# ulimit -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) 63471
    max locked memory       (kbytes, -l) 64
    max memory size         (kbytes, -m) unlimited
    open files                      (-n) 65535
    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

最大用户进程数(-u)65535虚拟内存(KB,-v)无限制文件锁定数(-x)无限制


# ulimit -Hn -Sn

open files                      (-n) 65535
open files                      (-n) 65535

cat /etc/systemd/system/mariadb.service.d/limits.conf 
[Service]
LimitNOFILE=65500

cat /usr/lib/systemd/system/mariadb.service

[Unit]
Description=MariaDB database server
After=syslog.target
After=network.target

[Service]
Type=simple
User=mysql
Group=mysql
LimitNOFILE=infinity
LimitMEMLOCK=infinity

但在mysql中我仍然得到
显示全局变量,如“open %”;
+-————————————————-+-—————-+
| 变量名称(_N)|数值|
+-————————————————-+-—————-+
| 打开文件限制|小行星10|
+-————————————————-+-—————-+
一组中的1行(0.00秒)
和im得到以下错误后,重新启动一遍又一遍

60108 16:30:02 [ERROR] mysqld: Can't open file: './username_wp/wp_users.frm' (errno: 24)
160108 16:30:02 [ERROR] Error in accept: Too many open files
160108 16:30:04 [ERROR] Error in accept: Too many open files
160108 16:30:06 [ERROR] Error in accept: Too many open files
160108 16:30:11 [ERROR] mysqld: Can't open file: './username_db/strikes.frm' (errno: 24)

这是mariadb的启动日志

[Warning] Could not increase number of max_open_files to more than 1024 (request: 132107)
vxbzzdmp

vxbzzdmp1#

RH/CentOS mariadb集成是安静的混乱,在一些地方使用mariadb作为它的名字,mysqld在其他地方...
您应该在/etc/systemd/system/mariadb.service.d/中编辑(或创建)一个.conf文件,例如:/etc/系统管理员/系统管理员/系统管理员/系统管理员
然后按照kujiy的建议编辑它

[Service]
LimitNOFILE=320000

不要忘记重新加载systemd服务文件:
# systemctl daemon-reload
塞德里克

tct7dpnv

tct7dpnv2#

这是操作系统问题。
我认为您必须增加/etc/security/limits.conf中的“硬限制”,如下所示:


* hard nofile 65536
* soft nofile 16384

则使用ulimit来增加“软限制”。

mpgws1up

mpgws1up3#

最后,我找到了解决方案,但没有任何合理的原因!我正在运行MariaDB 5. 5和所有设置的地方罚款,但软限制没有超过1024!我想我的mariadb是10. 0,因为我刚安装它
在我发现它的5. 5之后,我试图将它升级到v10. 0!然后砰的一声!问题解决了,没有任何额外的操作或设置(内核设置允许最大文件限制,如参考链接中所述)
我希望它能帮助其他有同样问题的人(但在尝试所有其他所需的设置后)

uttx8gqw

uttx8gqw4#

您可以在mariadb.service文件中看到官方说明;

[root@db1 system]# cat /usr/lib/systemd/system/mariadb.service | grep exam -A 5

# For example, if you want to increase mariadb'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

虽然我认为这应该写在官方手册上...

kdfy810k

kdfy810k5#

我从official repo安装了带有MariaDB 10.0.29的CentOS 7.3。
出于某种原因,systemd单元被命名为mysql,我不得不创建/etc/systemd/system/mysql.service.d/oioki.conf

[Service]
LimitNOFILE=500000

不要忘记在此之后运行systemctl daemon-reload

rnmwe5a2

rnmwe5a26#

open_files_limit是取决于下一个参数的动态值:


# my.cnf file

# max connections

max_connections = 64

# table_open_cache = max_connections * tables used in one transaction + 5

table_open_cache = 800

# table_definition_cache = all tables(50) + max_connections + 5

table_definition_cache = 400

# open_files_limit = table_open_cache * 1.4

open_files_limit = 1120

要检查open_files_limit的值,请在mysql中运行以下命令:

mysql> select @@open_files_limit;

...它将输出:

+--------------------+
| @@open_files_limit |
+--------------------+
|              12903 |
+--------------------+
1 row in set (0.000 sec)
unhi4e5o

unhi4e5o7#

我在运行带有软件集合(SCL)和SystemD的RedHat Enterprise Linux 7.2时遇到了这个问题

rh-mariadb100-mariadb-server-10.0.20-1.el7.x86_64

在我的情况下,硬限制是可以的,但软限制停留在1024
新老总结

old : RHEL6.x : MySQL : init.d : mysql_safe : 'root', mysqld : 'mysql'
new : RHEL7.x : MariaDB : SystemD : mysql_safe : 'mysql', mysqld 'mysql'

请注意,旧的initl.d Package 器脚本以root用户身份运行,而新的SystemD Package 器脚本以'mysql'身份运行。这可能会导致mysql_safe不调用ulimit。在我的例子中,在SystemD中设置LimitNOFILE没有帮助-它所做的只是增加 Package 器的文件限制,而不是守护进程本身。我发现了一个两步的过程来让它工作
步骤1 -将mysqld_safe部分重新插入到conf文件中,以便mysql_safe可以读取它

sudo vi /etc/opt/rh/rh-mariadb100/my.cnf.d/mariadb-server.cnf
[mysqld_safe]
open_files_limit=2048

第2步-创建一个SystemD插件,以root身份启动 Package 器(守护进程仍将以“mysql”身份运行)。注意,LimitNOFILE被注解掉了。

/etc/systemd/system
mkdir rh-mariadb100-mariadb.service.d
cd rh-mariadb100-mariadb.service.d
vi limits.conf
[Service]

# LimitNOFILE=2048

User=
Group=

重新加载SystemD服务文件

systemctl daemon-reload

现在重新启动服务,检查mysql客户端中open_files_limit的值,现在应该显示为2048(新的软限制)
正确的解决方案可能是去掉 Package 器并使用本机SystemD。

UPDATE看起来这个问题在更新的版本中得到了修复,该版本不再使用mysql_safe Package 器

rh-mariadb101-mariadb-10.1.19-6.el7.x86_64
s8vozzvw

s8vozzvw8#

要在Centos 7上增加MySQL 5.6中的打开文件限制,您必须:

nano /usr/lib/systemd/system/mysqld.service

在文件末尾添加:

LimitNOFILE=65535
LimitNPROC=65535

然后:

systemctl daemon-reload
systemctl restart mysqld

完成了!,我假设对于MariaDB来说是一样的

qqrboqgw

qqrboqgw9#

确保以下位置中不存在其他文件:/etc/systemd/system/mariadb.service.d文件夹可能限制了文件的数量。这是我的情况,有另一个文件正在减少我设置的限制:)

相关问题