Last active
March 13, 2025 19:32
-
-
Save gautiermichelin/14fb199a0b3b6ec1cf236f71814dfc7e to your computer and use it in GitHub Desktop.
improve_performances.sh
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/bin/bash | |
update_config_param() { | |
local param_name="$1" | |
local config_file="$2" | |
local new_value="$3" | |
if [[ ! -f "$config_file" ]]; then | |
echo "Erreur : Le fichier $config_file n'existe pas." | |
return 1 | |
fi | |
if grep -qE "^[[:space:]]*$param_name[[:space:]]*=" "$config_file"; then | |
# Modifier la valeur existante non commentée | |
sed -i -E "s|^[[:space:]]*$param_name[[:space:]]*=.*|$param_name=$new_value|" "$config_file" | |
elif grep -qE "^[[:space:]]*#[[:space:]]*$param_name[[:space:]]*=" "$config_file"; then | |
# Décommenter et modifier la valeur, même avec des espaces après # | |
sed -i -E "s|^[[:space:]]*#[[:space:]]*$param_name[[:space:]]*=.*|$param_name=$new_value|" "$config_file" | |
else | |
# Ajouter à la fin du fichier | |
echo "$param_name=$new_value" >> "$config_file" | |
fi | |
} | |
# Calcul de la RAM totale en Mo | |
ram=$(echo $(($(getconf _PHYS_PAGES) * $(getconf PAGE_SIZE) / (1024 * 1024)))) | |
# Calcul des trois quarts de la RAM | |
three_quarters_ram=$((ram * 3 / 4)) | |
# Calcul de 3/16e de la RAM | |
three_sixteenths_ram=$((ram * 3 / 16)) | |
# Config MYSQL | |
update_config_param "key_buffer_size" "/etc/mysql/mariadb.conf.d/50-server.cnf" "128M" | |
update_config_param "max_allowed_packet" "/etc/mysql/mariadb.conf.d/50-server.cnf" "1G" | |
update_config_param "thread_stack" "/etc/mysql/mariadb.conf.d/50-server.cnf" "192K" | |
update_config_param "thread_cache_size" "/etc/mysql/mariadb.conf.d/50-server.cnf" "8" | |
mkdir -p /var/log/mysql/ && touch /var/log/mysql/mariadb-slow.log | |
update_config_param "slow_query_log_file" "/etc/mysql/mariadb.conf.d/50-server.cnf" "/var/log/mysql/mariadb-slow.log" | |
update_config_param "long_query_time" "/etc/mysql/mariadb.conf.d/50-server.cnf" "10" | |
update_config_param "log_slow_verbosity" "/etc/mysql/mariadb.conf.d/50-server.cnf" "query_plan,explain" | |
update_config_param "log-queries-not-using-indexes" "/etc/mysql/mariadb.conf.d/50-server.cnf" "1" | |
update_config_param "min_examined_row_limit" "/etc/mysql/mariadb.conf.d/50-server.cnf" "10000" | |
update_config_param "expire_logs_days" "/etc/mysql/mariadb.conf.d/50-server.cnf" "10" | |
update_config_param "innodb_buffer_pool_size" "/etc/mysql/mariadb.conf.d/50-server.cnf" "${three_quarters_ram}M" | |
update_config_param "innodb_log_file_size" "/etc/mysql/mariadb.conf.d/50-server.cnf" "${three_sixteenths_ram}M" | |
update_config_param "innodb_buffer_pool_instances" "/etc/mysql/mariadb.conf.d/50-server.cnf" "12" | |
update_config_param "query_cache_size" "/etc/mysql/mariadb.conf.d/50-server.cnf" "0" | |
update_config_param "query_cache_type" "/etc/mysql/mariadb.conf.d/50-server.cnf" "0" | |
update_config_param "query_cache_limit" "/etc/mysql/mariadb.conf.d/50-server.cnf" "1M" | |
update_config_param "join_buffer_size" "/etc/mysql/mariadb.conf.d/50-server.cnf" "800K" | |
update_config_param "tmp_table_size" "/etc/mysql/mariadb.conf.d/50-server.cnf" "128M" | |
update_config_param "max_heap_table_size" "/etc/mysql/mariadb.conf.d/50-server.cnf" "128M" | |
update_config_param "performance_schema" "/etc/mysql/mariadb.conf.d/50-server.cnf" "ON" | |
# Config Evasive | |
apt install libapache2-mod-evasive | |
a2enmod evasive | |
echo "<IfModule mod_evasive20.c> | |
DOSHashTableSize 3097 | |
DOSPageCount 30 | |
DOSSiteCount 50 | |
DOSPageInterval 1 | |
DOSSiteInterval 1 | |
DOSBlockingPeriod 10 | |
#DOSEmailNotify [email protected] | |
#DOSSystemCommand \"su - someuser -c '/sbin/... %s ...'\" | |
DOSLogDir \"/var/log/mod_evasive\" | |
</IfModule>" > /etc/apache2/mods-enabled/evasive.conf | |
echo "# prefork MPM | |
# StartServers: number of server processes to start | |
# MinSpareServers: minimum number of server processes which are kept spare | |
# MaxSpareServers: maximum number of server processes which are kept spare | |
# MaxRequestWorkers: maximum number of server processes allowed to start | |
# MaxConnectionsPerChild: maximum number of requests a server process serves | |
<IfModule mpm_prefork_module> | |
StartServers 1 | |
MinSpareServers 1 | |
MaxSpareServers 3 | |
MaxRequestWorkers 25 | |
MaxConnectionsPerChild 10 | |
MaxClients 50 | |
</IfModule> | |
# vim: syntax=apache ts=4 sw=4 sts=4 sr noet" > /etc/apache2/mods-enabled/mpm_prefork.conf | |
echo " | |
save \"\" | |
" >> /etc/redis/redis.conf | |
find /var/www -type f -name *.conf -exec sed -i -E 's|(do_content_caching[[:space:]]*=).*|\1 1|' {} + | |
mkdir -p /var/log/mod_evasive | |
redis-cli flushall | |
# Reload services | |
service apache2 restart | |
service mysql restart | |
service redis restart |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment