Memcached vs APC mana yang harus saya pilih? [Tutup]

161

Saya membaca artikel ini: http://www.mysqlperformanceblog.com/2006/09/27/apc-or-memcached/ dari jauh ketika .. Saya ingin mendapatkan mesin caching terbaik yang tersedia sehingga aplikasi saya sangat cepat. Tentu saja saya tidak ingin over-cache tetapi saya ingin setidaknya memilih yang terbaik di luar sana. Dalam artikel itu dikatakan Memcached lambat dan apc cepat jadi mengapa semua orang memilih memcached ?

http://framework.zend.com/manual/en/zend.cache.backends.html#zend.cache.backends.twolevels di sini dikatakan "gunakan yang cepat (tapi terbatas) seperti Apc, Memcache ... dan "lambat" seperti File, Sqlite ... "apakah Anda pikir menggunakan Apc sebagai yang cepat dan Memcache karena yang lambat itu ide yang bagus?

Thomaschaaf
sumber
14
BTW: Anda harus menggunakan APC bahkan jika Anda tidak menggunakannya apc_store. Tembolok opcode saja membuat PHP beberapa kali lebih cepat.
Kornel
@porneL: apa maksudmu? Apakah APC meningkatkan kecepatan PHP hanya setelah instalasi, bahkan jika saya tidak menambahkan kode ke cache apa pun di skrip saya?
Marco Demaio
5
@Marco Demaio: Memang. APC terutama merupakan pengoptimal PHP (dioptimalkan secara default selama diaktifkan), dan apc_store()merupakan bonus tambahan.
Kornel
3
pada tahun 2014, jika Anda hanya menggunakannya untuk melakukan caching di 1 server, gunakan APCu.
Flion

Jawaban:

268

Memcached adalah sistem caching terdistribusi, sedangkan APC tidak terdistribusi - dan terutama merupakan cache opcode.

Jika (dan hanya jika) Anda memiliki aplikasi web yang harus hidup di server web yang berbeda (loadbalancing), Anda harus menggunakan memcache untuk cache yang didistribusikan. Jika tidak, tetap gunakan APC dan cache-nya.

Anda harus selalu menggunakan opcode cache, yang merupakan APC (juga APC akan diintegrasikan ke dalam php6 iirc, jadi mengapa tidak mulai menggunakannya sekarang).

Anda dapat / harus menggunakan keduanya untuk tujuan yang berbeda.

Karsten
sumber
5
Jawaban yang menakjubkan +1. Pertanyaan saya sekarang adalah apa itu opcodecache?
Marco Demaio
4
@ Karsten Jika Anda memiliki server yang berbeda (seperti lingkungan cloud loadbalaced) selama Anda tidak perlu mempertahankan / berbagi status di atasnya, APC juga akan berfungsi dengan baik sebagai cache memori yang lurus - meskipun mungkin tidak seoptimal masing-masing cloud instance harus memanaskan cache mereka sendiri ...
Ray
35
Sebuah opcodeCache adalah salah satu yang mengkompilasi kode PHP polos ke dalam kode mesin ( "opcode") dan kemudian menyimpannya dalam bentuk dikompilasi untuk permintaan masa depan (sampai mendeteksi file PHP asli telah berubah). Ini berarti bahwa PHP tidak harus menjalankan langkah kompilasi ini pada setiap permintaan tunggal, menghemat waktu. Ini hanya salah satu cara untuk membantu memastikan situs cepat (di antara banyak lainnya).
Simon East
2
Ada tayangan slide yang menarik yang menjelaskan beberapa perbedaan dengan diagram dan tolok ukur, di sini: slideshare.net/FordAntiTrust/php-performance-with-apc-memcached
Simon East
1
Bisakah memechached digunakan dalam sistem non-terdistribusi, bukan APC? Akan lebih baik hanya menyimpan satu jika di masa depan Anda akan memiliki lebih banyak mesin. Baik? Atau gunakan keduanya, satu untuk opcode dan lainnya untuk caching yang dapat diperluas?
Adib Aroui
43

Memcached jika Anda perlu mempertahankan status di beberapa server web (jika Anda memuat secara seimbang dan penting bahwa apa yang ada di cache sama untuk semua server).

APC jika Anda hanya perlu akses ke memori cepat untuk membaca (& menulis) di server (atau masing-masing).

Ingat APC juga dapat mengkompilasi dan mempercepat waktu eksekusi skrip Anda. Jadi Anda bisa misalnya menggunakan APC untuk meningkatkan kinerja eksekusi, saat menggunakan memcached untuk penyimpanan cache.

xkcd150
sumber
3
APC dapat menyimpan cache juga .... Atau?
mr_app
7
Pembaruan 2014: PHP 5.5 akan memasukkan Zend Optimizer Plus (yang hanya untuk opcache, jadi tidak untuk cache pengguna) dan tampaknya APC tidak akan dikembangkan di luar PHP 5.4? Namun sekarang ada APCu pecl.php.net/package/APCu , yang hanya mengambil bagian cache pengguna dari APC
Flion
18

Keuntungan utama dari APC adalah cache opcode. Karena PHP 5.5 mengintegrasikan OpCache ke intinya dan APC untuk PHP 5.4 masih ditandai sebagai beta, ini bukan pengumuman resmi, tetapi pengembangan APC akan dihentikan dalam waktu dekat.

Jadi saya akan merekomendasikan Anda untuk memilih Memcached.

Hieu Vo
sumber
5
Saya telah menghabiskan berjam-jam di web untuk memikirkannya, dan saya memiliki kesimpulan yang sama.
Nicolas Zozol
9

Saya menggunakan keduanya untuk kecepatan dan yang lainnya untuk menyinkronkan semua server saya. Jika Anda menggunakan memcache maka harap ingat port terbuka yang perlu Anda blokir dengan iptables.

Saimon Lovell
sumber
6

Hai Thomaschaaf, saya harap ini bukan alat yang terlambat untuk Anda tetapi harap dicatat bahwa APC memiliki beberapa masalah yang terkait dengan "cache pengguna". Untuk mempersingkat cerita, ketika Anda mengatur batas waktu untuk entri cache, atau jika apache Anda crash di dalam kode APC internal (timeout, misalnya), maka Anda mungkin mengalami beberapa masalah.

Saya memiliki entri tentang masalah ini di sini: http://nirlevy.blogspot.com/2009/06/apc-futexwait-lockdown-make-your-apache.html , dan Anda juga harus membaca http: //t3.dotgnu. info / blog / php / user-cache-timebomb.html (dari salah satu pengembang APC saya pikir)

Nir Levy
sumber
22
Saya menemukan ini dan ingin memperbarui yang tampaknya telah diatasi sekarang (sebagaimana mestinya, 2 tahun kemudian!). Berikut ini adalah laporan bug yang tertutup, misalnya: bugs.debian.org/cgi-bin/bugreport.cgi?bug=572529
Shane H
1

Saya hanya menggunakan APC karena APC adalah kode cache dan bertindak seperti memcache! Hanya 1 file konfigurasi bukan 2.

Dan hanya 1 tempat untuk memonitor kedua cache .....

Thomas Decaux
sumber
1

Itu tergantung pada apa yang Anda lakukan tetapi untuk situs web drupal saya berjalan pada VPS, saya menemukan APC sangat bagus! Jika Anda menjalankan CentOS 6 itu tersedia sebagai pembaruan yum jadi sangat mudah untuk menginstal dan tidak ada konfigurasi karena standarnya wajar. Imho yang tidak punya otak.

fred
sumber