Seberapa baik skala WordPress?

34

Dengan WordPress baru dan fitur-fiturnya baru, sepertinya WordPress mampu lebih dari sekadar mesin blog sederhana. Tapi seberapa baik skala WordPress yang 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 bisa melakukan cache bagian dari halaman dan hanya membuat bagian yang disesuaikan pengguna, mendukung pengaturan master / slave db dan hal-hal seperti itu?

googletorp
sumber

Jawaban:

37

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 yang akan skala "out-of-the-box" ; itu semua tentang apa yang dapat Anda lakukan saat skalabilitas Anda tumbuh?

Pada ujung rendah "banyak lalu lintas" ada plugin caching yang hebat dan integrasi dengan CDNs murah Anda dapat melakukan pekerjaan yang cukup baik dengan anggaran tanpa TI dan anggaran hosting yang rendah. Berikut beberapa pertanyaan & jawaban untuk ditinjau:

Ada beberapa opsi untuk membuat profil untuk mengidentifikasi hambatan kinerja :

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

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

Dan akhirnya ada webhosting WordPress-terfokus yang muncul yang mengkhususkan diri dalam kinerja seperti WP Engine , ZippyKid dan lainnya:

Jadi kabar baiknya adalah semua timbangannya sangat bagus ; 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 untuk skala yang Anda butuhkan.

Setidaknya IMO. :)

MikeSchinkel
sumber
Terima kasih atas tanggapan menyeluruh seperti itu. Saya bertanya-tanya, bagaimana cara kerja API WordPress, melakukan caching bagian halaman - jadi Anda hanya perlu membuat bagian-bagian khusus pengguna dan bukan seluruh halaman untuk pengguna yang masuk atau menggunakan Edge Side Termasuk untuk situs dengan lalu lintas tinggi.
googletorp
Mike, kamu binatang buas! Ke mana pun saya pergi di situs ini, saya menemukan jawaban Anda dan semuanya hebat!
dgw
@googletorp : Anda pasti bisa melakukannya, hanya butuh kode kerajinan tangan. Saya ingin melihat apakah suatu kerangka kerja dapat dikembangkan untuk membuatnya lebih mudah, tetapi saya saat ini fokus pada upaya untuk mengimplementasikan bidang posting khusus yang kuat dan kaya fitur. Mungkin dalam waktu dekat. :) @ Voyagerfan5761 : Terima kasih. :)
MikeSchinkel
kiragiannis.com/cloud-computing/… Ini mungkin membawa beberapa metrik ke percakapan.
Geo
4
  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 caching lanjutan yang dimasukkan ke dalam inti. Cache cache 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-an 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 melayani 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;        
} 
PJ Brunet
sumber
0

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 loop PHP - beberapa kode plugin jelas telah diuji di 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 / posting. 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.

Dave Hilditch
sumber