Bisakah Anda membantu saya dengan perencanaan kapasitas saya?

132

Ini adalah pertanyaan kanonik tentang perencanaan kapasitas

Terkait:

Saya punya pertanyaan tentang perencanaan kapasitas. Dapatkah komunitas Server Fault membantu dengan yang berikut ini:


  • Jenis server apa yang saya butuhkan untuk menangani sejumlah pengguna?
  • Berapa banyak pengguna yang dapat ditangani oleh server dengan beberapa spesifikasi ?
  • Apakah beberapa konfigurasi server cukup cepat untuk kasus penggunaan saya ?
  • Saya sedang membangun situs jejaring sosial: jenis perangkat keras apa yang saya butuhkan?
  • Berapa banyak bandwidth yang saya perlukan untuk beberapa proyek ?
  • Berapa banyak bandwidth yang akan digunakan sejumlah pengguna dalam beberapa aplikasi ?
voretaq7
sumber

Jawaban:

97

Komunitas Server Fault pada umumnya tidak dapat membantu Anda dengan perencanaan kapasitas - jawaban terbaik yang dapat kami tawarkan adalah "Benchmark kode Anda pada perangkat keras yang mirip dengan apa yang akan Anda gunakan dalam produksi, identifikasi kemacetan, kemudian tentukan berapa banyak beban kerja Anda perangkat keras saat ini dapat menangani, dan / atau berapa banyak tenaga kuda perangkat keras yang Anda butuhkan untuk menangani beban kerja target Anda " .


Ada sejumlah faktor yang berperan dalam perencanaan kapasitas yang kami tidak dapat menilai secara memadai di situs Tanya Jawab:

  • Persyaratan kode / perangkat lunak khusus Anda
  • Sumber daya eksternal (database, perangkat lunak / situs / server lain)
  • Beban kerja Anda (puncak, rata-rata, antrian)
  • Nilai bisnis dari kinerja (analisis biaya / manfaat)
  • Harapan kinerja pengguna Anda
  • Setiap perjanjian tingkat layanan / kewajiban kontrak yang mungkin Anda miliki

Melakukan analisis yang tepat pada faktor-faktor ini, dan yang lainnya, berada di luar cakupan situs tanya jawab sederhana: Mereka membutuhkan pengetahuan terperinci tentang lingkungan Anda dan persyaratan yang hanya dapat dikumpulkan oleh tim Anda (atau konsultan dengan kompensasi yang memadai) secara efisien.


Beberapa Aksioma Perencanaan Kapasitas

  1. RAM murah
    Jika Anda mengharapkan aplikasi Anda menggunakan banyak RAM, Anda harus memasukkan RAM sebanyak yang Anda mampu / pas.
  2. Disk itu murah
    Jika Anda berharap untuk menggunakan banyak disk Anda harus membeli drive besar - banyak dari mereka.
    Penyimpanan SAN / NAS lebih murah, dan biasanya juga lebih besar daripada kecil untuk menghindari peningkatan yang mahal nantinya.
  3. Beban kerja bertambah seiring waktu
    Asumsikan kebutuhan sumber daya Anda akan meningkat.
    Ingatlah bahwa peningkatannya mungkin tidak simetris (CPU dan RAM mungkin naik lebih cepat daripada disk), dan mungkin tidak linear.
  4. Listrik itu mahal
    Meskipun RAM dan disk mengalami penurunan harga yang cukup besar, biaya listrik telah naik dengan stabil. Semua disk dan RAM ekstra tersebut, belum lagi daya CPU, akan meningkatkan tagihan listrik Anda (atau tagihan yang Anda bayarkan ke penyedia Anda). Rencanakan dengan tepat.
voretaq7
sumber
1
Anda harus benar-benar menghentikannya dan menggunakan integrasi oleh bagian-bagian!
Gilles
+1. Dan RAM, seperti yang Anda sarankan dalam aksioma # 1, adalah salah satu hal yang memiliki manfaat besar. Misalnya, ini meningkatkan kemampuan Anda untuk memanfaatkan caching dengan lebih baik, yang pada gilirannya memungkinkan Anda membuat lebih sedikit kueri basis data, yang pada gilirannya meringankan beban pada disk dan CPU. Saya sering frustrasi oleh penyedia hosting yang menawarkan CPU cepat dengan server mereka dan jumlah RAM yang minimal.
Steve Wortham
31
Saya akan menambahkan ini: Kapasitas disk murah. Kinerja disk menjadi mahal. Terutama karena kita melihat pertumbuhan ukuran disk lebih dari 10 tahun, tetapi hukum fisika belum berubah. Aturan praktis yang saya gunakan (per hari ini; Juni 2014) adalah untuk kinerja optimal: 75 IOP per spindle pada SATA, 200 IOP per spindle pada FC, dan 1500 IOP per SSD. Drive SATA besar memberikan IO yang sangat buruk per rasio gigabyte.
Sobrique
Pada pertengahan 2019 tidak ada yang harus membeli drive spindle lagi.
Robert Harvey
@RobertHarvey tidak ada yang harus membeli drive spindle SAS lagi. Mendapatkan kapasitas untuk server skala petabox masih membutuhkan banyak drive SATA atau Anda akhirnya membayar banyak.
Mikko Rantalainen
44

Perencanaan Hitungan Mesin Virtual

Ketika datang untuk mencari tahu berapa banyak VM yang harus Anda rencanakan pada satu host, sebenarnya tidak ada aturan praktis yang bagus. Bahkan, hanya ada satu, dan itu hanya jenis yang baik:

Hitungan Mesin Virtual biasanya dibatasi oleh RAM, kecuali jika tidak.

Yang tidak terlalu membantu. Jika VM tersebut akan menjalankan aplikasi CPU rendah, maka limiter Anda akan didasarkan pada RAM. Setiap platform VM memiliki kemampuan sendiri untuk berlangganan RAM secara berlebihan, sehingga tidak semudah TOTAL_RAM / Per-VM-RAM = MachineCount, tetapi angka itu adalah item perencanaan yang bagus.

Tetapi bagaimana jika VM Anda melakukan hal-hal selain paket-slinging rendah-CPU?


Hitungan mesin virtual dibatasi oleh tujuh sumber daya diskrit yang tersedia untuk mesin host:

  • Hypervisor VMware, Xen, HyperV, KVM, apa pun. Masing-masing memiliki fitur yang berdampak pada hitungan mereka sendiri. Beberapa sangat bagus dalam deduplikasi halaman memori, yang lain tidak begitu banyak. Beberapa tidak mengizinkan kelebihan langganan kapasitas CPU, beberapa melakukannya.
  • CPU Core Speed Ini membatasi kinerja single-threaded maksimum yang dapat dijalankan oleh VM. 36 core dari CPU 1.8 GHz mungkin 64.8 GHz dari CPU pada sebuah host, tetapi tidak ada satu thread pun yang akan berjalan lebih cepat dari 1.8 GHz.
  • CPU Core Count Ini, dengan kecepatan inti, menggambarkan batas maksimum kinerja CPU yang dapat Anda alami.
  • RAM Sistem Seperti dijelaskan di atas, ini membatasi jumlah VM yang dapat Anda jalankan. Hypervisor tertentu lebih baik daripada yang lain di hal-hal seperti deduplikasi halaman memori, jadi jika Anda menjalankan 100 VM identik Anda dapat mengemas lebih banyak ini pada sistem deduplikasi seperti itu daripada jika Anda menjalankan 100 VM yang sama sekali berbeda.
  • Ukuran Disk Setiap gambar OS membutuhkan ruang tertentu. Anda membutuhkan ruang yang cukup untuk menyimpan semuanya. Oleh karena itu, ukuran disk memberi batas atas berapa banyak VM yang dapat Anda host.
  • I / O Bandwidth Disk yang mendasari VM memiliki maksimum pada berapa banyak I / Os per detik yang dapat ditangani. Jika Anda terlalu banyak melakukannya, sistem akan macet menunggu I / O selesai. Ini menempatkan batas atas pada berapa banyak I / O mengkonsumsi VM yang dapat Anda jalankan.
  • Bandwidth Jaringan Untuk VM yang menggunakan jaringan, bandwidth jaringan yang tersedia akan memberi batas pada berapa banyak VM yang dapat Anda jalankan pada host yang diberikan.

Semua ini bisa menjadi hal yang membuat Anda tersandung, semua tergantung pada apa yang Anda lakukan dengan VM Anda. Beberapa hal yang perlu diingat:

  • Tidak ada yang namanya sistem generik.
  • Tidak ada yang namanya server web generik , karena kode aplikasi dapat dijalankan dari penyajian gaya CDN yang hampir tidak bergerak , hingga hal-hal besar yang mendalam seperti transcoding video.
  • Tidak ada yang namanya server database generik . Ini dapat berjalan dari sistem kecil yang digunakan hanya untuk pelacakan sesi-negara, ke yang sangat besar.

Untuk mengetahui berapa banyak VM yang dapat Anda masukkan ke dalam sistem host, Anda perlu tahu bagaimana sistem Anda berjalan dan apa yang mereka butuhkan untuk berjalan dengan baik. Setelah Anda tahu itu, Anda dapat melakukan perencanaan perhitungan. Dan lebih baik lagi, cari tahu seberapa besar Anda perlu membuat sistem host Anda!

sysadmin1138
sumber
di atas segalanya, gunakan sistem berbasis vm pada dua server fisik yang terpisah dengan vm yang tidak terikat. ini memungkinkan kegagalan perangkat keras tanpa kehilangan seluruh sistem. vm dapat berpindah antar server yang identik tanpa kehilangan data. sesi hanya tersesat, lalu dibangun kembali. secara pribadi, saya akan melakukan outsourcing ke perusahaan hosting yang menawarkan layanan ini (google atau amazon). harganya mahal tetapi jauh lebih sedikit daripada menjalankannya sendiri.
Acak-IT
2
Hal yang paling sering saya lihat berukuran terlalu kecil dalam implementasi VM adalah disk I / O. Kebanyakan orang mengerti ruang disk, kecepatan CPU, dan memori. Mereka lupa tentang kinerja disk.
Dan Pritts
6

Pastikan Anda mengajukan pertanyaan yang tepat.

  • Komputer itu murah
  • Kebutuhan masa depan sangat sulit diprediksi
  • Rencanakan bagaimana mengukur, bukan apa yang harus dibeli sebelumnya

Jika Anda tidak tahu apa yang akan Anda butuhkan, itu berarti Anda tidak terlalu membutuhkannya. Jika Anda memiliki situs web panas, Anda juga mungkin memiliki tim operasi yang tahu berapa banyak ram, disk, io, jaringan dll ... yang dibutuhkan aplikasi Anda. Jika Anda berada dalam tahap bermimpi, Anda harus mulai dengan desktop dan meningkatkannya.

Pastikan Anda memiliki ide bagaimana Anda akan skala ketika hal menjadi lebih besar. Bisakah Anda menambahkan lebih banyak server di belakang load balancer? Bisakah Anda shard server redis?

Juga, memiliki pusat data Anda sendiri menyebalkan. Pusat data (meskipun hanya satu komputer) merupakan gangguan dari tujuan Anda yang sebenarnya. Anda tidak bisa hanya membeli komputer, menyalakannya, dan berjalan pergi. Anda membutuhkan pendingin udara, penyaringan udara, daya yang andal, internet yang andal, cadangan, suku cadang, ruang fisik untuk tumbuh, kapasitas daya untuk tumbuh, kabel daya yang tidak tersandung dan ada jutaan sakit kepala lainnya.

Dylan Martin
sumber