저는 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
관련된
- 이는 ServerFault의 Nexenta 문제에 대한 ZFS와 관련이 있을 수 있습니다. MySQL이 호스트.allow/hosts.deny를 열 수 없는 이유는 무엇입니까?
- FreeBSD 포럼에서 비슷한 질문도 참조하세요:[EMFILE] 열려 있는 파일이 너무 많습니다.
답변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