Magento sayfa yükleme çok uzun sürüyor


10

Magento web sitem var. Hiç kullanıcı yok (aynı anda en fazla 2-3).

Sunucumuz: CPU: 2000MHz RAM: 2048Mb HDD: 50000Mb.

ZendServerCE'yi yükledim (apc + memcached + Zend Optimizer + Zend Data Cache). Web sitesi çok kötü yüklendiği için memcached kapattım. Yönetici konsolunda düz tip yapı, reindexed ve önbelleğe alınmış veriler ayarladım.

Bu yüzden apc + Zend Optimizer + Zend Data Cache var .

  1. İlk sorun, çalışma zamanının nasıl çalıştığını kontrol etmem. start_session () çağrısı yaklaşık 500-700 ms sürer. İyi değil gibi görünüyor. Neden bu kadar uzun, bilmiyorum.

  2. Bunu okudum: http://dev.mysql.com/doc/refman/5.0/en/server-system-variables.html#sysvar_key_buffer_size ve sunucum için en uygun seçenekleri anladım.

Saat başı:

Key_read_requests = 8887
Key_reads         = 252
Key_write_request = 187
Key_writes        = 146 

Görüyorsunuz 252/8887> 0.01, ama çok fazla değil. Bu şimdiye kadar elde ettiğim optimal değer. Diğer sonuçlar> 6'dan başladı.

İşte my.cnf:

key_buffer              = 48M
myisam_sort_buffer      = 2M
sort_buffer             = 2M
read_buffer_size        = 2M
join_buffer             = 2M
read_rnd_buffer         = 2M
max_allowed_packet      = 128M
thread_stack            = 192K
thread_cache_size       = 16
query_cache_type        = 1
myisam-recover         = BACKUP
max_connections        = 50
table_cache            = 256
#thread_concurrency     = 10
query_cache_limit       = 8M
query_cache_size        = 98M

3. Herhangi bir nedenle memcached iyi değildi. Kapattım. Ancak zend veri önbelleği ve zend optimizer hala çalışıyor.

4. APC doğru görünüyor. Denetleyici eylemini yüklemek için ilk kez 3-4 saniye sürer (kontrol etmek için die () ayarladım) ve ilk kez 1 - 1.3 saniye sürer.

5. Birkaç dakika sonra mysql yeniden başlattım iyi sonuç aldım. Sayfalar 1,5 ile 2,5 saniye arasında yükleniyor. Ama şimdi (birkaç saat sonra) 6-10 saniye sürüyor. Sebebini bulamıyorum.

Burada yanlış bir yapılandırma görüyor musunuz? Sunucum macenta için uygun olmayabilir mi?

GÜNCELLEME 1: Bugün yaklaşık 600 kategori ve 1000 ürün ve gelecekte yaklaşık 20000 kategori (farklı web siteleri için) ve 1500-3000 ürün.

Çok fazla özellik yok.

GÜNCELLEME 2 ssh konsolunun çok yavaş çalıştığını söyledim. Sunucuyu yeniden başlattım ve şimdi hızlı çalışıyor. RAM ile ilgili bir sorunum var demektir. Yeterli alan yok.

Bu apache başlangıç ​​durumu:

             total       used       free     shared    buffers     cached
Mem:          2048        600       1447

GÜNCELLEME 3 Anladım. Şimdi 0,5-1,5 saniye yüklendi

İşte yapılandırma: mysql

[mysqld]
key_buffer_size         = 256M
tmp_table_size      = 32M
max_heap_table_size     = 32M
myisam_sort_buffer      = 4M
sort_buffer             = 4M
read_buffer_size        = 4M
join_buffer     = 4M
read_rnd_buffer     = 4M
max_allowed_packet  = 64M
thread_stack        = 192K
thread_cache_size       = 16
query_cache_type        = 1
myisam-recover          = BACKUP
max_connections         = 20
table_cache             = 1024
innodb_buffer_pool_size = 128M
query_cache_limit   = 24M
query_cache_size        = 256M

php

[apc]
apc.stat=1
apc.enabled=1
apc.optimization=0
apc.cache_by_default=1
apc.shm_segments=10
apc.shm_size=256M
apc.ttl=0
apc.user_ttl=0
apc.num_files_hint=10000
;apc.mmap_file_mask="/tmp/apc"
apc.max_file_size=5M
apc.enable_cli=1
apc.mmap_file_mask="/tmp/apc.XXXXXX"
apc.slam_defense=0
apc.user_entries_hint=10000

Her şey mükemmel çalışıyor, ancak bir soru var. APC bana bu istatistiği gösteriyor: resim açıklamasını buraya girin

Neden bu kadar küçük vurur? Herhangi bir fikir?


Magneto kurulumunuz hakkında birkaç satır bırakırsanız iyi olur (örneğin katalog boyutu, değişiklikler, uzantılar vb.).
user487772

Birinin sunucunuzu düzgün bir şekilde ayarlayabilmeniz için bir dizi yapılandırma dosyası yayınlamasının bir yolu yoktur. Düzinelerce dosya var; mevcut donanımınızdan en iyi şekilde yararlanmak için yapılması gereken yazılım ve sistem düzeyinde değişikliklerin belirli revizyonları.
Ben Lessani - Sonassi

Please descibe neden downvote set
Anthony

@Tim soruyu güncelledim
Anthony

2
Ben de düşeceği xhprofve yüklemek için en çok zaman alıyor şeyin bir görselleştirme elde etmeye çalışmak. Bu bir üretim sunucusu yük altında mı yoksa yalnızca test için mi?
philwinkle

Yanıtlar:


6

Soru çok eflatun merkezli görünmediği için, burada çok eflatun merkezli cevabım yok.

OpCode önbellekleme ve DB optimizasyonları, web uygulamalarınızı bir ölçüde hızlandırmanın iyi bir yoludur. Ancak fayda nispeten ılımlı olacaktır. Gerçek bir hız artışı elde etmek için vernik önbellek kullanmayı düşünmelisiniz. Magento için serbestçe kullanılabilen modüller sayesinde açık kaynak kodlu, yapılandırması kolay ve magento ile entegrasyonu kolaydır.

Nasıl çalıştığına dair kısa bir genel bakış sunan iyi bir makale de var: http://www.fabrizio-branca.de/make-your-magento-store-fly-using-varnish.html

Özellikle grafiği göz önünde bulundurun:

sayfalar / saniye


4
Zaten hızlı bir mağazanız varsa ve kaynakları dengelemek istiyorsanız vernik harika. Ancak bir mağazanın yavaş olduğu gerçeğini gizlemek için asla kullanılmamalıdır. Sayfalar yine de ilk etapta oluşturulmalıdır. Bu nedenle, her zaman 6-10s sayfa yükleme süresine sahip olurlar.
Ben Lessani - Sonassi

Daha önce kullandığım memcached gibi görünüyor. Ben mysql özellikleri veya sunucu çok yanlış olduğunu düşünüyorum çok zayıf
Anthony

2

İşletmeniz iyi performans gösteren barındırma hizmetinize güveniyorsa, sunucuyu neden deneyimsiz yönetmeye çalışıyorsunuz?

Kesinlikle bir uzman Magento ana bilgisayarına başvurarak ve sistem yönetimine bakmalarına izin vererek faydalanırsınız, iyi olduğunuz şeyi yaparken mağazanızı yönetirsiniz.

Teknik özelliklerinize baktığımızda, bir Magento mağazasını çalıştırmaya çalışmak için yeterli RAM'iniz yok. Sizinki gibi bir sürü benzer soru var,

https://serverfault.com/a/400748/113375 .
/server/430565/magento-hosting-on-a-budget


Çünkü müşterimizin limit bütçesi var. Magento ev sahibi için mounth başına 50 Euro'dan fazla ödeme yapmalıyım. Yılda 150-200 euro ev sahibi için bir sınırımız var-) Yine de bağlantılar için teşekkürler
Anthony

1
Daha sonra müşteri% 100 optimizasyonla ~ 20-40.000 $ / yıl gelir elde etmeyi bekleyebilir (barındırma, gelirin% 0.5-1'i kadardır). Burada size tüm detayları ve teknik ayarları verebilen çok sayıda insan var, ancak çok az şeyle çok şey yapmaya çalışıyorsunuz. Teknik tarafta çalışmasını sağlayabilirsiniz, ancak iş tarafında düz düşecektir. Dinamik sayfa yükleriniz (fpc olmadan) 3 yaşın altında değilse, ziyaretçilerin% 56'sını kaybedersiniz, ideal olarak 1-2'leri hedefler - Google ve ziyaretçi dönüşümleri siteyi aksi halde cezalandırır - zor çağrı. Durum göz önüne alındığında% 95-99 şans> 3s sayfa yüklenir ve / veya site altına girer.

1

Bu fiziksel donanım mı yoksa sanal bir özel sunucu mu? Muhtemelen veritabanınızı kendi özel sunucusuna taşımalısınız. Bu aynı zamanda hız sorunlarınızın Apache / PHP veya MySQL ile ilgili olup olmadığını izole edebilme avantajı sağlar.

start_session () yavaş olması, muhtemelen yetersiz güce sahip bir donanımdan muzdarip olduğunuz anlamına gelir. Teknoloji seçimlerinizin oturumların diskte veya RAM'de saklandığı anlamına gelip gelmediğini bilmiyorum ama 500-700 ms neredeyse kesinlikle diskte depolandıkları ve G / Ç performans sorunlarınız olduğu anlamına geliyor - muhtemelen veritabanınız RAM'e sığmayacağı için diske takas etmek ... ama hepsi spekülasyon.

İyi şanslar!


Cevabınız için teşekkürler! VPS kullanıyorum. Macenta için çok uygun değil, ancak bu kapsamda optimize etmek için bir görevim var. Veritabanının diske değişip değişmediğini kontrol etmek mümkün müdür?
Anthony

1
free -mtakas kullanıp kullanmadığınızı topsöyleyecektir ve komutun en son sürümleri takas kullanımına göre sipariş vermek için O ve P tuşlarına basıp basmadığınızı söyleyecektir. Aksi takdirde mysqld işlem kimliğini aşağıdaki gibi bir şeyle kullanmaya geri dönmelisiniz: awk '/^Swap:/ { SWAP+=$2 } END { print SWAP" kB" }' /proc/$(pidof mysqld)/smaps Tümü burada açıklanmıştır: dbasquare.com/2012/04/10/…
Ralph Tice

1

Açıkçası size performansınızı artıracak bir 'çalışma yapılandırması' göstermenin bir yolu yoktur, ancak Magento aslında böyle bir şey yapmaya çalışır ve performans raporlarında yüksek düzeyde yapılandırılmış bir LAMP yığını örneği gönderir. Bu teknik incelemelerin metodolojisi CE ve EE için geçerlidir. Fikirler bu konunun çoğunu yankı ve doğrudan kaynaktan çok özel Magento önerileri sağladığını önerdiğinden, her iki teknik incelemeyi de tamamen okumanızı şiddetle tavsiye ederim: http://www.magentocommerce.com/whitepaper/


1

Yapılandırma

ZendFramework (zend optimizer ve zend veri önbelleği) + APC + Memcache + Nginx

benim için mükemmel çalışıyor.

30'dan fazla uyumlu kullanıcı bir saniyeden daha az bir sayfa yükleyebilir (~ 0.4s-0.6s)

Nginx'i 80 bağlantı noktasına (proxy olarak) ve apache'yi 8080 olarak ayarladım.

Bağlantılar için @MattSchweers'a teşekkürler. Bunu unuttum. MySQL'i yapılandırmama yardımcı oluyor


sorun değil! Aslında bu teknik incelemeleri bu hafta kendimi ince ayar yapan bazı MySQL için kullandım - iyi çalıştı.

1

tecrübelerime göre litespeed server, 32 $ / aylık 1cpu lisansına sahip 2 x performansı artırır. Php litespeed ayrı çalışır çünkü sadece 1cpu lisans gerekir söylendi.


Web sunucusu darboğaz değildir. PHP, Litespeed olarak değiştirmek hiçbir şeyi değiştirmeyecek.
Ben Lessani - Sonassi

Genel olarak Litespeed'in Magento için mükemmel bir seçim olduğunu kabul etsem de, bu cevap muhtemelen OP'nin yarattığı sorunu çözmeyecek ve belirtilen bütçesinin dışında.
Preston

0

Birden fazla web mağazanız ve birden çok kategoriniz olduğunda, Magento aslında tüm web mağazası, kategoriler ve ürünler için bir tür caretsian ürünü yaratır ve bu da Veritabanına önemli bir yük getirir. APC özledikleriniz oldukça yüksek ve buna bakmanız gerekecek. Ancak APC'yi düzeltseniz bile performans sorununuz özellikle trafiğiniz artarsa ​​devam edebilir diye düşünüyorum.

Magento, DB'ye çok fazla okuma yazma işlemi yapar, böylece MySQl'nizin bir Master Slave çoğaltma modunda bulunmasını deneyebilirsiniz, böylece yazma işlemleri master'a yapılırken magento'nun tüm magento okumaları var.


0

Aşağıdaki APC seçeneklerini değiştirmeyi ve isabetlerin alınıp alınmadığını görmeyi deneyeceğim.

apc.shm_segments 1

apc.ttl 7200

apc.user_ttl 7200

Canlı bir sitede aşağıdakileri de kullanabilirsiniz.

apc.stat 0

Bu, dosyanın en son derlendikten sonra değişip değişmediğini APC kontrolünü durdurarak size güzel bir hız artışı sağlar. PHP dosyalarını düzenlerken APC önbelleğinizi temizlemeyi unutmayın.


0

Başka düşünceler. İnnodb_buffer_pool_size'nizi artırmak isteyebilirsiniz, 128M biraz düşük olabilir ve küçük siteler bile bu kadar hızlı büyüyebilir. Değişken, verilerinizin ne kadarının bellekte tutulduğunu belirler.

Magento bunu hızla büyüyen günlük tabloları da dahil olmak üzere tüm tabloları için kullanır. Sakladığınız bu veri miktarını sınırladığınızdan emin olmak istersiniz. Komut satırından "php shell / log.php --status" komutunu çalıştırmanız, nerede olduğunuz ve elden çıkıp çıkmadığınız hakkında size bir fikir verecektir. Günlük tablolarını onunla temizleme seçenekleri de vardır.

2GB RAM ile çalışmak çok fazla değildir, bu nedenle belleğinizi nereye tahsis ettiğiniz konusunda dikkatli olmanız gerekir.

Ayrıca Tam Sayfa Önbellek + Önbellek Isıtıcı, sitenizin kataloğunu ve cms sayfalarını hazır ve hızlı tutmanıza yardımcı olabilir. Bizimkini burada görebilirsiniz: http://ecommerce.brimllc.com/full-page-cache-magento.html

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.