Apakah mungkin untuk menjalankan pernis dengan memori dan penyimpanan disk?

8

Saya tertarik dalam memaksimalkan hit cache dan efisiensi untuk situs yang lambat berubah. Tuan rumah virtual tidak memiliki jumlah RAM yang besar, tetapi saya ingin menggunakan apa yang tersedia untuk pernis, tetapi untuk kembali ke cache disk jika tidak ada cukup memori.

Apakah mungkin untuk melakukan ini dengan satu contoh pernis? The docs menggambarkan "file" dan "malloc" storage sebagai pilihan yang berbeda.

pengguna67641
sumber

Jawaban:

9

Gunakan mallocmetodenya. Ini akan mencoba memasukkan semuanya ke dalam RAM dan kernel akan menukar jika diperlukan. Dengan cara ini Anda menggunakan memori dan disk secara bersamaan.

Pada saat yang sama filemelakukan jauh lebih baik daripada mallocketika Anda mulai memukul disk. Untuk info lebih lanjut, lihat:

Sameer
sumber
Terima kasih, ini berhasil. Saya pikir saya hanya akan menggunakan metode malloc dengan RAM yang tersedia, dan mengandalkan server untuk melakukan caching disk (mis. Apache mod_disk_cache).
user67641
1
Apakah ada cara untuk menghubungkan Varnish ke backend berbasis memori lain?
CMCDragonkai
1
Perhatikan bahwa Anda sebenarnya bisa melakukan yang sebaliknya: hanya menggunakan filebackend, dan mengandalkan caching disk Linux yang menggunakan semua memori yang tersedia secara default. Ya, Anda selalu menulis ke disk (yang mungkin menjadi masalah jika Anda tidak menggunakan SSD), tetapi saat membaca beberapa kali file yang sama, Anda akan banyak membaca dari memori saja.
Benjamin
7

Anda perlu memberi nama masing-masing penyimpanan sebagai berikut dan di vcl Anda menentukan penyimpanan backend yang ingin Anda gunakan beresp.storage = storage_name. .

Varnish 3. * pilihan proses

DAEMON_OPTS="-a :80 \
             -T localhost:6082 \
             -f /etc/varnish/default.vcl \
             -S /etc/varnish/secret \
             -s foo=malloc,512m \
             -s bar=file,/var/lib/varnish/varnish_storage.bin,512m"

vcl v3

sub vcl_fetch {
    if (req.url ~ "html") {
       set beresp.storage = "foo";
       set beresp.http.x-storage = "foo";
    } else {
       set beresp.storage = "bar";
       set beresp.http.x-storage = "bar";
    }
    return (deliver);
}

Untuk Varnish v4, Anda dapat mengikuti instruksi posting blog resmi https://info.varnish-software.com/blog/partitioning-your-varnish-cache

gemetar
sumber
Apa yang dilakukan oleh if (req.url ~ "html")kondisinya? Saya pikir OP ingin menggunakan kedua backend penyimpanan dengan cara yang paling efisien untuk semua permintaan.
kontextify