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 stays
Sü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-server
bu 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
ulimit
Başlangıç komut dosyasında veya kabuk ortamında ayarlayabileceğimi biliyorum , ancak bu veritabanını kesmenizi gerektiriyor.
cat limits
MySQL 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)
/proc
FreeBSD'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 /proc
monte ettikten sonra , /proc/$PID/rlimit
dosyaya bakın