Carga alta no servidor, como resolver?

Vou abordar nesse artigo um assunto muito procurado por administradores de servidor, principalmente profissionais que estão se deparando pela primeira vez com servidores atingindo seu limite de acesso e carga (server load alto), ficando muito lento ou até mesmo inacessível, vamos lá:

Importante: como administrador do servidor e poder fazer essas alterações, será preciso que tenha acesso a raiz dos arquivos e também acesso ao ssh.

Primeiro: Através de comando ssh, podendo utilizar o aplicativo putty por exemplo, verifique os processos que estão chegando a sua porta http (porta 80)

netstat -plan|grep :80 | awk {‘print $5’}|cut -d: -f 1|sort|uniq -c|sort -n

Segundo: Continuando no ssh, com o comando abaixo, liste os processos mysql de seu servidor a cada segundo:

mysqladmin processlist -i1

Terceiro: Veja com o comando abaixo, o total de conexões em seu servidor:

netstat -n -p|grep SYN_REC | wc -l

Obs: Os comandos abaixo, detalham os acessos a portas específicas, isso caso esteja suspeitando de excesso de processos em uma determinada porta de seu servidor:

(ssl) netstat -nap | grep :443 | wc -l
(webmail) netstat -nap | grep :2095 | wc -l
(site normal) netstat -nap | grep :80 | wc -l

Quarto: Agora você precisa saber se não está sendo invadido, isto porquê nada vai adiantar se você configurar seu servidor para grande demanda lícita se na verdade alguns indivíduos mal intencionados estejam atrapalhando seu negócio invadindo suas portas lógicas através de scripts.

netstat -n -p | grep SYN_REC | sort -u

Aqui você terá o IP que está batendo e a porta que está sendo alvo (obviamente caso esteja sendo invadido realmente, senão, apresentará os acessos normais de seu servidor)

Se precisar bloquear algum IP, é esse aqui:

# iptables -A INPUT -s IP-DO-FDP -j DROP

** IP-DO-FDP  (ip da indivíduo que está batendo em sua porta e você quer bloqueá-lo)

Quinto: Instale o ConfigServer Security & Firewall – csf (caso ainda não tenha em seu servidor, solicite ao suporte da BHSite esse serviço) , aplicativo de firewall que funciona no WHM e tem uma função importantíssima na segurança de seus dados.

Altere na configuração:

CT_LIMIT = 50

SYNFLOOD = 0

SYNFLOOD_RATE = 30/s

SYNFLOOD_BURST = 35

CONNLIMIT = 0:65535;30

PORTFLOOD = 0:65535;tcp;20;5,0:65535;udp;20;5

UDPFLOOD = 1

UDPFLOOD_LIMIT = 45/s

UDPFLOOD_BURST = 35

Sexto e último:  Altere a quantidade de conexões simultâneas de seu banco de dados Mysql, acesse:

Primeiro – Entrar via SFTP ou SSH usando root
Segundo – Abrir o arquivo /etc/my.cnf

[mysqld]
innodb_file_per_table=1
open_files_limit=50000
max_connections=550
max_user_connections=60
default-storage-engine=MyISAM
thread_cache_size=4
query_cache_size=20M
table_cache=220
tmp_table_size=32M
max_heap_table_size=32M
max_connect_errors=20
table_cache=85
innodb_buffer_pool_size=134217728
query_cache_limit=3M
query_cache_size=512M
sort_buffer=2M
join_buffer=2M
max_join_size=2M
max_allowed_packet=268435456

Terceiro – Guardar as alterações feitas no arquivo
Quarto – Reiniciar o servidor MySQL: /etc/init.d/mysqld restart

Muito Importante: Todas essas alterações são exclusivamente por sua conta e risco, isto é um material para complementar seu estudo e deve ser testado antes de implementar em seu ambiente de produção.