it-swarm-id.com

Seberapa baik skala WordPress?

Dengan WordPress baru dan fitur-fiturnya baru, sepertinya WordPress mampu lebih dari sekadar mesin blog sederhana. Tapi seberapa baik skala WordPress digunakan oleh katakanlah 10k -> 100k pengguna per hari?

Dengan banyak pengguna itu sebagian besar akan memiliki strategi cache yang baik, tetapi seberapa baik WordPress dikembangkan untuk membantu, menjadikan ini mudah dan memberi Anda kontrol yang Anda butuhkan. Fx dapat melakukan cache bagian dari halaman dan hanya membuat bagian yang disesuaikan pengguna, mendukung pengaturan master/slave db dan hal-hal seperti itu?

34
googletorp

Jelas tidak ada skala dan juga file statis yang dilayani oleh server web cepat dan CMS apa pun yang harus mencari tahu apa yang akan dimuat dan kemudian memuatnya tidak akan berfungsi dengan baik, WordPress atau lainnya. Salah satu masalah adalah jumlah permintaan basis data yang diperlukan per permintaan URL dan 2 tahun pengalaman saya sebelumnya bekerja secara eksklusif dengan Drupal dan sekarang 2+ tahun dengan WordPress adalah bahwa WordPress jauh lebih baik di departemen itu.

Yang mengatakan, hampir tidak ada dengan kekuatan apa pun akan skala "out-of-the-box"; ini semua tentang apa yang dapat Anda lakukan saat skalabilitas Anda tumbuh?

Di bagian bawah dari "banyak lalu lintas" ada plugin caching yang bagus dan integrasi dengan CDNs murah Anda dapat melakukan pekerjaan yang cukup bagus tanpa TI. anggaran dan anggaran hosting rendah. Berikut beberapa pertanyaan & jawaban untuk ditinjau:

Ada opsi untuk profiling untuk mengidentifikasi hambatan kinerja :

Setelah kemacetan teridentifikasi, Anda dapat melakukan optimisasi lokal dengan hal-hal seperti API Transien . T&J ini memberikan contoh yang dapat dioptimalkan menggunakan Transients API dan menunjukkan caranya:

Jika Anda benar-benar ingin mencabut senjata besar Anda dapat mengkonfigurasi Memcached , HyperDB , Nginx dan/atau lebih untuk mempercepat segalanya (sepertinya yang terakhir benar-benar berkembang menjadi cara untuk mendapatkan skalabilitas yang luar biasa dari WordPress):

Dan akhirnya ada muncul hosting yang berfokus pada WordPress yang mengkhususkan pada kinerja seperti WP Engine , ZippyKid dan lain-lain:

Jadi kabar baiknya adalah semua skala dengan sangat baik ; dari ujung yang sangat rendah gratis dan mudah dengan kompleksitas teknis dan biaya hanya tumbuh seiring dengan pertumbuhan lalu lintas yang signifikan. Mulai dari yang kecil dengan WordPress dan itu akan menjadi luar biasa. Jika lalu lintas Anda tumbuh dan Anda menghasilkan uang dengan cukup baik, Anda akan merasakan efek biaya yang sangat besar terhadap skala yang Anda butuhkan.

Setidaknya IMO. :)

37
MikeSchinkel
  1. Jangan berharap banyak dari shared hosting - jangan salahkan WordPress atas kelambatan jika Anda menggunakan Host bersama. Host bersama mungkin menjejalkan 1000 akun ke satu server. Jadi, Anda dapat menghabiskan sepanjang hari mengoptimalkan akun $ 10/bulan dan itu tidak masalah. Juga perhatikan buzzword pemasaran - hanya karena dikatakan "cloud" tidak berarti Anda tidak berbagi satu server dengan 100-an atau 1000-an orang.

  2. Saya tidak berpikir plugin cache diperlukan pada saat ini. Jika Anda melihat kode sumber WP, sudah ada cache canggih yang dimasukkan ke dalam inti. Sebuah cache dari cache dari cache cache - hati-hati, ini bisa menjadi kontraproduktif.

  3. Hal utama yang memperlambat Anda adalah permintaan MySQL yang lambat dan WordPress out-of-the-box seharusnya tidak memberi Anda masalah di sini. Namun, saya harus "LIMIT" kueri komentar saya karena saya punya 50.000+ komentar. (Apakah ini sudah diperbaiki?) Juga, jika Anda melakukan sesuatu yang tidak biasa (seperti 1000 kategori?) Itu bisa menjadi masalah juga.

  4. Saya menggunakan Linode 512 dengan NginX dan "top" menunjukkan PHP dan NginX melakukan pekerjaan mereka dalam waktu kurang dari 1/100 per detik per permintaan. Hampir semua waktu CPU terkait dengan MySQL. Anda dapat menyajikan 1 juta halaman per bulan dengan Linode $ 20, tetapi begitu Anda mulai menambahkan plugins dan foto, saya pikir Anda akan membutuhkan Linode "1GB". Dari sudut pandang saya, ini cukup linier: Jika tampilan halaman ganda, cukup gandakan ukuran Linode Anda.

Penafian: Saya tidak bekerja untuk Linode.


Perbarui (~ 2 tahun kemudian) karena Anda ingin men-cache bagian dari halaman dengan PHP, berikut ini adalah solusi sederhana yang saya gunakan dengan sangat cepat. Saya menyimpan beberapa bagian/bagian terpisah per halaman dalam 1/100 detik. Sepertinya ramdisk dapat membuat ini lebih cepat tetapi banyak yang cepat untuk kebutuhan saya:

$cache_file = "./cache/portion-1". $since; // maybe round() this $since timestamp
$cache_life = 1000; // seconds to keep this cached
$filemtime = filemtime($cache_file);  // returns FALSE if file does not exist
if (!$filemtime or (time() - $filemtime >= $cache_life)) {

    // heavy lifting starts
    $output = 'Heavy!';
    // heavy lifting ends

    if (!file_put_contents($cache_file,$output,LOCK_EX)) { echo 'error'; } // save the cache    
    echo $output;

} else { 

    // load from cache
    $output = file_get_contents($cache_file); 
    echo $output;        
} 
4
PJ Brunet

Pada akhirnya ada 3 hal yang memperlambat WordPress pada skala, dan mereka bermuara pada ini:

  • Tumpukan hosting - Anda memerlukan Host yang bagus dengan perangkat lunak terbaru - PHP 7, Nginx, Varnish, Redis, fail2ban, dan PerconaDB adalah semua pilihan yang baik
  • Tidak ada pemindaian tabel - banyak plugin ditulis oleh coders amatir yang bahkan tidak tahu apa itu pemindaian tabel. Dua hal diperlukan untuk menghindari pemindaian tabel - indeks yang dapat digunakan dan permintaan yang ditulis sedemikian rupa sehingga dapat menggunakan indeks
  • Tidak ada atau beberapa pertanyaan SQL di dalam PHP loop - beberapa kode plugin hanya diuji pada situs kecil, dan untuk satu alasan atau yang lain akan berulang melalui setiap produk dalam database Anda dan membuat panggilan SQL baru untuk setiap produk /pos. Anda idealnya menginginkan kurang dari 100 kueri SQL per halaman - kedengarannya seperti banyak, tetapi tidak benar-benar dan dengan <100 Anda akan mendapatkan TTFB sekitar 200ms yang tidak di-cache.

Setelah Anda memiliki hal-hal di atas, Anda kemudian dapat menambahkan caching - mis. Varnish, CDNs, caching halaman dll.

Jika Anda perlu memperkecil, Anda dapat membuat sebuah cluster menggunakan PerconaDB XtraDB untuk database dan Unison untuk file. Dengan begitu, Anda dapat memiliki 1 node sebagai wp-admin dan cron runner, dan node lainnya melayani lalu lintas web di belakang load balancer.

0
Dave Hilditch