Sepertinya sudah dianggap biasa bahwa Anda tidak boleh menggunakan Webrick sebagai server produksi, tetapi saya tidak dapat menemukan tempat yang menyebutkan alasannya. Konsensusnya tampaknya: "Webrick baik-baik saja untuk pengembangan, tetapi Thin atau Unicorn adalah pilihan untuk produksi, titik."
Saya memang mencari beranda Thin server dan berbicara tentang permintaan / detik tetapi saya tidak begitu mengerti grafik karena tidak ada anotasi.
Adakah yang bisa memberi tahu saya mengapa saya harus menggunakan Thin atau Unicorn dibandingkan dengan Webrick? Juga apakah ada manfaat menggunakan Webrick untuk pengembangan? Saya telah menggunakan Webrick karena dilengkapi dengan rel, dan saya pikir seharusnya ada alasan mengapa ini default.
Saya menggunakan Heroku.
Jawaban:
Beberapa alasan penting
Ketika saya menyebutkan pengalihan / penulisan ulang, saya mengacu pada fakta bahwa menggunakan Webrick, Anda harus menangani penulisan ulang pada lapisan yang berbeda (Rack, Sinatra, Rails, kode Webrick kustom, dll). Ini mengharuskan Anda untuk menjalankan "penangan" ruby ekstra untuk menjalankan kode penulisan ulang Anda. Untuk situs dengan lalu lintas rendah, ini mungkin baik-baik saja karena Anda mungkin memiliki proses pemanasan sebelumnya yang belum melakukan apa pun. Namun, untuk situs dengan lalu lintas yang lebih tinggi, ini adalah beban tambahan pada server untuk sesuatu yang dapat ditangani oleh server ujung depan (Apache, Nginx, dll) tanpa menjalankan Ruby *, dan mungkin lipat lebih cepat.
* misalnya, jika Anda menjalankan di belakang penyeimbang beban, Anda dapat merutekan semua lalu lintas penulisan ulang ke server yang tidak memasang ruby, dan membiarkan server utama Anda hanya mengelola lalu lintas utama. Lalu lintas penulisan ulang ini mungkin disebabkan oleh perubahan situs untuk SEO, atau sesuatu yang serupa. Kasus lain adalah situs yang memiliki banyak komponen, dan mungkin satu bagian adalah Rails, yang lainnya adalah PHP, dan penulisan ulang diperlukan untuk keduanya (yaitu menulis ulang jalur PHP lama ke Rails)
sumber
WEBrick juga tidak dapat menangani URI yang lebih lama, jika melebihi 2083 karakter, Anda akan melihat error. Tipis tidak memiliki masalah ini, yang membuatnya lebih unggul - sudah dalam pengembangan.
sumber
Saya tidak terlalu suka memperumit hal-hal sederhana dan pengoptimalan yang prematur. WEBrick dapat digunakan dalam produksi dengan syarat situs web dengan lalu lintas rendah. Sebagian besar aplikasinya adalah.
Jika situs Anda melakukan sesuatu yang membutuhkan waktu, misalnya mengirim email atau menghasilkan file PDF, Anda harus membuat WEBrick multi-threaded . Anda ingin menangani banyak permintaan sekaligus.
sumber
Ini memiliki beberapa masalah keamanan di masa lalu, tetapi tampaknya alasan utamanya adalah sangat lambat dibandingkan dengan server yang dimaksudkan untuk produksi.
sumber
Kelemahan terbesar webrick saat berjalan dalam mode produksi adalah server web proses tunggal berulir tunggal, yang berarti bahwa ia hanya mampu melayani satu permintaan http tunggal pada satu waktu.
sumber