Masalah Kinerja: Menunda permintaan pertama


36

Saya mengumpulkan situs D7 dengan subtema Minelli. Sepanjang jalan saya banyak bereksperimen dengan tema yang berbeda, modul yang berbeda. Di suatu tempat di sepanjang jalan saya mengembangkan masalah kinerja yang aneh, dan sekarang saya tidak benar-benar tahu apa tema / modul / konfigurasi yang menyebabkannya.

Masalahnya adalah ketika saya pertama kali mengunjungi situs tersebut, dibutuhkan sekitar 15 detik sebelum halaman pertama muncul. Saya kemudian dapat bergerak di sekitar situs dan sangat responsif. Jika saya meninggalkannya sekitar satu jam atau lebih, lalu kembali lagi, permintaan pertama sekali lagi sangat lambat.

Saya telah membersihkan cache agar tidak menjadi masalah. Juga, saya telah menonaktifkan tema dan modul yang tidak saya gunakan. Saya memindahkan situs ke infrastruktur baru tetapi masalahnya mengikutinya!

Ke mana saya pergi selanjutnya?


2
Tidak bisa memberi tahu Anda seberapa besar saya ingin menyelesaikan masalah ini juga. Teori kerja saya adalah bahwa setelah satu jam atau lebih cron telah berjalan (pembilasan cache) dan permintaan pertama membutuhkan waktu karena kebutuhan untuk semua query basis data yang tidak di-cache. Tapi saya hanya menebak
Clive

Saya memiliki masalah yang sama. mengaktifkan caching untuk pengguna anonim menyelesaikan masalah, tapi saya sadar itu bukan solusi yang baik
znat

@ Kim: Saya bertanya-tanya apakah Anda menemukan asal masalah dan / atau solusi yang baik
znat

2
Beberapa jawaban menyebutkan cron orang miskin: adakah yang mengalami masalah mengkonfirmasi apakah mereka memicu cron menggunakan crontab, atau jika mereka mengandalkan cron orang miskin?
Andy

6
Sebenarnya, jika itu adalah cron, maka kemungkinan bukan hanya cron, tetapi update_cron () yang mencari rilis baru, yang bisa memakan waktu cukup lama. coba nonaktifkan update.module untuk melihat apakah itu masalahnya.
Berdir

Jawaban:


16

Ada tiga hal yang akan saya periksa.

Pertama, jika Anda berada di situs produksi dan tidak mengedit file PHP, maka Anda harus memastikan bahwa APC diaktifkan, memiliki cukup memori, dan memiliki TTL yang panjang (Anda bisa pergi dengan satu hari atau tidak pernah kedaluwarsa jika Anda mau). Anda juga dapat mempertimbangkan pengaturan apc.stat=0. Dokumen APC memiliki semua informasi yang Anda perlukan untuk mengatur TTL. Untuk memilih jumlah memori, Anda harus menempel file apc.php di suatu tempat yang dilindungi dan memantau penggunaan memori dan statistik churn. Sesuaikan memori APC sehingga tingkat kesalahan Anda sangat rendah. Kelambatan awal bisa jadi karena APC penuh dan mengosongkan (IIRC, APC membuang seluruh cache saat sudah penuh alih-alih menggunakan LRU atau strategi cache yang lebih maju).

Kedua, pastikan Anda telah menyetel MySQL dengan tepat. Anda dapat menggunakan mysqltuner untuk menyesuaikan ukuran buffer Anda. Kelambatan awal Anda mungkin karena memuat tabel dari disk dan / atau melewatkan cache permintaan. Meskipun tidak sempurna, mysqltuner membuat Anda pergi ke arah yang benar.

Ketiga, pastikan Anda memiliki strategi cron Drupal yang sebenarnya . Secara pribadi, saya akan menonaktifkan cron automagic pada "admin / config / system / cron" dan mengatur crontab untuk dijalankan setiap malam. Anda juga dapat mencoba Elysia Cron jika Anda benar-benar membutuhkan kendali yang lebih baik atas berbagai hal. Dengan cara ini Anda dapat menjalankan tugas-tugas yang diperlukan sesering yang Anda butuhkan, tetapi biarkan yang normal berjalan dalam semalam. Kelambatan awal Anda bisa dari cron run yang terjadi setiap jam. Anda dapat mengonfirmasi ini dengan melihat ketika cron dijalankan pada "admin / laporan / dblog" dan mencoba untuk menyesuaikan dengan kelambatan Anda.


Saya telah menemukan hampir semua tumpukan dev (M / L / W) AMP, bahkan yang khusus untuk Drupal seperti Bitnami, sangat tidak disetel atau tidak disetel sama sekali (saya pikir dev stack Acquia adalah pengecualian). Dan tentu saja instal mySQL default untuk mesin produksi tidak. Logfiles InnoDB secara default seperti 5M dan memori yang dialokasikan sangat kecil. Seringkali penyetelan yang tepat adalah semua yang diperlukan untuk membuat situs cepat - bahkan hanya dengan memasukkan my-medium.cnf atau my-large.cnf sudah cukup.
Renee

Ada begitu banyak jawaban bagus untuk pertanyaan ini, terima kasih kepada semua orang yang melihat komentar ini dan berkontribusi pada posting ini. Saya pikir jawaban khusus ini merangkum isu-isu utama yang bagus dan ringkas; memeriksa 3 poin ini secara menyeluruh telah membantu mempercepat situs Drupal dengan baik di berbagai mesin yang berbeda. Terima kasih @MPD
Clive

9

Ivanhoe123 mungkin benar: Drupal 7 hadir dengan 'poor mans cron' diaktifkan secara default. Singkatnya, itu berarti bahwa (sesekali) cron dijalankan sebelum Drupal merender halaman, menunda semuanya.

Selalu mencoba menggunakan pekerjaan cron nyata di lokasi produksi. Untuk detail teknis lebih lanjut, lihat http://drupal.org/cron , atau berbicara dengan perusahaan hosting Anda.

Untuk menonaktifkannya, buka admin / config / system / cron dan pilih 'Never'.


Saya tidak berpikir menonaktifkan cron memecahkan masalah, lebih mungkin menyembunyikannya nanti. Tapi setidaknya saya kira Anda dapat mempersempit masalah kinerja sedikit;)
wiifm

1
Attiks tidak mengatakan untuk menonaktifkan cron; dia mengatakan untuk mengubah opsi untuk menjalankan tugas cron ketika ada pengguna yang mengunjungi halaman di situs. Itu adalah opsi spesifik yaitu Drupal 6 diimplementasikan dalam modul Poormanscron . Mengubah opsi itu tidak berarti menonaktifkan tugas cron.
kiamlaluno

8

The devel penawaran modul database logging untuk memeriksa apakah Anda memiliki pertanyaan berjalan lama.

Jika ini tidak membantu mengambil baik XHProf atau XDebug dan menemukan kode bersalah. XHProf (profiler) memberi Anda peta yang bagus dari semua fungsi yang sedang dieksekusi di server, dan ia memberi tahu Anda yang mana yang paling menghabiskan waktu eksekusi. Di sisi lain, ketika XDebug (debugger) dikonfigurasikan dengan IDE seperti Eclipse ( lihat video ), ini memungkinkan Anda menelusuri setiap fungsi yang dijalankan LANGSUNG. Profiler akan memberi Anda gambaran tentang apa yang sedang dieksekusi; sementara debugger akan menunjukkan kepada Anda mengapa itu dieksekusi.


2
Ya, ada banyak kemungkinan alasan untuk hal seperti ini, uxing XhProf biasanya merupakan cara terbaik untuk menemukan masalah aktual.
Berdir

6

Hanya dari rasa pertanyaan, saya langsung memikirkan tiga (3) hal

  • Mesin Penyimpanan MySQL / CPU
  • Caching Basis Data
  • Mengunci Meja

Mesin Penyimpanan MySQL

Jika Anda tidak menggunakan pencarian / pengindeksan FULLTEXT, saya sangat menyarankan Anda mengubah semua data MyISAM Anda menjadi InnoDB. MyISAM tidak dirancang untuk memanfaatkan banyak CPU dan banyak core. InnoDB telah sangat ditingkatkan untuk penggunaan CPU ganda dan juga baca / tulis hyperthreading.

Berikut adalah beberapa posting yang saya buat tentang ini di DBA StackExchange dan di situs ini berkaitan dengan penyetelan MySQL untuk Kinerja InnoDB

Caching Basis Data

Argumen kuat lainnya untuk mengonversi semua data MyISAM ke InnoDB adalah bagaimana MySQL menyimpan data / indeks. Mesin Penyimpanan MyISAM hanya menyimpan cache indeks. InnoDB menyimpan data dan indeks cache . Sehubungan dengan ini, Anda dapat mengalokasikan memori yang cukup untuk Pool Buffer InnoDB untuk mengakomodasi salah satu dari yang berikut ini (mana yang lebih kecil)

  • Semua Data dan Indeks InnoDB (Ideal jika Anda memiliki cukup RAM untuknya dan juga untuk OS; menghilangkan penundaan berikutnya)
  • 75% dari RAM Terpasang (jika Anda memiliki lebih banyak data / indeks InnoDB yang RAM; meminimalkan penundaan)

Jika Anda menggunakan MySQL 5.1, Anda dapat mengatur innodb_max_dirty_pages_pct = 0. Ini akan sedikit meningkatkan I / O disk, tetapi Pool Buffer InnoDB akan dihapus cukup untuk memungkinkan data lama dan halaman indeks untuk berputar tanpa lonjakan disk I / O. Plugin MySQL 5.5 dan InnoDB MySQL 5.1 tidak memerlukan penyesuaian ini karena memiliki mekanisme penyiraman Buffer Pool default yang lebih baik.

Jika menggunakan InnoDB keluar dari pertanyaan, Anda mungkin harus menggunakan memcached atau varnish. Hal ini memungkinkan pengembang untuk menentukan berapa lama data yang di-cache akan berada di RAM server. Secara alami, ini akan membutuhkan peningkatan pengembangan untuk membuat aplikasi Anda memcached / varnish-aware.

Mengunci Meja

Epilog

Anda tidak dapat menghindari penundaan awal setelah Restart MySQL. Namun, begitu Anda meningkatkan MySQL menggunakan saran / informasi yang disebutkan di atas, Anda seharusnya tidak lagi mengalami penundaan berikutnya.


Informasi yang sangat berguna, terima kasih. Apakah masalah ini dapat menjelaskan masalah ini terjadi secara teratur / konsisten? Sebagian besar laporan yang saya lihat memperkirakan bahwa tidak aktif di situs selama 30-60 menit mengakibatkan penundaan kembali untuk memuat halaman awal
Clive

2
@Clive Untuk semua database MyISAM, ini akan terjadi jika halaman indeks MyISAM dimuat ke dalam cache kunci MyISAM beberapa jam yang lalu dan tidak digunakan dalam waktu lama akan diputar. Memanggil untuk data siklus itu akan membutuhkan pembacaan disk untuk MyISAM. Perilaku yang sama ini dapat terjadi untuk InnoDB juga, terutama jika Buffer InnoDB terlalu kecil. Karena InnoDB menyimpan data dan indeks halaman, mengkonversi semua MyISAM ke InnoDB dan menggunakan Pool Buffer InnoDB yang besar dapat meminimalkan atau bahkan menghilangkan masalah pemuatan halaman tersebut.
RolandoMySQLDBA

Hebat aku akan melakukan beberapa profil berdasarkan ini, kedengarannya menjanjikan. Terima kasih lagi
Clive

2
@Clive Saya ingin merekomendasikan menggunakan mk-query-digest atau pt-query-digest untuk melakukan profiling Anda. Saya menulis sebuah skrip yang bagus di DBA StackExchange ke profil setiap interval tetap dari crontab: dba.stackexchange.com/a/8382/877
RolandoMySQLDBA

5

Saya akan menggunakan alat-alat seperti YSlow atau Firebug dll untuk menentukan dengan tepat apa yang terjadi ketika Anda memuat halaman tersebut dan kapan Anda memuat halaman tersebut segera setelahnya. Periksa apakah ini masalah caching dan lebih jauh lagi, periksa bagaimana fungsinya saat Anda mengakses halaman sebagai pengguna anonim dan kemudian sebagai pengguna yang diautentikasi. Bandingkan ini dengan pengaturan kinerja Anda dalam Drupal.

Jika ini bukan masalah caching, maka gunakan log kueri Devel dan juga log MySQL untuk melihat apa yang terjadi di database. Selain itu, jika Anda memiliki opcode atau cache peningkatan kinerja serupa di server, coba nonaktifkan beberapa nomor lalu nyalakan kembali.


4

Kedengarannya seperti cron sedang berjalan.

Periksa pengaturan Anda di sini: admin / config / system / cron


3

Saya hampir menjatuhkan Drupal untuk proyek terakhir saya karena ini.

Harus ada saya lebih dari satu sebab. Saya belum menemukan solusi 'memperbaiki semua' yang berfungsi setiap kali masalah ini merayap.

Syslog dan Ubuntu / Debain

Pertama kali saya berlari melintasi waktu muat 15 detik yang terputus-putus adalah saat menjalankan drupal pada sistem berbasis Debian / Ubuntu (Dedicated, non-shared). Menonaktifkan modul Syslog adalah solusi bagi saya.

Seperti yang dikatakan @BetaRide, menggunakan xDebug atau profiler PHP lainnya sangat mencerahkan.


Still A Problem - A Workaround

Adapun instalasi saya yang lain, saya masih bingung.

Masalah ini lebih terlihat pada server pengembangan saya dan Drupal lalu lintas rendah saya menginstal.

Sebagai solusi, saya telah menyiapkan tugas cron untuk memuat halaman beranda situs setiap 60 detik serta skrip cron Drupal setiap 300 detik. Ini jelas tidak optimal, tetapi saya lebih suka wget atau curl mengalami waktu memuat 15 detik daripada pengunjung manusia.


3

Banyak orang menyarankan masalah ini bisa terkait dengan memblokir proses latar belakang sinkron , terutama yang terkait dengan pekerjaan cron berat .

Jika benar, ada sepasang modul dalam pengembangan aktif oleh gielfeldt * yang mungkin memotong masalah ini, atau setidaknya, dapat menawarkan beberapa petunjuk dan membantu pembangun situs mendiagnosis dan menangani penyebab spesifik dalam kasus mereka. Keduanya menggantikan pemblokiran proses sinkron dengan HTTP atau perintah asinkron non-pemblokiran, dan keduanya menawarkan laporan yang relevan yang dapat mengidentifikasi proses yang menyusahkan:

  • Proses latar belakang dan modul yang dibundelnya memungkinkan antrean proses latar belakang Drupal diproses secara tidak sinkron, sehingga tidak diblokir. Ini bisa menghentikan masalah. Juga, dengan modul Latar Belakang Proses yang dibundel modul Apache Server di pengembang terbaru, ada laporan UI dasar tetapi yang ditingkatkan dengan fitur untuk mengawasi, membuka kunci, dan memeriksa waktu mulai dan kemajuan proses ini. Ini bisa mengidentifikasi proses masalah.
  • Ultimate Cron dibangun berdasarkan Background Process untuk memungkinkan tugas-tugas yang dipicu-cron memiliki scehdules asynchronous terpisah mereka sendiri, yang masing-masing dapat dimonitor dan dihentikan di UI. Selain bagus untuk memisahkan tugas-tugas pengisapan kinerja tugas berat dari pembersihan overhead rendah biasa, ini juga memberi Anda laporan dengan informasi yang mudah seperti durasi berjalan dari masing-masing tugas yang dipicu cron individu, ketika mereka terakhir dijalankan, status saat ini, dll. Ini juga dapat menghapus pemblokiran dari, dan / atau mengidentifikasi, proses masalah.

Keduanya adalah modul yang sangat berguna; untuk masalah ini, mereka dapat digunakan untuk menguji teori (terdengar sangat masuk akal) bahwa penyumbatan disebabkan oleh proses blocking sinkron atau cron run. Secara potensial, mereka dapat memecahkan masalah dengan menjalankan ini secara tidak sinkron dan bukan secara sinkron, dan mereka juga bisa berpotensi memberikan petunjuk tentang proses spesifik yang menyebabkan penahanan. (diperingatkan bahwa dokumentasi mereka adalah pekerjaan yang sedang berjalan ...

Namun, jika mereka tidak dapat dikonfigurasi untuk membantu sama sekali, itu menunjukkan ada lebih banyak masalah daripada hanya proses latar belakang yang sinkron. FWIW, saya belum pernah mengalami masalah khusus ini di sebuah situs sejak membuat modul-modul ini bekerja dengan baik (belum - menyentuh kayu) - tetapi saya telah melihatnya di situs saya sebelumnya, serta di situs Drupal langsung di alam.

Perhatikan juga modul plug-in terkait lainnya yang saat ini dalam pengembangan - misalnya dalam kasus intensitas tinggi yang kompleks, Ultimate Cron Queue Scaler , yang memungkinkan pelambatan berbasis ambang batas, dapat membantu mengurangi masalah kinerja terkait-cron.


* tidak ada afiliasi, saya hanya pengguna yang sangat terkesan dengan pekerjaan mereka


2

Karena ini memukul saya sekali lagi saya mulai lakukan menyelidiki masalah. Saya pasti bisa mengkonfirmasi itu

  1. panggilan untuk drupal_cron_run()dipicu oleh cron of core Poorman menambahkan ~ 5s ke waktu permintaan di mesin dev saya. Ini dapat diuji dengan uncommenting tes sekitar panggilan untuk drupal_cron_run()di modules/system/system.moduledalamsystem_run_automated_cron()
  2. membersihkan semua cache menambah ~ 2s ke waktu permintaan di mesin dev saya. Ini dapat diuji dengan melakukan drush cc alldan memuat kembali halaman tersebut.

Ini berarti bahwa mengatur cron untuk tidak pernah dan menambahkan panggilan ke cron melalui crontab membuat situasinya jauh lebih baik. Menekan beberapa halaman yang sering digunakan tepat setelahnya untuk mengisi ulang cache akan meningkatkan pengalaman pengguna.

Saya tidak yakin tentang caching. Saya belum menyentuh pengaturan cache default untuk situs ini. Saya pikir drupal sedang membangun kembali semua cache dari waktu ke waktu mungkin dipicu oleh cron, tapi saya tidak yakin bagaimana ini dilakukan. Tapi penundaan 7s cukup banyak apa yang saya lihat ketika saya menekan halaman setelah beberapa jam.


1

Masalah seperti ini dapat membuat Anda gila dan ketika saya berada dalam situasi yang sama membantu untuk mencari tahu apa yang menyebabkan masalah terjadi satu langkah pada saat itu dan kemudian mengujinya sebagai pengguna anonim dan login. (metode lapisan bawang merah)

Anda menyebutkan bahwa Anda mulai memperhatikan masalah setelah bermain dengan beberapa tema dan membuat kode sendiri. Saya tidak tahu seberapa rumit situs Anda atau logika di baliknya, tetapi langkah-langkah berikut akan membantu Anda menemukan masalah:

  1. Di server Anda buat folder atau akun lain (ini mungkin lebih baik) di mana Anda akan melakukan instalasi Drupal bersih dengan versi yang sama yang Anda gunakan di situs Anda. Kemudian tanpa menambahkan modul atau tes tema apa pun, waktu yang dibutuhkan situs untuk menanggapi permintaan pertama dan permintaan berikut. Jika semua berfungsi dengan baik, Anda dapat mengabaikan masalah konfigurasi server, jika berperilaku sama seperti Anda saat ini, Anda memiliki kesalahan konfigurasi baik dengan server web atau database Anda.

  2. Jika hasil dari langkah 1 baik dan server merespons dengan cepat dan permintaan berikut sama cepatnya, maka instal hanya tema dari situs Anda saat ini ke situs instal bersih dan uji lagi. Jika semuanya masih merespon dengan cepat, maka tema Anda bukan masalah dan Anda harus melanjutkan ke langkah 3 jika tidak, Anda harus mulai men-debug tema Anda * 1.

  3. Jika setelah pengujian pada langkah 2 situs masih mulai dengan cepat membawa modul-modul di situs Anda saat ini dan pastikan untuk menguji waktu respons setelah menambahkan dan mengaktifkan setiap modul * 2.

  4. Jika setelah menambahkan tema dan modul situs masih merespons dengan cepat, mulailah menambahkan konfigurasi, buat jenis konten, impor tampilan, menu pengaturan, dll. Jangan lupa untuk menguji respon situs setelah menambahkan masing-masing.

  5. Pengaturan dan konfigurasi siap dan situs masih cepat, nah sekarang bawa data selesai. Mengimpor node, istilah taksonomi, komentar, dll. Saya tahu saya harus terdengar seperti rekaman yang rusak, tetapi selalu menguji setelah menyelesaikan setiap langkah.

* 1 Menguji tema: proses ini bisa rumit dalam tema yang sangat rumit, berikut adalah beberapa petunjuk:

  1. Jika Anda menautkan ke pustaka js atau css eksternal, coba gunakan salinan lokal yang sama.

  2. Dalam file template.php Anda periksa fungsi yang mungkin memiliki loop lebih panjang atau tanpa akhir serta fungsi preproses dan / atau fungsi tema kait.

  3. Periksa file templat lain (halaman.tpl.php, dll) dan cari pemrosesan PHP mentah dari array dan objek.

  4. Jika menggunakan "Tampilan" dan melihat file templat, maka periksa juga.

  5. Selalu periksa jalur, optimalkan gambar, file js dan css. Terkadang file js dapat memiliki ketinggian yang tinggi ketika menggunakan beberapa cuplikan kode dalam satu file.

* 2 Modul pengujian : modul pengujian sedikit berbeda karena penggunaan manipulasi berat dengan PHP diperbolehkan. Berikut ini beberapa petunjuknya:

  1. Modul yang didukung komunitas (CCK, Views, dll) memiliki masalah antrian di drupal.org periksa untuk melihat apakah ada masalah yang ada tentang masalah Anda dan jika ada kemungkinan ada patch untuk memperbaikinya.

  2. Modul kode kustom sendiri, baik jika Anda memberi kode Anda harus memperbaikinya, kan ?. Periksa kembali pengkodean Anda dan periksa penggunaan fungsi terhadap api.drupal.org, Anda mungkin menggunakan fungsi yang berlebihan alih-alih kail.

  3. Modul kode khusus Internet yang dibagikan, lakukan seperti pada langkah 2, tetapi kali ini Anda juga dapat menghubungi penulis modul asli dan memberi tahu dia tentang masalahnya.

  4. Jika situs Anda merupakan pemutakhiran (D5 -> D6 -> D7) periksa skrip migrasi atau pemutakhiran (biasanya dalam file module.install), Anda mungkin memerlukan "indeks" tambahan pada konfigurasi tabel baru untuk membuat kueri SQL lambat X lebih cepat .

  5. Jika Anda merasa memiliki visi terowongan tentang masalah tersebut, keluar sebentar dan lakukan beberapa aktivitas lain yang sama sekali tidak terkait dan kemudian kembali lagi nanti untuk meninjau kembali masalah tersebut.

  6. Jika Anda melakukan ping poin masalah pada bagian kode, tetapi tidak bisa membuat kepala atau ekor tentang bagaimana memperbaikinya, coba jelaskan apa bagian itu harus dilakukan untuk orang yang tidak tahu bagaimana memprogram atau bagaimana Drupal bekerja dan menjadi siap menjadi kejutan.

Catatan: Jangan khawatir jika setelah membangun kembali situs Anda semua mulai berfungsi seperti pesona yang merupakan salah satu fitur terbaik yang dimiliki komputer.


1
Saya baru saja menginstal ulang drupal kosong dan tidak ada penundaan. Jadi langkah selanjutnya adalah mendorong tema saya. Namun, itu akan memakan banyak waktu karena saya harus menunggu setengah jam untuk masalah ini diulangi
znat

1
Senang mendengarnya sepertinya bukan masalah perangkat keras atau konfigurasi server. Silakan kirim kembali temuan Anda.
Emil Orol

1

Periksa kembali apakah Anda belum menghapus modul apa pun tanpa menghapus instalannya. Ini menyebabkan penundaan karena Drupal mencoba menemukan file tetapi mereka tidak ada lagi.

Hapus referensi dalam tabel variabel jika modul tidak ada lagi.


1

APM Web seperti newrelic adalah alat terbaik untuk melacak masalah kinerja. Saya memiliki situs yang memanggil satu atau dua baris kode yang melakukan hal-hal yang tidak penting, memuat array yang tidak perlu pada waktu yang aneh, dan melakukan hal-hal lain yang cukup tidak terlihat sampai kami melacaknya dengan APM.


1

Seseorang menyebutkan bahwa GoDaddy akan lambat. Banyak perusahaan hosting berbasis cloud juga akan mengalami keterlambatan awal ini karena layanan seperti AWS memilikinya. Lebih murah untuk membuat server diprioritaskan secara otomatis, dan server tersebut akan membutuhkan satu atau dua detik untuk 'bangun'.

Misalnya, Pagodabox memiliki 3-4 detik untuk byte pertama, sampai server bahagia. Pagodabox sebenarnya menghasilkan uang agar server tetap terjaga, sehingga Anda dapat membayar ekstra untuk 'membuat' situs Anda.

Juga, CDN dapat membantu Anda. Web / db Anda tidak akan dimuat dengan menyajikan halaman atau gambar yang di-cache. Tutorial yang bagus di sini: http://wimleers.com/article/easy-drupal-cdn-integration-for-fun-and-profit

Dan ... WebPageTest membuat saya bahagia. http://www.webpagetest.org/ Bandingkan waktu muat di seluruh planet ini dan dengan browser web yang berbeda secara gratis. Gunakan ini untuk mendapatkan hasil dunia nyata untuk perubahan apa pun yang Anda buat.


Ini adalah info bagus untuk dimiliki tetapi masalahnya masih terjadi di situs-situs di mesin lokal saya, hanya mengonsumsi sumber daya lokal
Clive

0

masalahnya bisa dimana saja.

  1. Pastikan Anda belum mengaktifkan mode debug pada tema atau modul apa pun. Misalnya, dalam banyak tema ada opsi untuk membuat ulang registri tema.
  2. Jika Anda menjalankan hosting bersama seperti Godaddy, maka 15 detik untuk permintaan pertama kali adalah normal.
  3. Konversikan situs atau halaman depan Anda menjadi basis kode menggunakan modul Drush CTools Export . Ini akan menghilangkan panggilan basis data apa pun dan situs Anda akan berjalan sepenuhnya dari php.
  4. Jika Anda masih mendapatkan masalah, gunakan pengaturan Devel dengan menyalakan query logdan page timeropsi di admin/config/development/devel. Lihat yang mana dari keduanya yang membutuhkan lebih banyak waktu untuk menghasilkan seluruh halaman.
  5. Mulai ulang server Anda jika tidak ada yang berhasil.
  6. Kasus terburuk, instal XHProf untuk melihat kesalahan apa yang terjadi.

1
Bisakah Anda jelaskan # 2?
Johnathan Elmore

0

Jadi ini adalah bagaimana saya memperbaiki masalah untuk instalasi saya. Ini bukan solusi nyata karena saya tidak bisa menemukan sumber masalah yang sebenarnya (jika ada), tetapi ini adalah solusi yang baik

1) Agregat CSS (pengaturan cache). Ini mengurangi latensi hingga setengahnya

2) Setel cron untuk tidak pernah (dan jalankan secara eksternal) - Catatan: Saya telah "mencoba untuk memulai cron saat ini sudah berjalan" kesalahan. Saya pikir itu mencoba untuk memulai cron di setiap peluncuran tetapi karena gagal, halaman cron tidak menyebutkan upaya terbaru, melainkan keberhasilan terbaru.

3) Mengatur pekerjaan cron yang memanggil halaman beranda dengan Lynx setiap 30 menit

Semua ini di server hosting bersama. Itu tidak optimal tetapi berhasil


0

Saya sarankan menggunakan cache front-end di sepanjang baris modul Boost (dengan asumsi Anda menggunakan shared hosting) atau Varnish. Ini akan berfungsi dengan baik jika akses situs Anda sebagian besar anonim dan sebagian besar konten halaman bersifat non-dinamis (yaitu halaman tidak banyak berubah).

Solusi ini menyimpan halaman yang diberikan pada akses pertama dan kemudian melayani html yang telah dirender sebelumnya alih-alih melalui bootstrap Drupal penuh, pembuatan halaman, dan proses bertema, menghemat BANYAK waktu, terutama di situs yang sibuk tetapi juga di situs seperti Anda gambarkan "tidur" mana dan butuh waktu terlalu lama untuk bangun.

Satu-satunya kelemahan nyata adalah bahwa (setidaknya untuk Peningkatan) Anda harus menghapus cache ketika konten situs berubah. Jika Anda ingin memastikan situs ini sepenuhnya di-cache dengan konten saat ini, Anda dapat menjalankan drush cc all lalu meringkuk atau menempelkan situs lengkap secara berkala melalui cron.

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.