wordpress tema
apache-logo

Yüksek Trafikli Sitelerde Apache Optimize

Dinamik içeriği bir çok hizmet sunucu çalıştıran Apache sınırlarına ulaşan, ya yeni ekipman konusunda binlerce harcama veya herhangi bir yerde 2 ila 10 kat arası, sunucu kapasitesini artırmak için kabartmak azaltabilir. Bu makale, ek bir donanım olmadan kapasitesinin artırılması önemli ve kötü belgelenmiş yolları üzerinde yoğunlaşmaktadır.

 

Sorunları:
Sunucu yükü sorunlara neden olabilir bir kaç genel şeyler ve bin nadir bulunmaktadır. En yaygın odaklanmak istiyorum:
Çok fazla RAM kullanan pek çok süreç (veya kaçak süreçler) – Swapping Sürücü
CPU – kötü optimize DB sorgular, kötü optimize kodu, kaçak süreçleri
Ağ – donanım limitlerine, moron saldırılar

 

Çözümler: Apaçık

Kısaca, ve bütünlüğü için, burada en belirgin çözümler şunlardır:

 

Çok fazla CPU veya RAM kullanan süreçleri kontrol etmek için “TOP” ve “PS axu” kullanın.
Ağ sorunlarını denetlemek için | “sort-u netstat-anp” kullanın.

 

Çözümler: Apache RAM kullanımı
İlk ve en bariz, Apache süreçlerini bir ton bir RAM kullanabilirsiniz. Her sürecin bir iş çıkarmış sonra, şişirilmiş işlemi yerine daha büyük ve daha iyi şeyler üzerine hareketli, istemciye oturur ve kaşıkla besleme veri anladıkları zaman bu önemsiz bir sorun önemli bir sorun haline gelir. Bu da gerçekten daha fazla ortak bilgi olmalıdır temel bilgileri bir bit de eklenmektedir:

 

Apache ile% 100 statik dosyalara hizmet, her httpd süreci RAM 2-3 meg etrafında kullanacak.
Eğer Apache ile% 99 statik dosyalar ve% 1 dinamik dosyalar hizmet, her httpd süreci RAM 3-20 meg (sizin ÇOK karmaşık dinamik sayfaya bağlı olarak) kullanmak olacaktır.

 

Süreç bu hizmet ne olursa olsun karşılamak için büyür ve bu süreç ölmek olur sürece tekrar azalır ASLA nedeniyle oluşur. Eğer çok az dinamik sayfalar ve ana trafik dalgalanma olmadığı sürece hızla, httpd sürecini en sisteminizde en büyük dinamik script eşit RAM bir miktar alacak. Akıllı web sunucusu otomatik olarak bu anlaşma olacaktır. Olduğu gibi, el RAM kullanımını artırmak için birkaç seçeneğiniz vardır.

 

Tweaking KeepAlive tarafından boşa süreçleri azaltın
Bu bir takas yöntemidir. KeepAliveTimeout bir sürecin hiçbir şey yapmayıp sadece yer kaplıyor etrafında oturur zaman miktarıdır. Bu saniye BÜYÜK şekilde ekleyebilirsiniz. Ama KeepAlive kullanarak sizin ve istemci hem de hızını artırabilir – KeepAlive ve resim gibi statik dosyaların porsiyon çok yavaş olabilir devre dışı bırakın. Bunun üzerine KeepAlive için iyi olduğunu düşünüyorum, ve (1-2 saniye gibi) KeepAliveTimeout çok düşük.

 

MaxClients toplam süreçleri sınırlayın
Dinamik içerik sunmak için Apache kullanıyorsanız, eşzamanlı bağlantı ciddi sınırlıdır. Belirli sayıda aşan ve sistem, takas o ölene kadar alma ve yavaş yavaş yamyamlık başlar. IMHO, bir web sunucusu otomatik olarak engellemek için adımlar atması gerektiğini, ancak bunun yerine sınırsız kaynaklara sahip varsaymak gibi görünüyor. Apache sunucu idare ve MaxClients bu değeri ayarlayabilirsiniz işler kaç anlamaya deneme ve yanılma yöntemini kullanın. Not: Bu konuda Apache dokümanlar yanıltıcı – Bu limit aşıldığı takdirde, müşterileri onlar sadece sıraya alınır, “kilitli” ve bunların erişim yavaşlatır değildir. MaxClients değeri dayanarak, size StartServers, MinSpareServers, & MaxSpareServers için gereken değerleri tahmin edebilir.

 

Kuvvet süreçleri MaxRequestsPerChild ile sıfırlamak için
Süreçlerinizi bir süre sonra ölmesi zorlanarak düşük RAM kullanımı ile başlamak yapar ve bu birçok durumda toplam bellek kullanımını azaltabilir. Sahip daha az dinamik içeriği, daha yararlı, bu olacaktır. Bu dinamik dosyalar sürekli toplam RAM kullanımı artan ve sürekli olarak bunu azaltmaya süreçleri yeniden başlatılmasıyla ilgili, telafi bir oyundur. MaxRequestsPerChild denemeler – 20 gibi düşük hatta değerleri daha iyi çalışabilir. Ama yeni süreçlerin yaratılması havai var çünkü, çok düşük koymayın. Siz “-: rss sıralama ps axu” inceleyerek yük altında en iyi ayarları anlamaya olabilir. Bu kullanarak uyarı bir kelime, eroin kullanmaya benziyor. Sonuçlar etkileyici olabilir, ama tutarlı DEĞİLDİR edebilirsiniz – Sunucunuz yayınlanmaya devam edebilir tek yolu verdiği bu tarafından ise, sonunda sorun içine çalışacaktır. Tweaking MaxRequestsPerChild tarafından sizin kadar% 50 olarak MaxClients artırmak mümkün olabilir söyleniyor.

 

Apache Daha Tweaking
Karışık amaçlı siteler (resim galerileri, indirme siteleri, vs demek) için, çoğunlukla aynı sunucu üzerinde iki farklı Apache cinleri çalıştırarak performansını artırabilirsiniz. Örneğin, son zamanlarda sadece resimler (GIF, JPEG, PNG gibi) sunmak için apache derlenmiş. Stok fotoğraf binlerce olan bir site için bu şekilde. Biz aynı sunucuda ana apache ve görüntü apache hem koymak ve yük ve ram kullanımı bir düşüş fark ettim. Sunucuda düzenli apache ile aynı ram kullanımı 3 kat daha fazla sunucu çalıştırabilir, hangi apache bakıyorsunuz tüm off-yüklü idi – bir sayfa 20-50 ile ilgili görüntü çağrıları vardı düşünün.

 

Son olarak, kutunun dışında düşünmek: değiştirmek veya Apache ek

 

2. bir sunucu kullanın
Bu statik belgeler ve resimler işlemek için bir küçük, yıldırım hızlı sunucu kullanmak ve aynı makine üzerinde Apache için herhangi bir daha karmaşık istekleri iletebilirsiniz. Bu şekilde Apache bayt basit akarsuları servis eden çok megabayt süreçleri kravat olmaz. Bir php script idam gerektiğinde sadece Apache, örneğin, alışmak olabilir. Bunun için iyi seçenekler şunlardır:

 

TUX / “Red Hat İçerik Accelerator” – http://www.redhat.com/docs/manuals/tux/

kHTTPd – http://www.fenrus.demon.nl/
thttpd – http://www.acme.com/software/thttpd/

 

Lingerd deneyin
Lingerd Apache belge getirilen sonra istemciye bayt besleme işini üstlenir, ancak çekirdek değişiklik yapılmasını gerektirir. Çok iyi geliyor, hiç denemedim. lingerd – http://www.iagora.com/about/software/lingerd/

 

Bir proksi kullanın
Bir proxy önbelleği Apache onu alır her şeyin bir kopyasını tutmak ve bunun yerine Apache rahatsız kopyası hizmet edebilir. Bu da dinamik olarak oluşturulmuş sayfaları önbelleğe olmanın yararı vardır, ama davul gibi şişmiş biraz eklemek yok.

 

Tamamen Apache değiştirin
Apache tüm özelliklerini ihtiyacınız yoksa, sadece daha ölçeklenebilir bir şey ile değiştirin. Şu anda, en iyi seçeneklerden bir engellenmeyen I / O teknolojisini kullanan ve aynı süreç ile tüm müşterilerine bağlanmak sunucuları gibi görünmektedir. Bu doğru – Sadece BİR süreci. En şunları içerir:

thttpd – http://www.acme.com/software/thttpd/
Caudium – http://caudium.net/index.html
Roxen – http://www.roxen.com/products/webserver/
Zeus ($ $) – http://www.zeus.co.uk

 

Çözümler: PHP’nin CPU ve RAM kullanımı
PHP betikleri derlenmesi genellikle bunları çalıştıran daha pahalıdır. Peki neden bunları önceden derlenmiş tutan basit bir aracı kullanmak değil mi? Ben çok Turck MMCache öneririz. Alternatifler PHP Hızlandırıcı, APC, ve Zend Hızlandırıcı içerir. Bunu gibi 2x-10x, basit bir hız artışı göreceksiniz.Bu zamanda RAM iyileştirme üzerinde hiçbir istatistik sahiptir.

 

Çözümler: Optimize Veritabanı Sorgusuyla
Bu yüzden sadece zihnin bir kaç önemli not tutmak, her yerde ayrıntılı olarak ele alınmıştır: Genellikle çalışan biri kötü sorgu deyimi kendi diz için sitenize getirebilir. İki ya da üç kötü sorgu ifadeleri bir çok farklı yapmazlar. Bir sorgu optimize Diğer bir deyişle, herhangi bir sunucu genelinde hız gelişimi göremeyebilirsiniz. Bulmak ve TÜM kötü sorguları optimize Eğer aniden 5x sunucu hız gelişimi görebilirsiniz. MySQL log-yavaş sorguları özelliği çok yararlı olabilir.

 

Yavaş sorgu oturum nasıl:

# Vi / etc / rc.d / init.d / mysqld

Bu satırı bulun:
SAFE_MYSQLD_OPTIONS = “- defaults-file = / etc / my.cnf”

şekilde değiştirin:
SAFE_MYSQLD_OPTIONS = “- defaults-file = / etc / my.cnf – log-yavaş sorguları = / var / log / yavaş queries.log”

Gördüğünüz gibi, biz / var / log / yavaş queries.log tüm yavaş sorguları günlük bir seçeneği eklendi
Kapatın ve mysqld kaydedin. + Z + Z Shift

touch / var / log / yavaş queries.log
chmod 644 / var / log / yavaş queries.log

 

mysql yeniden
hizmet myslqd yeniden
mysqld bu dosyaya gelecek yavaş sorgular oturum olacaktır.

 

Referanslar
Bu siteler iyileştirme için ilave, daha iyi bilinen yöntemler içerir.

 

Unix üzerinde for Speed ​​Tuning Apache ve PHP – http://php.weblogs.com/tuning_apache_unix
MySQL maksimum performans alma – http://www.f3n.de/doku/mysql/manual_10.html
Linux Server için Sistem Tuning Bilgisi – http://people.redhat.com/alikins/system_tuning.html
mod_perl Performans Ayarlama (perl dışında geçerlidir) – http://perl.apache.org/docs/1.0/guide/performance.html

 

 

Comments
  1. buy winstrol

    Blogunuza anlamak için zevk. Yukarıdaki makale oldukça sıradışı ve ben gerçekten blogunuza ve ifade noktaları okuma zevk. Ben gerçekten, tipik bir şekilde tekrar görünür konusu içinde çok daha fazla yazılan gibi. Paylaşım için teşekkürler … yazmaya devam!!

  2. Orada bazı iyi noktaları yaptı. Ben konuyla ilgili bir arama yaptım ve çoğu insan kabul edecektir.

  3. Kesinlikle yazdığınız çalışma heyecanını görebiliyordum. Dünya nasıl inandıklarını söylemek korkmayan sizin gibi hatta daha tutkulu yazarlar için umuyor. Her zaman kalbinizi izleyin.

  4. Ben büyük ölçüde burada bilgilendirici bir okuma her biri için teşekkür ederiz. Ben kesinlikle insanlarla da siteniz hakkında ifade yayılacaktır. Şerefe.

  5. Merhaba, ben blogunuza seviyorum. Ben bir abonelik ya da bir şey gibi güncelleştirmeleri almak için yapabileceği bir şey var mı? Üzgünüm RSS ile tanışmış değilim:?

ADD YOUR COMMENT