slogan3

Maak een Bash- of PowerShell-script voor proactieve serverprestatieoptimalisatie

description

Met dit script kunt u de prestaties van uw server dynamisch optimaliseren, uitval verminderen en de resourcegebruik effectief verbeteren.

prompt

try_prompt

Help me een Bash- of PowerShell-script te ontwerpen dat de prestaties van mijn server proactief afstemt door verschillende parameters aan te passen op basis van realtime statistieken. Welke prestatietrends moeten worden gemon ... more
generate_helper
disclaimerOnPageApi image_legal_disclaimer...

ai_answers

provider: openai
model: gpt-4.1-nano
Hier is een voorbeeld van een Bash-script dat de CPU-belasting monitort, de CPU-affiniteit aanpast indien nodig, en dit automatisch dagelijks om middernacht plant. Het script logt alle acties naar `/var/log/server_tuning.log`. Let op: Dit is een basisvoorbeeld. Afhankelijk van je serverconfiguratie en vereisten moet je mogelijk extra parameters en beveiligingsmaatregelen toevoegen. --- **Bash-script: server_tuning.sh** ```bash #!/bin/bash LOGFILE="/var/log/server_tuning.log" # Functie om te loggen log() { echo "$(date '+%Y-%m-%d %H:%M:%S') - $1" >> "$LOGFILE" } # Monitor CPU-belasting (bijvoorbeeld over de afgelopen 1 minuut) CPU_LOAD=$(awk '{print $1}' /proc/loadavg) # Definieer drempelwaarden THRESHOLD_HIGH=1.0 THRESHOLD_LOW=0.3 # Functie om CPU-affiniteit aan te passen aanpassen_cpu_affiniteit() { # Voorbeeld: CPU 0 en 1 toewijzen aan het proces met PID 1234 # Vervang '1234' door het daadwerkelijke proces dat je wilt optimaliseren PID=$(pgrep -f "je_process_naam") # Vervang dit door je procesnaam if [ -n "$PID" ]; then # Stel CPU-affiniteit in (bijv. CPU 0 en 1) taskset -cp 0,1 "$PID" if [ $? -eq 0 ]; then log "CPU-affiniteit voor PID $PID aangepast naar CPU 0,1" else log "Fout bij aanpassen CPU-affiniteit voor PID $PID" fi else log "Proces niet gevonden voor CPU-affiniteit aanpassing" fi } # Beslissingslogica op basis van CPU-belasting if (( $(echo "$CPU_LOAD > $THRESHOLD_HIGH" |bc -l) )); then log "CPU-belasting hoog ($CPU_LOAD), optimalisatie nodig" aanpassen_cpu_affiniteit elif (( $(echo "$CPU_LOAD < $THRESHOLD_LOW" |bc -l) )); then log "CPU-belasting laag ($CPU_LOAD), geen actie" else log "CPU-belasting normaal ($CPU_LOAD), geen actie" fi ``` --- **Cron-job voor dagelijkse planning:** Voeg dit toe aan je crontab (via `crontab -e`): ```cron 0 0 * * * /path/naar/server_tuning.sh ``` **Belangrijk:** - Zorg dat het script uitvoerbaar is: `chmod +x /path/naar/server_tuning.sh` - Het script moet uitgevoerd worden met voldoende rechten om `taskset` te gebruiken en logs te schrijven naar `/var/log/`. **Aanpassingen:** - Vervang `"je_process_naam"` door de naam van het proces dat je wilt optimaliseren. - Pas de CPU-drempelwaarden en affiniteitsinstellingen aan op basis van jouw server en workload. - Overweeg additionele statistieken en parameters te monitoren, zoals RAM-gebruik, I/O-prestaties, etc. --- Indien je PowerShell op Windows gebruikt, kan ik een vergelijkbaar script voor je maken.
provider: deepseek
model: deepseek-chat
Hier is een Bash-script dat voldoet aan uw vereisten: ```bash #!/bin/bash # Server Performance Tuner Script # Logbestand: /var/log/server_tuning.log LOG_FILE="/var/log/server_tuning.log" MAX_CPU_LOAD=80 # Maximale CPU-belasting in percentage MIN_CPU_LOAD=20 # Minimale CPU-belasting voor optimalisatie # Logging functie log_action() { echo "$(date '+%Y-%m-%d %H:%M:%S') - $1" >> "$LOG_FILE" } # CPU-belasting monitoren get_cpu_load() { local cpu_load cpu_load=$(top -bn1 | grep "Cpu(s)" | awk '{print $2}' | cut -d'%' -f1) echo "${cpu_load%.*}" } # CPU-affiniteit aanpassen op basis van belasting adjust_cpu_affinity() { local cpu_load=$1 if (( $(echo "$cpu_load > $MAX_CPU_LOAD" | bc -l) )); then log_action "Hoge CPU-belasting gedetecteerd: ${cpu_load}%" # Processen met hoge CPU-belasting identificeren en affiniteit aanpassen high_cpu_pids=$(ps -eo pid,%cpu --sort=-%cpu | awk '$2>10 {print $1}' | tail -n +2) for pid in $high_cpu_pids; do if [ -d "/proc/$pid" ]; then taskset -cp 0-$(($(nproc)-1)) "$pid" >/dev/null 2>&1 log_action "CPU-affiniteit aangepast voor PID $pid (alle cores)" fi done elif (( $(echo "$cpu_load < $MIN_CPU_LOAD" | bc -l) )); then log_action "Lage CPU-belasting gedetecteerd: ${cpu_load}% - Optimalisatie mogelijk" # Processen spreiden over beschikbare cores voor betere balans active_pids=$(ps -eo pid --no-headers | head -20) core=0 max_cores=$(($(nproc)-1)) for pid in $active_pids; do if [ -d "/proc/$pid" ]; then taskset -cp "$core" "$pid" >/dev/null 2>&1 log_action "PID $pid gebonden aan core $core" core=$(( (core + 1) % max_cores )) fi done else log_action "CPU-belasting normaal: ${cpu_load}% - Geen aanpassingen nodig" fi } # Hoofdfunctie main_tuning() { log_action "=== Server tuning gestart ===" # CPU-belasting monitoren current_cpu_load=$(get_cpu_load) log_action "Huidige CPU-belasting: ${current_cpu_load}%" # CPU-affiniteit aanpassen indien nodig adjust_cpu_affinity "$current_cpu_load" # Aanvullende systeemstatistieken loggen memory_usage=$(free -m | awk 'NR==2{printf "%.2f%%", $3*100/$2}') load_average=$(uptime | awk -F'load average:' '{print $2}') log_action "Geheugengebruik: $memory_usage" log_action "Load average: $load_average" log_action "=== Server tuning voltooid ===" echo "" >> "$LOG_FILE" } # Script uitvoering case "$1" in --schedule) # Planning instellen voor dagelijkse uitvoering om middernacht if ! crontab -l | grep -q "$0"; then (crontab -l 2>/dev/null; echo "0 0 * * * $0 --run") | crontab - echo "Dagelijkse planning ingesteld om middernacht" fi ;; --run) main_tuning ;; *) echo "Gebruik: $0 [OPTIE]" echo "Opties:" echo " --schedule Stel dagelijkse planning in om middernacht" echo " --run Voer tuning direct uit" echo "" echo "Logbestand: $LOG_FILE" ;; esac ``` ## Installatie en gebruik: 1. **Script opslaan:** ```bash sudo nano /usr/local/bin/server_tuner.sh sudo chmod +x /usr/local/bin/server_tuner.sh ``` 2. **bc package installeren (vereist voor berekeningen):** ```bash sudo apt-get install bc # Debian/Ubuntu # of sudo yum install bc # RHEL/CentOS ``` 3. **Direct uitvoeren:** ```bash sudo ./server_tuner.sh --run ``` 4. **Dagelijkse planning instellen:** ```bash sudo ./server_tuner.sh --schedule ``` ## Gemonitorde prestatietrends: - **CPU-belasting** (real-time percentage) - **Processen met hoge CPU-usage** - **Geheugengebruik** - **Load average** ## Afstemmingsacties: - **Hoge belasting (>80%):** Processen spreiden over alle CPU-cores - **Lage belasting (<20%):** Processen optimaliseren over beschikbare cores - **Logging** van alle aanpassingen naar `/var/log/server_tuning.log` ## Planning: - Dagelijkse uitvoering om **middernacht** via cron - Handmatige uitvoering op elk moment mogelijk Het script is veilig uitgevoerd en maakt alleen aanpassingen wanneer dit nodig is, met gedetailleerde logging van alle acties.