Lebih dari satu cluster lebih dari 12 centos 5.8 server, saya menggunakan logstash menggunakan pengirim logstash asli, yang mengirimkan /var/log/*/*.log
kembali ke server logstash pusat.
Kami mencoba menggunakan rsyslogd sebagai pengirim, tetapi karena bug dalam modul ImFile rsyslogd, jika ujung remote tidak menjawab, log akan menumpuk di memori.
Kami saat ini menggunakan Redis sebagai mekanisme transportasi, jadi logstash01 telah redis berjalan secara lokal, terikat ke IP untuk VLAN untuk log ini.
Jadi logstash-shipper mengirim ke redis di logstash01. logstash01 mengirimkan ke Elasticsearch yang berjalan dalam proses terpisah.
Inilah yang kami lihat. Elasticsearch memiliki 141 utas yang diblokir. Memutar induk elasticsearch menunjukkan:
futex(0x7f4ccd1939d0, FUTEX_WAIT, 26374, NULL
Jadi .. Tadi malam, beberapa server web (yang log-nya diekor oleh logstash) menjadi gila, dengan rata-rata memuat lebih dari 500.
Di logstash01, ini dia
Dec 19 00:44:45 logstash01 kernel: [736965.925863] Killed process 23429 (redis-server) total-vm:5493112kB, anon-rss:4248840kB, file-rss:108kB
Jadi pembunuh-OOM membunuh redis-server, yang kemudian berarti log menumpuk di memori pada server yang mengirimkan barang-barang .. Yang entah bagaimana berarti apache mendapatkan celana dalam putaran. (Terus terang, saya tidak yakin bagaimana, saya hanya berasumsi itu mengikuti log) ..
Ini adalah teori saya tentang bagaimana peristiwa terjadi:
- Kami mengalami lonjakan lalu lintas.
- Sejumlah besar log dihasilkan.
- Ini menumpuk di Redis, sebagai logstash / elasticsearch hanya tampaknya mampu menangani 300-400 peristiwa baru / detik.
- Redis telah mengisi sepenuhnya ke titik di mana pembunuh OOM membantai tanpa alasan.
- Redis berhenti menerima item baru.
- Item sekarang mulai menumpuk di sisi host jarak jauh.
- Semuanya jadi gila . Apache berhenti menerima permintaan. (Mengapa?).
Pertanyaannya adalah ini:
Mengapa apache menjadi gila jika hanya ada sesuatu yang mengekor lognya. Apakah itu hal tailing yang memblokir apache dari tulisan?
Apakah ada cara yang waras untuk membuat elasticsearch lebih cepat / lebih baik / tangguh?
Apakah ada cara yang waras untuk membuat redis tangguh dan tidak mati karena menjadi OOM
Apakah ada kelemahan mendasar dalam cara saya mengatur semuanya, atau apakah semua orang memiliki masalah ini?
- EDIT -
Beberapa spesifikasi untuk @lusis.
admin@log01:/etc/init$ free -m
total used free shared buffers cached
Mem: 7986 6041 1944 0 743 1157
-/+ buffers/cache: 4140 3845
Swap: 3813 3628 185
Filesystem Size Used Avail Use% Mounted on
/dev/sda2 19G 5.3G 13G 31% /
udev 3.9G 4.0K 3.9G 1% /dev
tmpfs 1.6G 240K 1.6G 1% /run
none 5.0M 0 5.0M 0% /run/lock
none 3.9G 0 3.9G 0% /run/shm
/dev/sda1 90M 72M 14M 85% /boot
/dev/mapper/data-disk 471G 1.2G 469G 1% /data
/dev/sda2 on / type ext3 (rw,errors=remount-ro)
proc on /proc type proc (rw,noexec,nosuid,nodev)
sysfs on /sys type sysfs (rw,noexec,nosuid,nodev)
none on /sys/fs/fuse/connections type fusectl (rw)
none on /sys/kernel/debug type debugfs (rw)
none on /sys/kernel/security type securityfs (rw)
udev on /dev type devtmpfs (rw,mode=0755)
devpts on /dev/pts type devpts (rw,noexec,nosuid,gid=5,mode=0620)
tmpfs on /run type tmpfs (rw,noexec,nosuid,size=10%,mode=0755)
none on /run/lock type tmpfs (rw,noexec,nosuid,nodev,size=5242880)
none on /run/shm type tmpfs (rw,nosuid,nodev)
/dev/sda1 on /boot type ext2 (rw)
/dev/mapper/data-disk on /data type ext3 (rw)
/data/elasticsearch on /var/lib/elasticsearch type none (rw,bind)
log01:/etc/init$ top
top - 14:12:20 up 18 days, 21:59, 2 users, load average: 0.20, 0.35, 0.40
Tasks: 103 total, 1 running, 102 sleeping, 0 stopped, 0 zombie
Cpu0 : 3.0%us, 1.0%sy, 0.0%ni, 95.7%id, 0.0%wa, 0.0%hi, 0.3%si, 0.0%st
Cpu1 : 12.0%us, 1.0%sy, 0.0%ni, 86.6%id, 0.0%wa, 0.0%hi, 0.3%si, 0.0%st
Cpu2 : 4.7%us, 0.3%sy, 0.0%ni, 94.9%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st
Cpu3 : 5.6%us, 1.3%sy, 0.0%ni, 93.0%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st
Cpu4 : 5.3%us, 1.3%sy, 0.0%ni, 93.3%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st
Cpu5 : 6.4%us, 1.0%sy, 0.0%ni, 92.3%id, 0.0%wa, 0.0%hi, 0.3%si, 0.0%st
Mem: 8178120k total, 6159036k used, 2019084k free, 761780k buffers