2008-09-08 36 views
7

Bir web uygulamasının yüklenme hızının (500+ kullanıcı) ne kadar duyarlı olduğunu belirlemek için bir Java işlemine karşı bazı JMeter testleri çalıştırıyorum. JMeter, her bir web isteği için yanıt süresini verecek ve Tomcat Manager'a her X saniyede bir JVM yığınının geçerli boyutunu getirecek bir betik yazdım.CPU kullanımını kabuk betiğinde aldınız mı?

Tomcat tarafından kullanılan% CPU'nun sunucusunda istatistikler toplamak istiyorum. Böyle ps kullanarak bir kabuk senaryoya yapmaya çalıştık:

PS_RESULTS=`ps -o pcpu,pmem,nlwp -p $PID` 

... komutunu her X saniyede bir fotoğraf ve bir metin dosyasına sonuçları ekleme. (Herkes, pmem =% hafıza kullanımı ve nlwp merak için parçacığı sayısıdır) Ben istiyorum daha bu "CPU Kullanımı%" tanımı farklıdır verdiğini tespit ettik Ancak

- için man sayfalarını göre ps, pcpu, "##. #" biçimindeki işlemin kullanılmasından dolayı

olarak tanımlanmıştır. Kullanılan CPU zamanı, işlemin yapıldığı zamana (cputime/realtime oranı) bölünerek yüzde olarak ifade edilir. Başka bir deyişle

, pcpu bana sürecin ömrü için süreci için% CPU kullanımına verir.

Her X saniyede bir örnek almak istediğimden, yalnızca o andaki işlemin CPU kullanımını toplamak istiyorum - top bana (işlemin işlemci kullanımını son Güncelleme).

Bunu bir kabuk komut dosyasından nasıl alabilirim?

cevap

13

top -b'u kullanın (ve farklı çıkışlar istiyorsanız diğer anahtarlar). Sadece bir lanet penceresine atlamak yerine stdout atar.

2

Başımın üst kısmından, sistem durumunun/proc dosya sistemi görünümünü kullanırdım - toplamı içeren/proc/PID/stat girdisinin biçimini görmek için adam 5 proc'a bakın CPU kullanım bilgisi ve global sistem bilgilerini almak için/proc/stat komutunu kullanın. "Geçerli zaman" kullanımı elde etmek için, muhtemelen "Son N saniyede kullanılan CPU" anlamına gelir; Mevcut CPU tüketimi oranını görmek için iki örnek kısa bir mesafe ayırın. Daha sonra bu değerleri faydalı bir şeye dönüştürebilirsiniz. Gerçekten de, bu muhtemelen bir kabuk kabuk betiğinden daha çok bir Perl/Ruby/Python işidir.

Kullandığınız kaba verileri/proc/PID/status ile elde edebilirsiniz, bu işlem için bir Uyku ortalaması verir. Oldukça kaba veri olsa da.

5

JMeter gibi bir sınama yaparken sunucuyu izlemek için bulduğum en kullanışlı araç dstat'dur. Sadece sunucudan bir dizi istatistik sağlamaz, bir elektronik tabloya kolay içe aktarım için csv'ye çıkar ve aracı Python'da yazılmış modüller ile genişletmenize izin verir.

+0

dstat aracı için teşekkürler! –

0

da 1 yineleme sayısı olarak kullanır, böylece $ gecikme süresi içinde başka bir tane almak için beklemeden geçerli anlık görüntü alırsınız.

top -b -n 1 
4

Kullanıcı yükü: top -b -n 2 |grep Cpu |tail -n 1 |awk '{print $2}' |sed 's/.[^.]*$//' Sistem yükü: top -b -n 2 |grep Cpu |tail -n 1 |awk '{print $3}' |sed 's/.[^.]*$//' Boşta yük: top -b -n 1 |grep Cpu |tail -n 1 |awk '{print $5}' |sed 's/.[^.]*$//'

Her sonucun bir yuvarlak ondalık sayıdır.