Kami memiliki server Graphite untuk mengumpulkan data melalui collectd, statsd, JMXTrans ... Sejak beberapa hari, kami sering memiliki lubang di data kami. Menggali data yang masih kita miliki, kita dapat melihat peningkatan ukuran cache karbon (dari 50K ke 4M). Kami tidak melihat peningkatan dalam jumlah metrik yang dikumpulkan (metricsReceived stabil di sekitar 300K). Kami memiliki peningkatan jumlah kueri dari 1000 menjadi 1500 rata-rata.
Anehnya, cpuUsage berkurang sedikit dari 100% (kami memiliki 4 CPU) hingga 50% ketika ukuran cache meningkat.
Anehnya lagi, kita melihat peningkatan jumlah jika oktet membaca dari disk, dan penurunan jumlah oktet yang ditulis.
Kami memiliki konfigurasi karbon sebagian besar dengan nilai default:
- MAX_CACHE_SIZE = inf
- MAX_UPDATES_PER_SECOND = 5000
- MAX_CREATES_PER_MINUTE = 2000
Jelas, sesuatu telah berubah dalam sistem kami, tetapi kami tidak mengerti apa, atau bagaimana kami dapat menemukan penyebab ini ...
Ada bantuan?
Jawaban:
Ini bukan bug tumpukan grafit, tetapi lebih merupakan hambatan IO, kemungkinan besar karena penyimpanan Anda tidak memiliki IOPS yang cukup tinggi. Karena itu, antrian terus bertambah, dan meluap pada 4M. Pada titik itu, Anda kehilangan banyak data yang antri, yang direfleksikan nanti, sebagai 'celah' acak dalam grafik Anda. Sistem Anda tidak dapat mengikuti skala di mana ia menerima metrik. Itu terus mengisi dan meluap .
Ini karena sistem Anda mulai bertukar dan CPU mendapatkan banyak 'waktu idle', karena menunggu IO.
Untuk menambahkan konteks, saya memiliki 500 IOPS yang disediakan di aws pada sistem di mana saya menerima beberapa metrik 40K. Antrian stabil di 50K.
sumber
Penjawab lain menyebutkan disket i / o bottleneck. Saya akan berbicara tentang hambatan jaringan sebagai penyebab lain dari ini.
Di lingkungan saya, kami menjalankan sekelompok server UI ujung depan (httpd, memcached); sekelompok relai lapisan tengah lainnya (karbon-c-relay yang melakukan penerusan dan agregasi); dan lapisan backend (httpd, memcached, carbon-c-relay, dan carbon-cache.) Masing-masing cluster ini terdiri dari beberapa instance dalam EC2 dan dalam proses total 15 juta metrik per menit.
Kami memiliki masalah ketika kami melihat celah untuk metrik yang dihasilkan oleh fungsi "penjumlahan" agregat, dan juga nilai agregat tidak benar (terlalu rendah). Masalahnya akan teratasi dengan memulai kembali carbon-c-relay di lapisan tengah, tetapi celah akan mulai muncul lagi setelah beberapa jam.
Kami memiliki agregasi yang terjadi di lapisan tengah dan lapisan backend (lapisan backend mengagregasi metrik agregat yang diteruskan dari lapisan tengah).
Host lapisan tengah tidak terikat cpu, tidak terikat disk, dan tidak ada batasan pada memori. Ini dikombinasikan dengan fakta bahwa masalah hanya akan muncul beberapa jam setelah memulai kembali proses relay, berarti bahwa ada hambatan jaringan. Solusi kami adalah menambahkan lebih banyak host ke lapisan tengah. Melakukan hal ini secara instan menghasilkan metrik teragregasi yang bekerja dengan benar dan tidak mengalami kesenjangan.
Tempat persis di tumpukan jaringan di mana kemacetan itu? Aku tidak bisa memberitahumu. Itu bisa saja di host linux; itu mungkin di sisi Amazon.
sumber