我有一个运行 ZFS 的 FreeBSD 8 系统,带有一个大约 355GB 的 MySQL 5.5 服务器,预计会增长到几个 TB。
MySQL 正在触发有关“打开的文件太多”的错误/etc/hosts.allow。我们没有明确使用/etc/hosts.allow,但它被hosts_access(3) ( libwrap.a) 使用,它被很多东西使用。
mysqld[1234]: warning: /etc/hosts.allow, line 15: cannot open /etc/hosts.allow: Too many open files
Run Code Online (Sandbox Code Playgroud)
但是当我检查时似乎没有达到任何实际限制。kern.openfiles stays持续一段时间内报告的打开文件数低于 40,000,我们的限制要高得多:
# sysctl -a |grep files
kern.maxfiles: 204800
kern.maxfilesperproc: 184320
kern.openfiles: 38191
# ulimit -n
184320
Run Code Online (Sandbox Code Playgroud)
Openfiles 应设置为无限制:
# grep openfiles /etc/login.conf
:openfiles=unlimited:\
Run Code Online (Sandbox Code Playgroud)
MySQL 说它应该能够打开 184320 个文件句柄:
# mysqladmin variables | grep open_files_limit
| open_files_limit | 184320 |
Run Code Online (Sandbox Code Playgroud)
以及一些来自 MySQL 用户的信息。我停止 mysql 并 hack/usr/local/etc/rc.d/mysql-server打印出这些变量,所以这应该代表 MySQL 环境。注意数字184320和上面的一致。
# /usr/local/etc/rc.d/mysql-server.stefantest start
Starting mysql.
cpu time (seconds, -t) unlimited
file size (512-blocks, -f) unlimited
data seg size (kbytes, -d) 33554432
stack size (kbytes, -s) 524288
core file size (512-blocks, -c) unlimited
max memory size (kbytes, -m) unlimited
locked memory (kbytes, -l) unlimited
max user processes (-u) 5547
open files (-n) 184320
virtual mem size (kbytes, -v) unlimited
swap limit (kbytes, -w) unlimited
sbsize (bytes, -b) unlimited
pseudo-terminals (-p) unlimited
Run Code Online (Sandbox Code Playgroud)
而且,为了便于参考,这里是 sysctls 的描述:
kern.maxfiles: Maximum number of files
kern.openfiles: System-wide number of open files
kern.maxfilesperproc: Maximum files allowed open per process
Run Code Online (Sandbox Code Playgroud)
有关的
检查 /etc/login.conf 并找出您的 mysql 用户分配给哪个登录类。它可能是默认的或守护进程。如果您想更改用户的限制,请创建一个新类,将您的用户分配给该类,根据需要更改该类的限制,然后运行“cap_mkdb /etc/login.conf”
如果您还没有阅读本文,请阅读:http ://www.freebsd.org/doc/handbook/users-limiting.htm
系统启动时由 /etc/rc 启动的进程被分配给守护程序登录类。
| 归档时间: |
|
| 查看次数: |
5818 次 |
| 最近记录: |