it-swarm-id.com

Apa cara ideal untuk profil penggunaan memori WordPress?

Kami menjalankan instance multisite WordPress di dua server Rackspace Cloud, satu web dan satu database, dengan 30 atau lebih situs saat ini. Saya telah menempatkan Nginx di depan untuk aset statis dan Apache menangani semua permintaan dinamis. Saya juga mengkonfigurasi Memcached untuk basis data dan cache kode op APC untuk PHP. W3 Total Cache diaktifkan secara default di semua situs yang kami miliki.

Ini jahat cepat dengan satu masalah: proses Apache secara teratur menimbang antara 80 dan 120 MB. Server web memiliki 2 GB memori, yang berarti saya mendapatkan 15 atau lebih proses sampai semuanya berjalan lancar. Prosesnya jelas tidak boleh sebesar itu, tetapi saya bingung mengapa itu terjadi.

Apa strategi yang baik untuk mengidentifikasi apa yang terjadi?

Terima kasih sebelumnya!

Pembaruan 10/2/10:Bagi mereka yang bertanya-tanya, resolusi masalah masalah memori dinonaktifkan PHP xdebug (tidak sengaja diaktifkan pada konfigurasi dan menyebabkan lonjakan penggunaan memori secara acak) .

8

Jumlah memori proses Apache yang Anda bicarakan (80 hingga 120 MB per proses) dapat dibagi menjadi dua alasan.

  1. Apache
  2. Wordpress

Apache

Anda dapat mengoptimalkan Apache dengan hanya memuat jumlah modul yang Anda butuhkan dan tweak optimasi lainnya yang akan mengurangi memori. Jika Anda belum mengoptimalkannya, berikan beberapa penyesuaian.

Wordpress

Wordpress hanya menghabiskan banyak memori dan tidak terlalu optimal sama sekali. Saya akan mulai dengan mengganti kelas database dengan sesuatu yang lebih baik diimplementasikan. Itu harus mendapatkan lebih banyak kecepatan dan mengurangi penggunaan memori banyak. Di samping itu saya belum banyak menyarankan. Tidak menggunakan Worpdress dianggap tidak membantu kurasa.

Strategi

Untuk mengetahui apa yang terjadi, Anda perlu melacak berapa banyak memori yang digunakan oleh permintaan wordpress. Ada fungsi penggunaan puncak get ( memory_get_peak_usage() ) yang bisa Anda gunakan untuk memantau penggunaan memori worpdress. Jika mendekati 80 - 120 MB yang Anda tulis, Anda tahu bahwa wordpress membuat Anda sakit kepala. Anda mungkin ingin mencatat cap waktu, memori puncak, waktu eksekusi dan meminta URI.

Menggunakan Nginx untuk melayani halaman wordpress yang di-cache pasti akan membantu Anda karena itu akan mencegah wordpress dari dimuat - bahkan untuk cache "inbound" seperti yang Anda gunakan. Mereka secara konseptual rusak karena mereka adalah plugin wordpress, jadi setidaknya sebagian dari wordpress perlu dimuat bahkan untuk hasil yang di-cache.

4
hakre

Daniel,

Saya dengan hormat tidak setuju dengan kenkeiter, saya mengerti menggunakan nginx sebagai proxy terbalik di depan Apache. Hukum Harvard telah sangat sukses dengan metode ini dan mereka memiliki artikel yang bagus tentang bagaimana mereka melakukan ini, dengan tautan ke plugin WordPress mereka yang membantu berinteraksi dengan nginx:

http://blogs.law.harvard.edu/djcp/2010/01/nginx-as-a-front-end-proxy-cache-for-wordpress/

Apa yang mereka temukan di Harvard Law adalah bahwa, dengan nginx pada dasarnya menyimpan semua permintaan di front-end, itu sebenarnya tidak meningkatkan kinerja untuk menggunakan plugin tipe-cache lainnya di backend, dan tidak sebanding dengan kompleksitas tambahan. Jika Anda serius menggunakan nginx dengan cara ini, saya sarankan Anda melihat artikel itu tentang pengalaman mereka dan mencoba untuk mengecilkan proses dinamis, termasuk caching sisi-WP.

Beberapa pembersihan dasar seperti melihat dengan hati-hati pada akses Apache Anda dan log kesalahan untuk melihat jenis pertanyaan apa yang sebenarnya harus dilakukan secara dinamis dan mencoba mengurangi kasus-kasus seperti itu mungkin juga merupakan awal yang baik.

1
mitcho

Nah, pertama-tama, Anda menggunakan Apache dan Nginx - agak berlebihan. Anda harus menggunakan Nginx/FastCGI w/PHP. Tutorial di situs ini akan membantu. Kalau tidak, tebakan terbaik saya adalah bahwa beberapa perubahan terbaru pada kode Anda menyebabkan beberapa bug di PHP tidak melepaskan memori dengan benar. Tidak ada alasan bahwa proses Apache harus mengkonsumsi memori sebanyak itu.

http://interfacelab.com/nginx-php-fpm-apc-awesome/

Semoga berhasil!

@kenkeiter

0
kenkeiter