it-swarm-id.com

Apa yang dikontribusikan semua untuk drupal waktu eksekusi halaman?

Saya memiliki situs yang saya selidiki yang memiliki masalah kinerja utama, dengan menggunakan memcache saya dapat menurunkan jumlah permintaan baik dalam jumlah maupun waktu total pengerjaan (dari 3 detik hingga 230 ms) tetapi waktu eksekusi halaman sulit dihindarkan (saya melihat nilai-nilai yang dihasilkan oleh devel) pengertian saya adalah bahwa waktu eksekusi halaman = waktu yang dibutuhkan untuk mengeksekusi php maka saya menginstal APC dan saya dapat melihat php opcode di-cache dan statistik menunjukkan hit di panel kontrol APC (apc.php dikirimkan bersama APC) tetapi waktu eksekusi halaman saya tidak turun. Jadi saya pikir pertanyaan saya ada dua:

  • Apa yang dikontribusikan semua untuk (lebih lambat) waktu eksekusi halaman? Apakah ini hanya waktu yang dibutuhkan untuk menjalankan php?
  • Pendekatan apa yang harus saya ambil untuk menurunkan waktu eksekusi halaman. Saya mencoba APC tetapi tidak banyak membantu

P. S Jumlah modul yang digunakan di situs ini sangat besar (168) tetapi saat ini saya tidak dalam posisi untuk membuat rekomendasi itu, ini lebih seperti api dalam situasi lubang.

Edit: Keluaran menjalankan xhprof pada instance lokal (direkomendasikan oleh mikeytown), ini sepertinya gila Saya pikir hasilnya nanti karena meronta-ronta? menjalankan diff untuk url yang sama memiliki perbedaan drastis dan terlalu banyak penggunaan sumber daya. Juga tidak yakin mengapa ini menunjukkan nilai yang bukan dari hari ini: | (Saya baru saja menginstal xhprof di laptop ini)

Output of running xhprof on local instance

16
Dipen

Dapatkan cachegrind dari situs Anda. xdebug atau xhprof dapat menghasilkan satu. Ini akan memberi tahu Anda fungsi apa yang paling lama berjalan. Sampai Anda melakukan ini, ini adalah permainan menebak yang buruk.

4
mikeytown2

EDIT: Saya salah membaca posting asli. 168 modul banyak, dan 300 hingga 700 ms dari query SQL adalah besar. Semakin banyak modul yang akan Anda gunakan, semakin banyak permintaan mereka begitu modul melakukannya.

Gunakan caching agresif selagi Anda bisa, cache semuanya, jika tidak cukup, coba cache proxy terbalik. Menggunakan CDN untuk file dapat sangat meningkatkan semuanya. Cache proksi terbalik juga dapat membantu Anda dengan menghapus beberapa cookie autentik ketika mengenai halaman yang tidak membutuhkannya (maka core akan berpikir pengguna anonim untuk itu dan memaksimalkan caching).


The Drupal dinamisme inti membuat seluruh fajar melambat segera setelah Anda memiliki terlalu banyak modul yang berinteraksi pada saat yang sama.

Saya akan mengatakan, misalnya, jika Anda menggunakan banyak modul yang memuat data pada waktu hook_node_load () alih-alih menggunakan bidang, itu akan membuat banyak pertanyaan sementara penggunaan bidang akan memastikan efisiensi caching.

Rendering dapat mengambil banyak waktu juga, drupal_render () (rendering API kadang-kadang disebut) adalah bagian yang bagus dari API (sangat berguna) tetapi juga agak lambat. Beralih ke PDO (D7) dan DBTNG penuh (yang sangat bagus) juga menambah latensi yang tidak dapat diabaikan.

Yang mengatakan, inti dengan sendirinya cukup cepat (tetapi tidak terlalu banyak query SQL, bahkan dengan hampir tidak ada yang diinstal), modul kode yang buruk sering menjadi hambatan.

APC dapat membagi waktu eksekusi per 2 atau 3, tergantung pada kode yang berjalan. jika Anda mengonfigurasinya dengan baik (aktifkan semua optimasi APC, manual APC resmi ditulis dengan baik dan akan memandu Anda).

Jika Anda berada di kotak dengan sistem file lambat (sistem file jaringan atau hard drive lambat) itu dapat menyiratkan dampak yang terlihat pada waktu eksekusi. Drupal dibuat dari banyak dari file kecil, yang memaksa PHP untuk melakukan I/O pada FS setiap kali memuat salah satunya (APC juga banyak membantu untuk itu).

DBMS yang salah konfigurasi juga bisa menjadi hambatan yang jelek, jika Anda menggunakan MySQL, pikirkan untuk melakukan fine tuning. Jika Anda menggunakan hosting bersama, jika itu bukan Drupal spesifik (atau siap) DBMS dan PHP stack mungkin akan salah konfigurasi atau tidak disetel, yang dapat menyebabkan situs sangat lambat.

Jangan lupa untuk mengaktifkan semua cache. Jika situs Anda tidak diautentikasi berorientasi pengguna, maka aktifkan caching halaman agresif (ini sungguh menakjubkan).

Semakin banyak Anda memiliki blok, semakin banyak halaman penuh akan lambat, blok modul Views akan menjadi hambatan fajar (tergantung pada plugin Views yang Anda gunakan, blok OG bisa sangat menyusahkan) jika Anda tidak membatasi visibilitasnya. berdasarkan per halaman, atau dengan kustom PHP kode (blok lain juga, selalu mengatur visibilitas blok Anda secara manual, sangat membantu kerangka kerja dengan menghindarinya untuk mencoba membuat blok kosong).

Hindari modul yang menggunakan hook_init (), hook_init () dijalankan di setiap halaman, bahkan jika Anda mendapatkan 403 atau 404, yang memperlambat segalanya (bahkan memperlambat waktu pembuatan style imagecache | style, dan 404 kesalahan pada file akan menjadi fajar lambat hanya untuk memberi tahu Anda file tidak ada).

1
Pierre