… ulimit e sysctl

Com o ulimit e sysctl você pode configurar uma série de recursos default. Exemplo: Quando um usuário inicia muitos processos e o sistema acaba travando, neste caso podemos limitar os recursos para tal usuário, para que assim este caso não volte a ocorrer.
Código 1: Exemplo de ulimit

# ulimit -a
core file size          (blocks, -c) 0
data seg size           (kbytes, -d) unlimited
file size               (blocks, -f) unlimited
pending signals                 (-i) 8191
max locked memory       (kbytes, -l) 32
max memory size         (kbytes, -m) unlimited
open files                      (-n) 1024
pipe size            (512 bytes, -p) 8
POSIX message queues     (bytes, -q) 819200
stack size              (kbytes, -s) 8192
cpu time               (seconds, -t) unlimited
max user processes              (-u) 8191
virtual memory          (kbytes, -v) unlimited
file locks                      (-x) unlimited

Todas estas configurações podem ser manipuladas. Um bom exemplo é a possibilidade é limitar a criação de forks que podem resultar em uma parada do sistema.

Código 2: Bash e um fork bomb

$ :( ){ :| :& };:

Isso não é bom – alguns usuários com acesso ao shell, podem ficar sem acesso por conta do código acima. Mas podemos limitar o usuário a iniciar 30 processos, sendo o dano ao nosso sistema minimo.

Código 3: Setando o limite de processos

# ulimit -u 30
# ulimit -a
…
max user processes              (-u) 30
…

Se você tentar rodar o forkbomb ele deverá rodar, porém será apresentada a seguinte mensagem: “fork: resource temporarily unavailable”. Pois ele não deixará com que o forkbomb inicie mais processos do que foi setado anteriormente (neste caso 30).
Código 4: Explorando as variáveis do sysctl

# sysctl -a
…
vm.swappiness = 60
…

A lista de variáveis que podem ser manipuladas é grande (367 linhas no meu sistema). Uma outra variável útil é o vm.swappiness. Ela controla como será usada o swap (com máximo de 100) ou mais swap será usada. Lembrando que este usado inapropriado de swap, influencia diretamente na performance do sistema, já que não haverá memória quando se utiliza swap.

Código 5: Reduzindo swappiness

# sysctl vm.swappiness=0
vm.swappiness = 0

Referência: http://www.gentoo.org/news/en/gwn/20050808-newsletter.xml

Não ha comentários

Leave a reply