我搜索了主题主题和测试选项,但我仍然无法增加我的mariadb服务器上的open-files-limit,该服务器用作cpanel / whm服务器的远程数据库服务器。 这是一个很好的参考 http://duntuk.com/how-raise-ulimit-open-files-and-mysql-openfileslimit
我在
中增加了它/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 虚拟内存(kbytes,-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%';
+ ------------------ + ------- +
| Variable_name |价值|
+ ------------------ + ------- +
| open_files_limit | 1024 |
+ ------------------ + ------- +
1行(0.00秒)
我在重启后反复出现以下错误
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)
答案 0 :(得分:3)
然后将其编辑为kujiy建议
return_sequences=True
不要忘记重新加载systemd服务文件:
[Service]
LimitNOFILE=320000
塞德里克
答案 1 :(得分:2)
这是操作系统问题。
我认为你必须增加/etc/security/limits.conf
中的“硬限制”,如下所示:
* hard nofile 65536
* soft nofile 16384
然后使用ulimit
来增加“软限制”。
答案 2 :(得分:2)
最后我找到了解决方案,但没有任何合理的原因! 我正在运行MariaDB 5.5并且所有设置都很好,但软限制不超过1024! 我认为我的mariadb是10.0,因为我刚刚安装了它
我发现它的5.5我试图将其升级到v10.0!然后是BOOM!没有任何额外的操作或设置解决问题(内核设置允许最大文件限制,如参考链接中所述)
我希望它可以帮助其他人解决同样的问题(但是在尝试了所有其他必需的设置之后)
答案 3 :(得分:1)
我从official repo安装了带有MariaDB 10.0.29的CentOS 7.3。
出于某种原因,systemd单元名为@Qualifier
,我必须创建mysql
:
/etc/systemd/system/mysql.service.d/oioki.conf
不要忘记在此之后运行[Service]
LimitNOFILE=500000
。
答案 4 :(得分:0)
您可以在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
虽然我认为这应该写在official manual ...
中答案 5 :(得分:0)
我在使用软件集合(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包装器脚本以root身份运行,但新的SystemD包装器脚本以“mysql”身份运行。这可能导致mysql_safe无法调用ulimit。在我的情况下,在SystemD中设置LimitNOFILE没有帮助 - 它所做的只是增加包装器的文件限制,但不是为守护进程本身。 我找到了一个让它运作的两步过程
步骤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 drop-in以root身份启动包装器(守护进程仍然以'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(新的软限制)
正确的解决方案可能是摆脱包装并使用原生SystemD。
<强>更新强> 它看起来像是在最新版本中修复的,它不再使用mysql_safe包装器
rh-mariadb101-mariadb-10.1.19-6.el7.x86_64
答案 6 :(得分:0)
要在Centos 7上增加MySQL 5.6中的打开文件限制,您必须:
nano /usr/lib/systemd/system/mysqld.service
在文件末尾添加:
LimitNOFILE=65535
LimitNPROC=65535
然后:
systemctl daemon-reload
systemctl restart mysqld
完成! ,我认为对于MariaDB来说是同一件事
答案 7 :(得分:0)
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)