Pengaturan APC terbaik untuk mengurangi waktu eksekusi halaman

16

Saya memiliki Drupal 7, apc dengan php-fpm dan apache di belakang pernis dan 512 MB RAM.

Saya mengukur waktu eksekusi halaman dengan modul devel.

Waktu permintaan basis data rendah (62 ms) dibandingkan dengan waktu eksekusi halaman yaitu 854 ms. Itu berarti ada masalah dengan pengaturan PHP dan APC.

Pengaturan saya saat ini hanya

apc.shm_size = 64
apc.stat=1 

Bagaimana saya bisa meningkatkan?

Apa pengaturan terbaik untuk Drupal mengingat konfigurasi di atas?

Terima kasih

john
sumber

Jawaban:

12

Kami berjalan di lingkungan push SVN jadi kami hanya menghapus cache file apc dengan skrip.

Pengaturan APC:

apc.ttl=604800
apc.user_ttl=3600
apc.shm_size=192M
apc.include_once_override=1
auto_globals_jit=Off
apc.num_files_hint = 2048

apc.stat_ctime = 0
apc.file_update_protection = 2
apc.stat = 0

Script PHP:

<?php
$return = apc_clear_cache('opcode');
echo var_export($return);

604800 = 1 minggu.

Setelah ini, mendapatkan xdebug / xhprof dan menjalankan dan melakukan penggilingan cache situs harus memberi tahu Anda apa yang memperlambat situs. Singkatnya menganalisis output menggiling cache adalah cara terbaik untuk mempercepat Drupal. Di bawah ini saya daftar tambalan dan modul apa yang kami gunakan untuk mempercepatnya; dalam kasus Anda kemungkinan besar akan berbeda.

Drupal 6 Jawaban Spesifik Di Bawah Ini

Setelah Anda melewati titik ini dan menyadari bahwa APC tidak akan memberi Anda apa yang Anda cari, beralihlah ke aliran tekan dan berikan tambalan ini pusaran:

Coba juga beberapa modul ini karena mereka meningkatkan kecepatan situs kami secara besar-besaran:

mikeytown2
sumber
Terima kasih banyak atas jawaban Anda, tetapi saya memiliki Drupal 7.
john
Jadi ambil bagian APC dan bagian xdebug / xhprof dan lihat tambalan D6 sebagai contoh apa yang harus dicari dalam antrian do issue. Semua tambalan di atas di mana hasil dari melihat cache menggiling, menemukan titik sakit dan menemukan masalah yang sesuai untuk itu.
Mulai
Ada kinerja drupal 7 wiki sekarang: groups.drupal.org/node/210683
mikeytown2
1
Hanya FYI, saya harus mengomentari baris apc.include_once_override = 1 karena merusak situs puregin.org/node/2550/3928
corbacho
php.net/apc.configuration#ini.apc.include-once-override Terima kasih telah menunjukkannya. Tergantung pada versi PHP dan APC, ini dapat menyebabkan masalah
mikeytown2
3

Ini adalah salah satu dari mereka "berapa lama sepotong pertanyaan string".

Apa yang baik untuk situs volume tinggi mungkin tidak sama untuk situs volume rendah dengan banyak modul, dan mungkin tidak sama untuk situs volume menengah dengan hanya beberapa modul yang diaktifkan. Situs lain yang berjalan di server mungkin juga memakan memori yang disediakan APC.

Titik awal saya adalah

apc.enabled=1
apc.shm_segments=1
apc.shm_size=64
apc.ttl=7200
apc.user_ttl=7200
apc.num_files_hint=1024
apc.mmap_file_mask=/tmp/apc.XXXXXX
apc.enable_cli=1
apc.rfc1867=1

Saya kemudian menyesuaikan pengaturan untuk server, tetapi sekali lagi, tidak ada satu ukuran cocok untuk semua pengaturan.

Temukan apc.php (mungkin terletak di /usr/share/pear/apc.php), dan pasang di DOCROOT untuk pemasangan Drupal Anda. Kunci ke alamat IP Anda melalui konfigurasi Apache. Edit nama pengguna / kata sandi di dalamnya, lalu ramban ke sana. Anda kemudian akan melihat statistik APC Anda.

Konfigurasikan ulang parameter shm_size untuk meminimalkan kesalahan cache. Idealnya, Anda ingin memberikannya memori yang cukup untuk tidak pernah memiliki cache miss untuk suatu file, ditambah beberapa memori tambahan untuk cache pengguna APC.

Optimalkan TTL untuk mencegah pengadukan cache. Jika Anda tidak mengedit file, Anda dapat menambah nomor ini.

enable_cli berguna ketika Anda banyak menggunakan drush, sehingga drush menggunakan file cache dari APC.

rfc1867 berguna untuk mengunggah file.

Saya juga memperhatikan php-fpm pada judulnya. Ini memperumit masalah, dan benar-benar di luar cakupan Jawaban Drupal. Anda mungkin mendapatkan respons yang lebih baik di Server Fault , karena banyak pengaturan konfigurasi sistem tidak berkaitan dengan Drupal secara langsung.

mpdonadio
sumber
di mana ada tutorial bagus yang menjelaskan dalam bahasa yang mudah apa yang dilakukan masing-masing pengaturan, seperti TTL, segmen, dll? bagaimana cli membantu dengan mabuk?
john
Bisakah Anda jelaskan bagaimana "traffic saya dapatkan, apa lagi yang berjalan di server, modul apa yang saya instal, dll." mempengaruhi pengaturan? terima kasih
john
pengaturan di atas tidak banyak membantu. Haruskah saya mencoba xhprof untuk melihat apa yang terjadi dengan php?
john
Semua pengaturan APC dijelaskan di php.net/manual/en/apc.configuration.php
mpdonadio
1
@MPD> enable_cli berguna ketika Anda banyak menggunakan drush, sehingga drush menggunakan> file yang di-cache dari APC. Sebenarnya, cli adalah proses terpisah dan tidak membagikan cache apc-nya dengan apache, atau bahkan di antara panggilan-panggilan untuk drush.
Robin Millette
2

APC hanya meningkatkan pemuatan dan penguraian file PHP. Sebagian besar juga merupakan waktu pelaksanaannya sendiri. Ada banyak faktor yang dapat menambah waktu eksekusi, termasuk bug (terutama bug yang berhubungan dengan cache), overhead internal (misalnya drupal_alter (), module_implements ()) dan sebagainya.

Seperti yang Anda tanyakan dan sudah disarankan oleh mikeytown2, saya akan menggunakan xhprof (saya lebih suka xdebug hari ini karena memberikan akses langsung dan cepat ke hasil dan tidak memerlukan alat tambahan) untuk mencari tahu di mana kemacetan Anda.

Saya baru-baru ini menulis dua posting blog tentang menggunakan xhprof di dalam Drupal dan hambatan umum , yang mungkin menarik bagi Anda.

Berdir
sumber
groups.drupal.org/node/82889 PHP profiling dengan XHprof
john