FreeBSD: "너무 많은 파일이 열렸습니다." 그러나 160,000개의 파일을 더 열 수 있어야 합니다.

FreeBSD: "너무 많은 파일이 열렸습니다." 그러나 160,000개의 파일을 더 열 수 있어야 합니다.

저는 ZFS를 실행하는 FreeBSD 8 시스템과 수 테라바이트까지 성장할 것으로 예상되는 약 355GB 용량의 MySQL 5.5 서버를 보유하고 있습니다.

MySQL은 /etc/hosts.allow명시적으로 사용하지는 않지만 /etc/hosts.allow사용됩니다 .호스트 액세스(3)( libwrap.a)는 여러 가지 용도로 사용됩니다.

mysqld[1234]: warning: /etc/hosts.allow, line 15: cannot open /etc/hosts.allow: Too many open files

하지만 확인해 보니 실제 한계에 도달한 것 같지는 않았습니다. 보고된 열린 파일 수는 kern.openfiles stays지속적으로 40,000개 미만이었지만 한도는 훨씬 더 높았습니다.

# sysctl -a |grep files
kern.maxfiles: 204800
kern.maxfilesperproc: 184320
kern.openfiles: 38191

# ulimit -n
184320

Openfiles는 무제한으로 설정되어야 합니다.

# grep openfiles /etc/login.conf
    :openfiles=unlimited:\

MySQL은 184320개의 파일 핸들을 열 수 있어야 한다고 말합니다.

# mysqladmin variables | grep open_files_limit
| open_files_limit                              |     184320                |

MySQL 사용자 관점에서 볼 수 있는 몇 가지 정보도 있습니다. mysql을 중지하고 /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

그리고 쉽게 참조할 수 있도록 sysctl에 대한 설명은 다음과 같습니다.

kern.maxfiles: Maximum number of files
kern.openfiles: System-wide number of open files
kern.maxfilesperproc: Maximum files allowed open per process

관련된

답변1

/etc/login.conf를 확인하고 mysql 사용자가 어떤 로그인 클래스에 할당되어 있는지 알아보세요. 이는 기본 프로세스이거나 데몬 프로세스일 수 있습니다. 사용자에 대한 제한을 변경하려면 새 클래스를 만들고 해당 클래스에 사용자를 할당하고 필요에 따라 해당 클래스의 제한을 변경한 다음 "cap_mkdb /etc/login.conf"를 실행하세요.

아직 이 기사를 읽지 않았다면 다음을 수행하십시오.http://www.freebsd.org/doc/handbook/users-limiting.htm

시스템이 시작될 때 /etc/rc에 의해 시작된 프로세스가 다음에 할당됩니다.악마로그인 클래스.

답변2

man limits.conf
일부 운영 체제에서는 일반 사용자의 보안 문제를 방지하기 위해 제한이 설정되어 있으며 , 최대 스레드 수 또는 최대 열린 파일 수와 같은 프로세스당 제한을 정의하는 이 파일의 내용을 읽는 것을 고려해야 합니다 . 거기에서 제한된 사용이 발생할 수 있습니다. /etc/security/limits.conf

관련 정보