Mempersiapkan lonjakan besar dalam lalu lintas


35

Perusahaan kami akan muncul di acara TV prime time minggu ini, dan mereka mengatakan kepada kami bahwa kami dapat mengharapkan sekitar 200.000 pengunjung di situs web kami sekaligus.

Kami biasanya hanya mendapat sekitar 100 kunjungan per hari, jadi saya tidak tahu apakah kami dapat menangani lalu lintas sebanyak itu. Kami dihosting oleh 1and1.co.uk.

Adakah tindakan pencegahan yang dapat kami lakukan untuk mencegah situs kami lumpuh?


3
Sudahkah Anda membaca ini? Saya pasti akan merekomendasikan mengaktifkan layanan seperti CloudFlare untuk menangani aset statis sebagai minimum. webmasters.stackexchange.com/questions/14394/…
richhallstoke

10
Anda harus berbicara dengan 1and1.co.uk secepat mungkin! mereka dapat memindahkan situs web Anda ke salah satu layanan VPS yang ada dengan rasio cpu / ram / bandwidth tinggi yang memungkinkan lonjakan! setelah itu mereka dapat mengurangi CPU / RAM untuk menghemat uang Anda
Simon Hayter

1
Apakah Anda menggunakan paket hosting bersama dengan 1 & 1? Jika demikian, Anda benar-benar perlu melihat ke dalam solusi alternatif (VPS yang sangat kuat, atau hosting berbasis cloud) SECEPATNYA. Saya sangat meragukan lingkungan hosting bersama dapat menangani lalu lintas semacam itu.
Sean

3
Saya pernah menjadi host web. Sebagian besar host dapat menangani paku seperti ini dengan cukup mudah jika mereka tahu sebelumnya dan dapat membantu Anda dengan sejumlah host opsi yang biasanya tidak ditawarkan. Alasannya sederhana. Mereka mungkin memiliki peralatan di tangan seperti cache perangkat keras, server tambahan, opsi load-balancing, opsi fail-over, dll. Idenya adalah untuk terlihat seolah-olah mereka dapat menangani apa saja dengan anggun. Ini bagus untuk bisnis. Sebagian besar akan mengatur opsi ini tanpa biaya. Ini sebenarnya adalah bagian normal dari bisnis.
closetnoc

Anda ingin tahu bahwa ada alat untuk menguji beban server yang berat. Saya tidak tahu namanya, tetapi mudah ditemukan. Tingkatkan pengaturan dan Anda dapat memberikan diri Anda testdrive terkontrol tanpa faceplanted sendiri ketika orang-orang nyata muncul :)
Martijn

Jawaban:


26

Selama periode lalu lintas tinggi, server Anda harus dapat menangani semua permintaan yang dibuat oleh pengunjung ke situs web Anda. Tetapi ada beberapa batasan dalam koneksi bersamaan yang ditangani oleh server. Jadi yang terbaik adalah melayani permintaan halaman secepat mungkin.

Berikut adalah beberapa saran untuk dipertimbangkan dalam situasi ini,

Peningkatan tingkat aplikasi:

1. Minimalkan Permintaan HTTP untuk Mempercepat Waktu Muat Halaman.

a) Gabungkan semua file JS bersama dalam satu file JS gabungan, dan semua file CSS dalam satu file gabungan CSS.

b) Perkecil file JS, dan CSS, sehingga ukuran file akan dikurangi dan akan diunduh lebih cepat.

c) Gunakan CSS Sprite - Ketika Anda menggabungkan sebagian besar atau semua gambar Anda menjadi sprite, Anda mengubah beberapa permintaan gambar menjadi hanya satu. Kemudian Anda hanya menggunakan properti CSS gambar latar belakang untuk menampilkan bagian dari gambar yang Anda butuhkan.

d) Menunda pengunduhan gambar dengan pemuatan malas, ini akan membantu mengurangi permintaan http.

2. Siapkan halaman ringan yang mengharapkan lebih banyak kunjungan:

a) Kecualikan elemen dekoratif seperti gambar atau Flash jika memungkinkan; gunakan teks alih-alih gambar di navigasi situs dan chrome, dan letakkan sebagian besar konten dalam HTML.

b) Gunakan halaman HTML statis daripada yang dinamis; tempat terakhir memuat lebih banyak pada server Anda. Anda juga dapat melakukan cache output statis dari halaman dinamis untuk mengurangi beban server.


Peningkatan tingkat server:

1. Kurangi nilai batas waktu server dengan berkonsultasi dengan penyedia hosting Anda (tidak boleh terlalu rendah).

Ketika batas waktu lebih rendah koneksi akan segera dirilis, sehingga server akan dapat menangani lebih banyak koneksi.

2. Gunakan layanan pihak ketiga seperti CloudFlare untuk caching data statis, dan untuk melindungi situs web Anda dari pengguna jahat dan serangan seperti DDOS.

3. Tingkatkan perangkat keras server Anda - Tingkatkan memori fisik dan virtual, tingkatkan I / O dan batas proses Masuk, jika diperlukan. Penyedia hosting Anda akan dapat membantu Anda lebih baik.

4. Kode dinamis Cache - Gunakan APC untuk menyimpan opcode PHP.

5. Load Balancing - Mendistribusikan beban di beberapa server penyeimbang beban.


  • Ketika semua tindakan yang diperlukan diambil, sekarang saatnya untuk memeriksa apakah situs web siap untuk lonjakan lalu lintas yang besar.

    Ada beberapa layanan pihak ketiga seperti loadimpact.com yang menyediakan pengujian beban dengan lalu lintas yang disimulasikan. Analisis ini akan membantu Anda untuk memahami seberapa banyak beban yang dapat ditangani situs web Anda dan apa yang dapat ditingkatkan.

  • Selain itu, selama periode lonjakan lalu lintas, hindari operasi penggunaan CPU yang tinggi seperti cronjobs cadangan situs web, dll.


3
Ini semua adalah hal-hal yang berkaitan dengan situs dan luar biasa! Tetapi kecuali jika Anda telah memiliki 200.000 permintaan di server Anda sekaligus, ini mungkin tidak cukup. Sebagai host web sebelumnya, saya dulu suka memasang cache perangkat keras yang besar dan menjalankan situs memuat cache. Saya juga akan mereplikasi situs di beberapa server bahkan jika mereka dibagikan dan menerapkan load-balancing menggunakan proxy atau firewall. Itu biasanya sudah cukup. Kebanyakan orang tidak menyadari bahwa leher botol terbesar sebenarnya adalah HD I / O. Meningkatkan memori dan menggunakannya untuk cache Apache dan MySQL juga sangat membantu.
closetnoc

2
Anda dipersilakan untuk meningkatkan jawabannya! :)
Nikhil Supekar

1
Saya suka jawaban Anda! Saya memilihnya. Tolong jangan tersinggung. Saya hanya ingin menunjukkan beberapa hal dari perspektif web host. Hanya komentar. Bukan bantingan. Sekali lagi, jawaban Anda luar biasa !! Saya sering menyarankan untuk menghubungi tuan rumah karena hal-hal ini muncul dari waktu ke waktu dan ada opsi yang dapat dilakukan oleh tuan rumah yang akan membantu dan tidak memerlukan biaya apa pun. Sebagian besar tuan rumah senang atas perhatiannya! Bagi saya itu adalah proses yang sederhana karena perangkat kerasnya sudah ada. Tidak akan lama bagi saya untuk mempersiapkan situs untuk acara semacam itu. ;-) Terima kasih untuk undangan nya.
closetnoc

1
Jangan tersinggung. Sebenarnya kami benar-benar bisa menggunakan pengalaman Anda dengan perangkat keras server.
Nikhil Supekar

1
Saya telah pensiun dari industri selama lebih dari satu dekade dengan pengecualian meneliti jaringan kepercayaan. Satu hal yang saya suka adalah meningkatkan cache untuk Apache dan MySQL atau aplikasi serupa untuk mengurangi memaku sub-sistem I / O. Saya telah melakukannya di sini dan itu benar-benar dapat bekerja. Saya juga memperingatkan tentang terlalu banyak memori pada sistem sejak toko dukungan yaitu. swap file (et al.) pemeliharaan secara radikal dapat meningkatkan permintaan I / O yang cenderung lebih lambat. Ada sweet spot, tapi saya tidak tahu lagi sweet spot itu. Saya kira Anda jauh lebih ahli daripada saya. ;-)
closetnoc

7

Pertama-tama, saya akan merekomendasikan Cloudflare. Anda dapat membuat akun dasar gratis dan itu akan merutekan lalu lintas melalui pusat data lokal untuk meminimalkan jumlah hop server. Cloudflare juga bagus untuk konten caching dan memiliki perlindungan DDOS.

Selain itu, cobalah untuk memotong lemak dari lapisan layanan Anda. Pastikan Anda tidak memiliki kueri basis data yang terlalu kembung yang menghambat kode Anda, atau logika intensif CPU yang dapat disederhanakan.

Coba juga untuk men-cache kueri basis data apa pun. Beberapa opsi hebat untuk caching permintaan adalah Redis atau Memcache. OpCaching adalah pertimbangan lain jika Anda menggunakan bahasa yang tidak dikompilasi.

Tetapi mungkin yang paling penting adalah menjaga konten statis Anda (yaitu css, js, dan gambar) seoptimal mungkin. Perkecil semua Javascript Anda, gabungkan semuanya menjadi satu file jika memungkinkan. Ingat bahwa setiap file yang dimasukkan ke situs Anda, harus membuat beberapa server hop untuk menjangkau pengguna akhir.

Jangan meremehkan berapa banyak bandwidth dan waktu muat yang dapat Anda hemat melalui kompresi gambar juga!

Akhirnya, pertimbangkan untuk memantau kinerja dengan alat-alat seperti New Relic.

Semoga berhasil!!

Sumber: Salah satu pengembang untuk situs paling populer ke-12 di Inggris menurut Alexa.


5

Pertimbangkan memuat pengujian situs Anda. Ada alat gratis yang tersedia seperti JMeter , The Grinder , dan Gatling , yang dapat mensimulasikan sejumlah besar pengunjung ke situs Anda.

Dengan menguji dampak lalu lintas padat sebelumnya, Anda dapat menentukan apakah penyetelan yang Anda lakukan telah efektif, dan lihat penyetelan lebih lanjut jika tidak.


3

Jika Anda menggunakan 1and1, kemungkinan Anda sedang mencari hosting murah. Hosting murah berarti Anda cenderung melakukan semuanya dalam satu kotak. Titik sakit utama untuk hosting adalah ketika Anda meng-host semua yang ada di kotak yang sama, Anda membagi sumber daya ke bagian-bagian penting situs Anda:

  • Server web Anda (Apache, Nginx, dll)
  • Basis data Anda (MySQL, PostGreSQL, dll)

Dan menjadi 1and1 ada kemungkinan Anda menggunakan panel kontrol seperti Plesk atau cPanel, yang berarti Anda memiliki lapisan tambahan yang bersaing untuk mendapatkan sumber daya. Dan paku terakhir di peti mati Anda? Anda tidak memiliki banyak sumber daya. Anda mungkin memiliki 1 CPU (atau CPU virtual) dan RAM sangat sedikit (jika Anda memiliki lebih dari 2GB saya akan terkejut).

Ketika kami membuang 1 dan 1 kami pergi dengan penyedia hosting yang scalable (Amazon Web Services dalam kasus kami) dan kami melakukan beberapa hal yang sebelumnya tidak dapat kami lakukan.

  1. Amazon memiliki instance sendiri untuk basis data (RDS) dan karenanya basis data kami mendapatkan sumber daya untuk bernafas. Sebagian besar sistem RDBMS hidup dan menghirup RAM dan itu adalah sesuatu yang bisa kita dapatkan banyak. Sekarang Anda dapat menyediakan SSD dengan I / O tinggi juga, membuat titik tersedak DB lainnya (menulis data) tidak terlalu menyakitkan.
  2. Kami mendapat penyeimbang beban dengan 2 server web. Dengan backend DB yang lumayan, kami tidak perlu ujung depan yang tinggi jadi kami punya dua server yang lebih rendah.
  3. Kami beralih ke sesuatu yang dapat membuat mesin yang sepenuhnya dikonfigurasi sesuai permintaan. Menggunakan sesuatu seperti Chef atau Puppet, Anda dapat dengan mudah menambahkan server web baru dan 100% transparan untuk pengguna akhir Anda jika dilakukan dengan benar. AWS juga memiliki Opsworks sehingga Anda dapat membuat skrip Anda langsung ke AWS.
  4. Ubah ukuran instance Anda sesuai permintaan. Ini adalah bagian KUNCI bagi kami. Jika DB macet, saya bisa menurunkannya dan meluncurkannya kembali sebagai yang lebih besar dalam beberapa menit. Ya, itu akan melibatkan waktu henti tetapi beberapa menit waktu henti lebih baik daripada jam-jam situs yang sangat lambat. Sangat takut downtime? Simpan replika baca di sayap, lalu turunkan, alihkan ke instans yang lebih besar, promosikan untuk menguasai dan Anda menghindari waktu henti apa pun untuk biaya mesin tambahan.

AWS bukan satu-satunya game di kota (Azure, Rackspace, dll) tetapi pastikan 1and1 dapat menskala untuk memenuhi permintaan Anda.


1

Periksa dengan ISP Anda dan lihat apakah ada batas bandwidth Anda. Tingkatkan paket hosting Anda jika bandwidth tidak mencukupi untuk jumlah lalu lintas yang Anda harapkan. Anda tidak ingin menampilkan pesan "Batas Bandwidth Melebihi" kepada pengunjung Anda.


1

Dari pengalaman pribadi saya, saya tahu bahwa VPS terbaik pun memiliki keterbatasan. Saya akan menjadi orang awam sejati di sini.

Salah satu situs web olahraga kami dihosting di VPS. Selama pertandingan antara Pakistan dan India, kami menerima lebih dari 70.000 hit. Kami memiliki VPS Inmotinghosting dengan RAM 4GB dan 2. pemrosesan GHz, bandwidth 1TB, penyimpanan SSD, dan hal-hal mewah lainnya yang datang. Kami juga mengaktifkan Cloudflare versi berbayar.

Itu hanya setengah jalan melalui pertandingan dan situs web turun. Itu tidak pernah datang langsung selama pertandingan dan kami kehilangan potensi 70.000 lebih pengunjung. Kemudian kami tahu bandwidth kami terpakai dan tanpa host sumber tidak berfungsi, CDN seringkali tidak berguna.

Pelajaran: Selain mendapatkan VPS dan menyetel CND seperti Cloudflare, perkecil ukuran halaman Anda. Semakin sedikit semakin baik. Anda dapat menggunakan caching halaman dan minifikasi kode yang berguna dalam menangani lalu lintas.


1

Anda belum mendefinisikan "sekaligus" dengan sangat baik. Katakanlah Anda melihat 200.000 pengunjung unik dalam setengah jam. Itu 111 permintaan per detik, tidak memperhitungkan pengunjung akun yang mengklik dan membuka lebih banyak halaman (yang Anda inginkan, kan?).

Hal pertama yang akan saya lakukan adalah cerita Google tentang orang-orang yang menangani jumlah lalu lintas yang serupa. Banyak orang akan menulis tentang pengalaman mereka di blog mereka untuk membantu orang lain. Anda akan melihat bahwa sangat sulit untuk menemukan cerita tentang seseorang yang melakukannya di hosting bersama, dan ada alasan untuk itu. Lihatlah solusi seperti Digital Ocean atau Amazon Web Services, sebagai permulaan, menggunakan pusat data terdekat dengan audiens Anda. Dan saya setuju bahwa melepas semua sumber daya statis Anda ke CloudFlare, bahkan akun gratis, adalah ide yang bagus.

Selain itu, uji kode Anda dengan menambahkan skrip waktu ke bagian atas dan bawah halaman Anda, dengan asumsi mereka dinamis. Dengan asumsi asumsi saya tentang angka itu benar, Anda harus dapat melayani setiap halaman dalam waktu di bawah 10 milidetik untuk mempertahankan segala jenis kinerja yang dapat diterima. Jika Anda melayani semua permintaan melalui SSL secara default, nonaktifkan itu selama beberapa hari saat badai berlalu.

Juga, 200.000 terdengar sangat menakutkan, tetapi ingatlah bahwa Anda tidak perlu terlalu takut (meskipun Anda seharusnya, sedikit). Misalnya, ketika majalah Paper menerbitkan foto-foto NSFW dari Kim Kardashian, hanya butuh empat server web berukuran sedang dan Amazon ELB untuk menangani beban, menurut artikel ini (SFW). Saya pasti tidak berpikir setup Anda saat ini akan menanganinya, tetapi Anda seharusnya tidak benar-benar membutuhkan enam belas server web dengan masing-masing 48 core ditenagai oleh generator nuklir kecil mereka sendiri.


1

Ketahui pertanyaan lama ini, tetapi sangat bagus dan berharap saya mendapatkan info bagus tentang masalah ini beberapa tahun yang lalu ...

Dari waktu ke waktu kami memiliki situs (terkait aktivitas sekolah) yang ditampilkan di jaringan TV. Karena kami beroperasi dengan anggaran yang sangat ketat, "load balancing" adalah solusinya. Kotak VPS bisa didapat cukup murah hari ini dan kami hanya mirror / duplikat konten kami pada 2-3 dari mereka.

Lihatlah artikel ini dan baca tentang "round-robin".

Info lebih lanjut tentang pengujian beban dapat ditemukan di sini .

Ketika kami pertama kali mencoba menangani paku, kami hanya memiliki konten kami di 2-3 kotak VPS dan menempatkan NS mereka di pengaturan pendaftar.


0

Yang terbaik adalah memiliki dedicated server dengan multi-cluster akan menyelesaikan masalah Anda


0

Selamat mencoba menulis ulang situs web Anda, beralih penyedia dan memigrasi konten ke CDN dalam waktu kurang dari seminggu.

Seperti yang mungkin Anda sadari dari jawaban lain, ini adalah hal-hal minimum yang perlu Anda lakukan untuk menyiapkan situs Anda untuk peningkatan lalu lintas yang besar. Meskipun jika Anda saat ini berjalan di 1and1.co.uk, Anda mungkin tidak memiliki tim insinyur jaringan, DBA, programmer, dan pengoptimal depan yang kuat yang bekerja untuk Anda.

Itu tidak mungkin terjadi, kan?

Anda belum mengatakan apa yang Anda lakukan dengan situs web Anda, apakah itu menjalankan keranjang belanja atau apakah itu dapat diterapkan dengan konten statis. Jika yang terakhir adalah masalahnya, maka Anda mungkin selamat dari tsunami jika Anda mengikis seluruh situs menjadi file statis dan menerbitkannya di tempat situs biasa (lakukan backup versi saat ini terlebih dahulu).

Anda juga harus berbicara dengan 1and1 (dengan kartu kredit Anda di tangan).

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.