Pertanyaan Squid atau Cache HTTP Lainnya dengan Cache Store SSD?


Saya berencana membuat cache squid (atau mungkin pernis) pada sistem dengan drive SSD.

Manfaat nyata adalah bahwa sistem ini memiliki kecepatan BACA yang hebat dan saya berharap rasio hit saya cukup tinggi.

Mari kita asumsikan saya dapat memasukkan 7 SSD ke konfigurasi RAID. (Ada beberapa kasus yang akan membiarkan saya berkemas lebih banyak lagi)

Pertanyaan implementasi:

  • Haruskah saya menggunakan RAID0? (Saya mengharapkan sebuah drive gagal akhirnya, jadi ini tampaknya berbahaya.)

  • Haruskah saya menggunakan RAID10? (Ini membagi jejak disk saya, yang mahal.)

  • Haruskah saya menggunakan RAID5? (SSD diketahui memiliki kinerja penulisan yang "buruk" dan batas tulis, dan semua penulisan paritas ekstra dapat memperlambat proses ini.)

  • Haruskah saya hanya memperlakukan setiap disk karena itu adalah squid datastore sendiri? (Seberapa baik cumi menangani banyak penyimpanan data? dan apa yang terjadi jika / ketika salah satu gagal?)

  • Haruskah saya mengabaikan datastore dan hanya membuat SSD ke partisi SWAP besar dan membiarkan linux VM melakukannya? (tampaknya ceroboh)

Setiap saran dari orang-orang yang menggunakan SSD di lingkungan produksi akan sangat dihargai. (terutama jika Anda menggunakannya untuk cache HTTP)


9
2018-05-29 20:41




+1 untuk pertanyaan yang menarik, saya tidak pernah mempertimbangkan membuat drive hanya menjadi partisi swap yang besar - Bob
Ya pasti menarik ... meskipun saya sangat cenderung tidak jatuh ke dalam kereta musik SSD dan hanya menambahkan lebih banyak RAM untuk uang itu. - Oskar Duveborn
Sayangnya, jejak cache yang saya butuhkan tidak akan muat dalam RAM. Saya sudah memiliki cache squid yang didukung RAM di tempat untuk benda-benda itu. - Joel K


Jawaban:


Kami telah menggunakan varnish pada drive SSD selama 9 bulan terakhir, ini telah bekerja sangat baik untuk kami. Kami sebelumnya menggunakan cache hanya memori cumi-cumi dengan lapisan ikan mas. Ini berhasil, tetapi fragmentasi memori adalah masalah nyata yang membutuhkan restart yang sering. Squid 2.x juga hanya akan menggunakan satu inti yang membuatnya agak tidak efisien pada perangkat keras saat ini.

Untuk situs kami, yang sangat ramah cache, kami melihat sekitar 10% penggunaan cpu pada mesin 8 inti yang melayani 100Mbit / detik lalu lintas. Dalam pengujian kami, kami kehabisan bandwidth sebelum kami mencapai batas cpu dengan 2 port 1Gb.

Saya punya beberapa saran untuk menjalankan varnish dengan cache ssd.

  • Kinerja menulis acak benar-benar penting. Kami mencoba beberapa vendor untuk drive ssd sebelum menetapkan pada intel x-25m. Kami telah melihat beberapa posting sesedikit .1MB / s untuk 4k random menulis, kami mendapatkan 24MB / s 4k acak menulis dengan x-25m.

  • Raid0. Cache di 2.0 tidak persisten, jadi tidak perlu khawatir tentang redundansi. Ini memang membuat istirahat kembali sakit, tetapi itu jarang terjadi. Anda dapat melakukan hal-hal seperti memuat konfigurasi baru dan membersihkan objek tanpa memulai ulang.

  • mode mmap. Sisa pernis dapat mmap'd ke file atau menggunakan ruang swap. Menggunakan swap tidak berfungsi dengan baik bagi kami, ia cenderung menggunakan lebih banyak i / o bandwidth untuk melayani jumlah lalu lintas yang sama. Ada 4 sektor readahead dalam kode swapin linux, kami menulis patch untuk menghapus ini tetapi belum mencobanya dalam produksi.

  • Penjadwal batas waktu. Dengan 2.6.28+, ini ssd sadar dan berkinerja baik. Kami mencoba noop tetapi menemukan bahwa deadline lebih adil karena i / o bandwidth menjadi terbatas.

  • Nonaktifkan membaca depan. Karena tidak ada penundaan rotasi, tidak ada gunanya membaca data tambahan hanya karena Anda mungkin membutuhkannya. i / o bandwidth sangat berharga untuk hal-hal ini.

  • Jalankan 2.6.28+. mmap dari banyak ruang di linux memberikan manajer memori latihan yang baik, tetapi patch split lru sangat membantu. Penggunaan cpu kswapd turun banyak ketika kami memperbarui.

Kami telah memposting file vcl kami serta beberapa alat yang kami gunakan dengan varnish di teks tautan. The vcl juga termasuk hack rapi menerapkan server geoiplookup yang sangat cepat berdasarkan pada database maxmind.


8
2018-06-05 06:25





Saya tidak menggunakan SSD sebagai cache HTTP, tetapi saya bisa melakukan pengamatan ini:

Tidak semua SSD sama, jadi Anda harus sangat berhati-hati memilih yang layak. FusionIO membuat SSD yang didukung PCIe yang benar-benar high-end performer (dengan kapasitas yang relatif rendah), tetapi mahal. SSD Intel X25-E SLC bekerja sangat baik, dan lebih terjangkau, tetapi kapasitasnya masih rendah. Lakukan penelitianmu! Saya pasti dapat merekomendasikan varian X25-E SLC, karena saya menggunakan ini dalam sistem produksi.

Ada SSDS lain di luar sana yang dapat memberi Anda kecepatan baca / tulis sequantial yang besar, tetapi yang penting untuk sesuatu seperti cache adalah IO acak, dan banyak SSD akan memberikan kinerja acak yang sama seperti disk yang berputar. Karena menulis efek amplifikasi pada SSD, disk yang berputar akan sering berkinerja lebih baik. Banyak SSD memiliki pengendali kualitas yang buruk (misalnya, pengendali JMicron yang lebih tua), yang dapat mengalami penurunan kinerja yang signifikan dalam beberapa situasi. Anandtech dan situs lain melakukan perbandingan yang baik dengan alat seperti iometer, periksa di sana.

Dan, tentu saja, SSDnya kecil. Intel X25-E, yang saya katakan adalah SSD SATA terbaik yang pernah saya lihat, hanya datang dalam varian 32 dan 64 GB.

Untuk level RAID, catatan kinerja RAID standar masih berlaku. Menulis ke RAID 5 secara moral melibatkan pembacaan blok data yang akan Anda modifikasi, membaca blok paritas, memperbarui paritas, menulis blok data, dan menulis paritas, sehingga masih akan memberikan kinerja yang lebih buruk daripada RAID lainnya. tingkat, bahkan dengan SSD. Namun, dengan drive seperti X25-E memiliki kinerja IO acak yang tinggi, ini mungkin kurang penting - karena akan mengungguli IO acak pada disk yang berputar untuk ukuran yang sama.

Dari apa yang saya lihat, RAID controller bandwidth jenuh terlalu cepat untuk mendapatkan manfaat maksimal dari set RAID 7 disk, setidaknya sejauh menyangkut kinerja berurutan. Anda tidak bisa mendapatkan lebih dari 800MB / s dari model kontroler SATA saat ini (3ware, pinang dll). Memiliki lebih banyak array yang lebih kecil, di beberapa kontroler (misalnya, beberapa RAID1 daripada RAID10 tunggal) akan meningkatkan ini, meskipun kinerja individu dari setiap array akan menderita.

Mengenai cache HTTP, saya pikir Anda akan lebih baik dilayani dengan array yang layak dari disk yang berputar, dan banyak ram. Objek yang sering diakses akan tetap berada di cache memori - baik di cache internal squid, atau di cache OS Anda. Cukup memberikan mesin lebih banyak ram dapat secara signifikan mengurangi pemuatan disk karena ini. Jika Anda menjalankan cache cumi besar, Anda mungkin menginginkan banyak ruang disk, dan SSD berperforma tinggi masih hanya memiliki kapasitas yang relatif rendah.


1
2018-05-29 21:15



Bahkan X25-M bisa digunakan - Pyrolistical
Saya telah melakukan pekerjaan rumah saya dan tahu untuk menghindari JMicrons. Saya kebanyakan mempertimbangkan X25-Ms (Intel MLC) dan mungkin seri OCZ Vertex yang lebih baru (non JMicron). - Joel K
wow, ocz vertex memiliki lebih rendah maksimum random write daripada x25-m !!! - Pyrolistical


Saya tidak terlalu akrab dengan drive SSD, tetapi saya dapat berbicara tentang jenis arsitektur yang saya gunakan yang dapat membantu menyelesaikan beberapa masalah Anda.

Saudara kandung

Dalam kasus saya, saya membangun empat server dengan masing-masing RAM 16GB. Saya menetapkan 9GB sebagai cache memori untuk Squid untuk digunakan. Saya mengonfigurasinya sebagai sekumpulan saudara kandung sehingga permintaan ke satu server akan meminta yang lain sebelum mencari datanya. Secara keseluruhan saya memiliki 36GB dalam cache memori. Saya tidak akan mendapatkan lebih dari empat saudara kandung ketika komunikasi di antara mereka mulai macet.

VIP

Saya mengkonfigurasi VIP untuk empat server untuk klien untuk diajak bicara. Ini memecahkan apa yang terjadi ketika satu server mati.

Anak-anak

Saya mengatur aplikasi web saya untuk menanyakan server Squid lokal yang berjalan pada 127.0.0.1. Kemudian konfigurasikan induk dari instance Squid ini menjadi VIP. Hal ini memungkinkan untuk failover yang sangat cepat jika seluruh VIP jatuh. Jika orang tua tidak merespons, si anak akan menanyakan layanan secara langsung. Ini juga berguna jika Anda menggunakan server Squid tunggal dan tidak memiliki VIP. Tentu saja jika contoh Squid lokal di server web Anda turun semuanya berhenti.

Squid sendiri

Saya belum benar-benar melihat 3.0, tetapi 2.x masih single threaded. Pada titik tertentu Anda akan kehabisan CPU atau buffer TCP. Saya akan menyebarkan cache di 2-3 kotak yang lebih sedikit jika memungkinkan. Anda juga mungkin ingin membuat rencana untuk mempartisi peternakan Squid Anda di masa depan jika Anda melihat sistem tumbuh.

Dalam hal keberuntungan dengan membangun SSD Anda. Saya tertarik untuk mendengar bagaimana hal itu terjadi karena saya mungkin akan menempuh rute itu di masa depan.


1
2018-06-12 21:50





Mengapa Anda bahkan mempertimbangkan serangan 10 atau 5. Anda menginginkan kinerja di sini. Anda tidak peduli jika drive hanya turun, karena hanya cache.

Cukup gunakan razia 0 atau jaga agar tetap terpisah. Saya pikir terpisah akan lebih baik, karena kegagalan drive tidak akan menurunkan seluruh cache Anda.


0
2018-05-29 21:17



Seberapa baik Squid pulih jika satu toko data gagal? (Jelas saya perlu menguji ini) RAID5 adalah kompromi jika Squid tidak anggun tentang kegagalan datastore. - Joel K


Dokumentasi Squid merekomendasikan tidak menggunakan RAID tetapi untuk mengatur direktori cache tambahan pada disk tambahan.


-1
2017-12-23 16:04



Harap berikan tautan ke bagian yang relevan dari dokumentasi Squid. - Andrew Schulman
wiki.squid-cache.org/SquidFaq/RAID - Amos Jeffries