ZFS çalıştıran ve yaklaşık 355GB'lık bir MySQL 5.5 sunucusuyla Terabytes'in bir çiftine dönüşmesi öngörülen bir FreeBSD 8 sistemim var.
MySQL, "Çok fazla açık dosya" ile ilgili hataları tetikliyor /etc/hosts.allow. Açıkça kullanmıyoruz /etc/hosts.allow, ancak birçok şey tarafından kullanılan hosts_access (3) ( libwrap.a) tarafından kullanılıyor.
mysqld[1234]: warning: /etc/hosts.allow, line 15: cannot open /etc/hosts.allow: Too many open files
Ama kontrol ettiğimde gerçek sınırlara ulaşmıyor gibi görünüyor. kern.openfiles staysSürekli bir süre içinde 40.000'in altında rapor edilen açık dosya sayısı ve sınırımız önemli ölçüde daha yüksek:
# sysctl -a |grep files
kern.maxfiles: 204800
kern.maxfilesperproc: 184320
kern.openfiles: 38191
# ulimit -n
184320
Açık dosyalar sınırsız olarak ayarlanmalıdır:
# grep openfiles /etc/login.conf
:openfiles=unlimited:\
MySQL, 184320 dosya tanıtıcılarını açabileceğini söylüyor:
# mysqladmin variables | grep open_files_limit
| open_files_limit | 184320 |
Ve MySQL kullanıcısı açısından bazı bilgiler. MySQL durdu ve /usr/local/etc/rc.d/mysql-serverbu değişkenleri yazdırmak için kesmek , bu MySQL ortamını temsil etmelidir. 184320 sayısının yukarıdakilerle tutarlı olduğunu unutmayın.
# /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
Ve kolay referans için burada sysctl'lerin açıklamaları vardır:
kern.maxfiles: Maximum number of files
kern.openfiles: System-wide number of open files
kern.maxfilesperproc: Maximum files allowed open per process
İlişkili
- Bu muhtemelen ServerFault'taki Nexenta'daki bir ZFS sorusuyla ilgilidir: MySQL neden hosts.allow / hosts.deny dosyasını açamıyor?
- FreeBSD forumlarında da bu benzer konuya bakın: [EMFILE] Çok fazla açık dosya
ulimitBaşlangıç komut dosyasında veya kabuk ortamında ayarlayabileceğimi biliyorum , ancak bu veritabanını kesmenizi gerektiriyor.
cat limitsMySQL ile çalışan ne olduğunu görmek için. Bunları anında (daha yeni çekirdeklerle) değiştirebilirsiniz: echo -n "Max open files=soft_value:hard_value" > /proc/$PID/limits(elbette kök olarak)
/procFreeBSD'de varsayılan olarak bağlanmaz, ancak kendiniz yapın sudo mount -t procfs proc /proc, procfs(5)daha fazla bilgi için bkz . Bir kez /procmonte ettikten sonra , /proc/$PID/rlimitdosyaya bakın