• 04-12-2010, 01:57:03
    #1
    Merhaba arkadaÅŸlar,

    Makinada birden çok uygulama çalışıyor, ve bazen bazı uygulamalar %100 load oluyor ve bunu eğer fark edip o uygulamayı sonlandırmazsam sunucu aşırı load oluyor ve bi süre sonra ulaşılmaz bir hale geliyor,

    Şöyle birşey düşündüm ama nasıl yapacagımı tam olarak kestiremedim,

    Mesela basit bir cron(zamanlanmış görev) ile 5 dakikada bir kontrol etse uygulamaları? ve %100 load olan uygulama varsa ona kill atsa, böyle birşey yapılabilir mi?
  • 04-12-2010, 02:01:41
    #2
    Kimlik doğrulama veya yönetimden onay bekliyor.
    https://www.r10.net/kabuk-programlama...rdiniz-11.html


    şu konuda yapılmıştı böyle birşey yanlış hatırlamıyorsam.
  • 04-12-2010, 02:30:38
    #3
    SQL PROCESSLIST durumuna bakar hangi veritabanı şişkinlik yapıyor veya sunucuya yük bindiriyorsan belli bir değerin üzerinde çıktığında onun işlemini KILL yaparsınız bu şekilde diğer kullanıcılar bundan etkilenmezler.

    php ile yazarak bash script olarak cron tarafından çalıştırılabilir.
    Alıntı
    mysql_query("SHOW FULL PROCESSLIST");
    Bir ara müşterimin birinin yüzünden kullanmam gerekti.
  • 04-12-2010, 02:47:43
    #4
    Sorun mysql ile ilgili degil, uygulamalar oyun sunucusu hepsi ayrı bir sunucu ve bazen bazı sunucular %100 yük yapıyor ve makinanın kilitlenmesine sebeb oluyor, bunları 5 dakika da bir kontrol ettirmek istiyorum


    Bir tane script buldum ama apache ye göre ayarlanmış acaba bunu degiştirebilirmiyiz?

    #!/bin/sh
    
    max_cpu="10" # Set to max cpu. This is the max % you will allow no decimals.
    apache_name="httpd" # Set to the name that apache runs as. Usually apache but sometimes it may be httpd.
    
    cpu_usage_apache=$(ps xua | grep -iw $apache_name | grep -v grep | awk '{print $3}' | sed -e 's/..$//' | awk '!L[$0]++' | sort -nr)
    
    if [ -z "$cpu_usage_apache" ]; then
            echo "not running"
            exit 1
    fi
      
    for i in $cpu_usage_apache; do
    
            if [ "$i" -gt "$max_cpu" ]; then
                    ps xua | grep -iw $apache_name | grep -v grep | awk '{print $2}' | xargs kill
                    exit 0
            
            else
                    echo >/dev/null
            fi
              
    done      
    
    exit 0
  • 04-12-2010, 03:04:45
    #5
    Oda mümkün;
    bash programlama ile cpu load durumunu öğrenebilir ona göre işlem yaptırabilirsiniz.

    Alıntı
    ps aux|awk 'NR > 0 { s +=$3 }; END {print "cpu %",s}'
  • 04-12-2010, 03:27:41
    #6
    zbahadir adlı üyeden alıntı: mesajı görüntüle
    Oda mümkün;
    bash programlama ile cpu load durumunu öğrenebilir ona göre işlem yaptırabilirsiniz.
    bu kod genel olarak kullanılan cpuyu gösteriyor,

    benim asıl amacım şöyle

    srcds_linux adı altında çalışan 10 tane uygulama var mesela, kimisi 10 cpu kullanıyor kimisi 50 kimisi 70.. bazen bi tanesi 100 cpu kullanıyor (tek çekirdekde) ve 100 cpu kullanımı olduğunda bu uygulama 10-15 dk açık kaldıgında makina aşırı load dan kapanıyor. bunu engellemek için öyle bir kod olmalı ki

    srcds_linux diye listeleme yaptıgında tek tek cpu kullanımlarını listeleyecek ve ordaki 100 cpu kullanımı olan işlemi sonlandıracak kill komutuyla
    100
    50
    40
    35
    15
    10
    5
    ...
    ...
    ...
  • 05-12-2010, 23:22:05
    #7
    yardım edebilecek yokmu arkadaşlar? çokmu zor birşey istedim