Ubuntu 14.04'ün , düzenlenebilir bir dosya /etc/apache2/mods-enabled/mpm_prefork.conf içinde bulunan bir mpm_prefork modülü üzerinden çalışan PHP'li Apache 2 kullandığını unutmayın . Ayrıca, Apache 2.4'ten başlayarak MaxClients'ın artık MaxRequestWorkers olarak yeniden adlandırıldığını ve bu nedenle MaxClients ile ilgili tüm belgelerin MaxRequestWorkers olarak değiştirilmesi gerektiğini unutmayın.
Apache web hizmetini aşağıdaki komutla geçici olarak durdurun:
sudo service apache2 durdurma
- 5 saniye bekleyin ve ardından sunucuda ne kadar sanal belleğe sahip olduğunuzu öğrenmek için aşağıdaki komutu çalıştırın:
sudo ücretsiz -ht
Mem: satırını okuyun ve ücretsiz sütuna bakın. Genellikle Apache'ye ayırabileceğiniz RAM miktarı olarak düşünün, ancak genellikle daha bej bir sunucuda 2GB (> 4GB'da olduğu gibi) veya daha hafif bir sunucuda 1GB düşmek isterim. Bu yüzden, ücretsiz sütun 13 GB'lık ücretsiz olduğumu söylerse, Apache 11GB vermenizi tavsiye ederim. Bu bir temel. Günlüklerde zaman zaman herhangi bir veritabanı sorunuyla karşılaşırsak (3 günlük bir süre boyunca günlüklerde 3 kez olduğu gibi) daha fazla belleğe ihtiyaç duyarsak, 11GB yerine oynamak için sadece 10GB'ımız olduğunu düşünebiliriz (bu durumda ). Apache günlüklerinde sunucunun daha fazla MaxRequestWorkers'a ihtiyacı olduğunu görürsek, bu aşağıda ele alacağım ayrı bir konudur.
- Apache web sunucusunu başlatın.
sudo service apache2 başlat
10 tarayıcı sekmesi gibi açın, web sitenizden daha uzun veya daha yavaş yüklenen sayfalarınızdan bazılarına bağlanın ve her sekmede 3-4 kez yenileyin.
Bunu yaptıktan sonra, hızla aşağıdaki komutu çalıştırın:
sudo ps -ylC apache2 | awk '{x + = 8 $; y + = 1} END {print "Apache Bellek Kullanımı (MB):" x / 1024; "Ortalama İşlem Boyutu (MB):" x / ((y-1) * 1024)} '
5 kat hızlı koş.
Ortalama Proses Boyutu değerine ve bu değeri 5 kez çalıştırdığınız ortalama değere bakın.
Şimdi aşağıdaki matematiği yapın ve tüm sayıların MB değerlerinde olması için GB'yi MB'ye dönüştürdüğünüzden emin olun. Bu nedenle, gitmeniz gereken yola bağlı olarak 1024'ü çarpın veya 1024'e bölün.
MaxRequestWorkers = Baseline Free (arabellek alanı ile) / Avg İşlem Boyutu
Örneğin, 14GB'lık bir sunucum vardı, ancak Apache durdurulduğunda sunucu boşta 1GB RAM kullandığını gösterdi. Daha sonra işletim sistemi için gerekli olması durumunda ekstra bir arabellek alanında 1 GB daha sağlarım. Yani 12 GB'lık bir Baseline Free'im olacaktı. Şimdi GB'den MB'ye dönüştürmeliyim ve bu yüzden 12 x 1024'ü çarpıp 12288 elde etmeliyim. 12288 MB benim Temel Ücretsiz değerim. Benim durumumda Ortalama Süreç Boyutunun 21 MB olduğunu gördüm. Yani, 12288/21 alıyorum ve yaklaşık 585 alıyorum. Şimdi, sysops'un bu değeri yuvarlaması yaygındır ve bu yüzden 580 aldım.
- /Etc/apache2/mods-enabled/mpm_prefork.conf dosyasını düzenleyin ve XXX yerine MaxRequestWorkers hesaplamanızla aşağıdaki varsayılanları ayarlamayı düşünün:
`<IfModule mpm_prefork_module>`
StartServers 2
MinSpareServers 2
MaxSpareServers 5
MaxRequestWorkers XXX
ServerLimit XXX
MaxConnectionsPerChild 0
</IfModule>
Burada ServerLimit parametresini göremeyebileceğinizi unutmayın. Ekle. Bu parametre yoksa 256 değerini varsayılan olarak alır, ancak MaxRequestWorkers ile aynı değere sahip olması gerekir; aksi takdirde bir hata alırsınız.
Apache yapılandırmanızdaki bir diğer kritik faktör, Zaman Aşımı değişkenine sahip /etc/apache2/apache2.conf dosyasıdır ve saniye cinsinden ölçülür. Bu, sunucu zaman aşımına uğramadan ne kadar sürede gönderip alabileceğinizdir. Ayrıca, insanların CSV veya diğer büyük dosyaları yükleyebileceği veya indirebileceği bir web siteniz varsa, örneğin bir dosya yükleme veya dosya indirme işlemini de aklınızda bulundurmanız gerekir. Ayrıca, meşgul bir veritabanı sunucusunu ve sayfa zaman aşımından önce biraz zaman ayırmanız gerekebileceğini unutmayın. Zaman Aşımı değişkenini ne kadar küçük yaparsanız, web sunucusu yeni bağlantılar almak için o kadar kullanılabilir olur. Bununla birlikte, bu değerin çok düşük olarak ayarlanmasının tarayıcı oturumu tabanlı çerezlerde olmasa da PHP oturum değişkenlerinde hasara neden olabileceğini unutmayın. Örneğin, tarayıcı oturumu çerezleri yerine web uygulaması iş akışı için PHP oturum değişkenlerine dayanan bir web sunucusu için 300 (5 dakika) değeri iyi olabilir. 45 değeri, statik reklam açılış sayfalarından başka bir şey sunmayan bir web sunucusu için iyi olabilir, ancak PHP oturum değişkenlerini çok kullanması gereken bir sunucu için korkunç olurdu. Bu nedenle, bu dosyadaki Zaman Aşımı parametresini ihtiyacınız olan miktarda düzenleyin. Bu, değerin çok düşük olup olmadığını görmek için tüm web sayfalarınızla bazı testler gerektirebilir. Bununla birlikte, büyük dosya yüklemelerinde veya büyük dosya indirmelerinde sorun görmüyorsanız, 300'den daha yüksek bir değere ayarlamaması iyi bir fikirdir. ancak PHP oturum değişkenlerini çok kullanması gereken bir sunucu için korkunç olurdu. Bu nedenle, bu dosyadaki Zaman Aşımı parametresini ihtiyacınız olan miktarda düzenleyin. Bu, değerin çok düşük olup olmadığını görmek için tüm web sayfalarınızla bazı testler gerektirebilir. Bununla birlikte, büyük dosya yüklemelerinde veya büyük dosya indirmelerinde sorun görmüyorsanız, 300'den daha yüksek bir değere ayarlamaması iyi bir fikirdir. ancak PHP oturum değişkenlerini çok kullanması gereken bir sunucu için korkunç olurdu. Bu nedenle, bu dosyadaki Zaman Aşımı parametresini ihtiyacınız olan miktarda düzenleyin. Bu, değerin çok düşük olup olmadığını görmek için tüm web sayfalarınızla bazı testler gerektirebilir. Bununla birlikte, büyük dosya yüklemelerinde veya büyük dosya indirmelerinde sorun görmüyorsanız, 300'den daha yüksek bir değere ayarlamaması iyi bir fikirdir.
Şimdi Apache web hizmetinizi yeniden başlatın. Yanlış bir şey yaptıysanız, Apache muhtemelen yeniden başlattığınız andan bahsedecektir ve düzeltebilirsiniz.
sudo service apache2 yeniden başlatma
- Şimdi daha önce yaptığınız 10 sekmeli tarayıcı numaralarını tekrarlayın ve Apache web sunucusu hata günlüğünde Apache yapılandırma hatalarıyla karşılaşıp karşılaşmadığınızı görün:
sudo tail -f /var/log/apache2/error.log
... isterseniz CTRL + C tuşlarına basın.
MaxRequestWorkers (ve son zamanlarda web sunucusunu yeniden başlattığınızdan beri) ile ilgili bir şikayet arayın. Optimal MaxRequestWorkers ayarında bile görüyorsanız, büyük olasılıkla web siteleriniz veya web uygulamalarınız için daha fazla ateş gücüne ihtiyacınız vardır. Şu seçenekleri göz önünde bulundurun:
- Büyük dosya yüklemeleri, resimler ve komut dosyaları için CDN kullanma.
- CloudFlare veya diğerleri gibi bir önbellek hizmeti kullanma.
- Bir yük dengeleyicinin arkasında bir "web uygulaması" olarak işlev gören birden çok web sunucusu kullanmak için web sitenizi veya web uygulama stratejinizi yeniden yapma.
- Sunucuya daha fazla RAM eklemek ve bu hesaplamayı tekrar tekrar yapmak.
- Artık Apache sunucusu ayarlandığına göre, bir çeşit temel ayar yapılmıştır. 2-3 hafta boyunca kontrol etmeniz ve Apache hata günlüklerinde MaxRequestWorker sorunlarını aramanız gerekir. Bundan, optimizasyon hakkında bir karar verebilirsiniz (bkz. Adım 10). Munin'i Ubuntu'ya apt ile yükleyebilir ve zamanla Apache performansına bakabilir ve web sunucusunun işlediği trafik miktarı hakkında bir şey yapmanıza karar vermeden önce bir büyüme fikri çizebilirsiniz.