Sayfa yürütme süresini azaltmak için en iyi APC ayarları


15

Drupal 7, php-fpm ile apc ve vernik ve 512 MB RAM arkasında apache var.

Devel modülü ile sayfa yürütme süresini ölçüyorum.

Veritabanı sorgulama süresi, 854 ms olan sayfa yürütme süresine kıyasla düşük (62 ms). Bu PHP ve APC ayarlarında bir sorun olduğu anlamına gelir.

Mevcut ayarlarım sadece

apc.shm_size = 64
apc.stat=1 

Nasıl geliştirebilirim?

Yukarıdaki yapılandırma göz önüne alındığında Drupal için en iyi ayarlar nelerdir?

Teşekkürler

Yanıtlar:


12

SVN push ortamında çalışırız, bu yüzden sadece apc dosya önbelleğini bir komut dosyasıyla temizleriz.

APC ayarları:

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

PHP Betiği:

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

604800 = 1 hafta.

Bundan sonra, xdebug / xhprof'u çalıştırmak ve çalıştırmak ve sitenin önbellek öğütmesini yapmak, siteyi neyin yavaşlattığını size bildirmelidir. Kısaca önbellek öğütme çıktısını analiz etmek Drupal'ı hızlandırmanın en iyi yoludur. Aşağıda hızlandırmak için kullandığımız yamaları ve modülleri listeliyorum; sizin durumunuzda büyük olasılıkla farklı olacaktır.

Aşağıda Drupal 6'ya Özel Cevap

Bu noktayı geçtikten ve APC'nin aradığınızı vermeyeceğini anladıktan sonra , basın akışına geçin ve bu yamaları bir koşuşturma verin:

Ayrıca, sitemizin hızını büyük bir şekilde geliştirdikleri için bu modüllerden bazılarını deneyin:


Cevabınız için çok teşekkürler, ama Drupal 7 var.
john

Bu yüzden APC parçalarını ve xdebug / xhprof parçalarını alın ve do sorunu sırasında ne arayacağınıza örnek olarak D6 yamalarına bakın. Yukarıdaki tüm yamalar, önbellek eziyetine bakmanın, ağrı noktasını bulmanın ve buna karşılık gelen sorunun bulunmasının bir sonucudur. Hızlı başlangıç: drupal.org/project/issues/search/…
mikeytown2

Bir drupal 7 performans wiki artık yoktur: groups.drupal.org/node/210683
mikeytown2

1
Site kırdı çünkü Bilginize, I = 1 satır apc.include_once_override yorumlamak zorunda puregin.org/node/2550/3928
Corbacho

php.net/apc.configuration#ini.apc.include-once-override Bunu işaret ettiğiniz için teşekkür ederiz. PHP ve APC sürümüne bağlı olarak sorunlara neden olabilir
mikeytown2

3

Bu, “bir parça ip sorusunun ne kadar sürdüğünden” biridir.

Yüksek hacimli bir site için iyi olan, çok sayıda modüle sahip düşük hacimli bir site için aynı olmayabilir ve yalnızca birkaç modülün etkinleştirildiği orta hacimli bir site için aynı olmayabilir. Sunucuda çalışan diğer siteler de APC'nin kullanabileceği bellekte yemek yiyor olabilir.

Başlangıç ​​noktam

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

Daha sonra sunucu için ayarları yapıyorum, ama yine, tüm ayarlara uyan tek bir boyut yok.

Apc.php dosyasını bulun (muhtemelen /usr/share/pear/apc.php adresinde bulunur) ve Drupal kurulumunuz için DOCROOT'a kurun. Apache config ile IP adresinize kilitleyin. İçindeki kullanıcı adını / şifreyi düzenleyin ve ardından ona göz atın. Daha sonra APC istatistiklerinizi göreceksiniz.

Önbellek hatalarını en aza indirmek için shm_size parametresini yeniden yapılandırın. İdeal olarak, hiçbir zaman bir dosya için önbellek kaçırmayacak kadar bellek ve APC kullanıcı önbelleği için ek bellek vermek istersiniz.

Önbellek bozulmasını önlemek için TTL'yi optimize edin. Dosyaları düzenlemiyorsanız, bu numarayı çarptırabilirsiniz.

enable_cli, drush'ı çok kullandığınızda kullanışlıdır, böylece drush APC'nin önbelleğe alınmış dosyalarını kullanır.

rfc1867 dosya yüklemeleri için kullanışlıdır.

Ayrıca başlığında php-fpm fark ettim. Bu önemli bir durumdur ve Drupal Cevapları'nın kapsamı dışındadır. Sistem yapılandırma ayarlarının çoğu doğrudan Drupal ile ilgili olmadığından Sunucu Hatası'nda daha iyi yanıtlar alabilirsiniz .


ttl, segmentler, vb.Gibi her ayarın ne yaptığını kolay dilde açıklayan bazı iyi öğreticiler nerede? cli drush ile nasıl yardımcı olur?
john

"Nasıl trafik aldığımı, sunucuda başka neler çalıştığını, hangi modülleri kurduğumu vb." Açıklayabilir misiniz? ayarları nasıl etkiler? teşekkürler
john

yukarıdaki bu ayarlar çok yardımcı olmadı. Php ile neler olduğunu görmek için xhprof denemek gerekir?
john


1
@MPD> enable_cli, drush'ı çok kullandığınızda kullanışlıdır, böylece drush APC'nin önbelleğe alınmış dosyaları kullanır. Aslında, kli ayrı bir işlemdir ve apc önbelleğini apache ile veya hatta drush çağrıları arasında paylaşmaz.
Robin Millette

2

APC sadece PHP dosyalarının yüklenmesini ve ayrıştırılmasını geliştirir. Büyük bir kısmı da infaz süresinin kendisidir. Hatalar (özellikle önbellekle ilgili hatalar), dahili ek yük (örn. Drupal_alter (), module_implements ()) ve benzeri gibi yürütme süresini artırabilecek birçok faktör vardır.

Sorduğunuz ve zaten mikeytown2 tarafından önerildiği gibi, darboğazlarınızın nerede olduğunu bulmak için xhprof (bu güne doğrudan, hızlı erişim sağladığı ve ek bir araç gerektirmediği için xdebug'u tercih ederim) kullanırım.

Son zamanlarda Drupal içinde xhprof kullanımı ve ilginç bulabileceğiniz tipik darboğazlar hakkında iki blog yazısı yazdım .


groups.drupal.org/node/82889 PHP profilleme ile XHprof
john
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.