systemd resource management (caso específico: mysql)

1

Eu tenho um problema para resolver, como funciona o gerenciamento de recursos no systemd.

Para deixar claro onde estou e como cheguei lá, devo começar explicando minha situação:

Depois de migrar um mysql-db do Ubuntu 14.04 para o 16.04 eu tenho que lidar com o systemd. Não é minha primeira vez e não há problema até hoje. No 16.04 notei a entrada de log durante o mysql-startup:

Changed limits: max_open_files: 1024 (requested 5000)

Descobri que a variável-mysql max_open_files ( max_open_files não está definida na minha configuração atual!) é dinâmica, dependendo de 4 cenários diferentes (veja: link ) e no meu caso, obviamente cenário não. 4 é usado.

Então, meu ponto é: O mysql-config em 14.04 e 16.04 é o mesmo, mas parece que o gerenciamento de recursos atua diferente com o systemd como aconteceu em 14.04 (com ulimit & /etc/security.d/limits.conf ) A condição que o mysql usa o cenário no 4 é que 'se o limite do sistema operacional for Infinity' for verdadeiro ... por que é o Infinity do limite do sistema operacional?

Outra coisa com a qual estou lutando: Se eu definir max_open_files no meu mysql-config como digamos '1000' e dar uma olhada em /proc/[myslq-pid]/limits , eu posso ver que o soft-limit está definido como 1000 e o hard-limit é 4096.

Pergunta 1 : Por que o limite 4096, como condição 4 acima, é verdadeiro em 'se o limite do sistema operacional for Infinity' ...

E posso definir max_open_files para qualquer valor entre 1 e 4096 e define limite - que é o comportamento esperado. Mas se ele for definido acima de 4096, ele retornará para softlimit = 1024 & hardlimit = 4096. Eu não entendo esse comportamento, porque, novamente, a condição 4 acima ataca true em if operating system limit is Infinity ...

Isso leva à minha pergunta 2 : De onde vem esse 'valor padrão'? E porque eu não sou capaz de definir o limite superior a 4096?

Nota : Assim que eu definir LimitNOFILE=number no mysql-service-unit do systemd, 'number' é setado como hard e hardlimit e eu posso definir valores maiores que 4096. Confirmado olhando em /proc/[myslq-pid]/limits novamente.

Eu dei uma olhada nos documentos do systemd, mas por algum motivo a única coisa que foi mencionada em termos de 'defaults' são os arquivos /etc/systemd/system.conf e /etc/systemd/user.conf , onde eu posso definir DefaultLimitNOFILE= , que é desabilitado por padrão - então existe um default Default ??

Eu realmente não entendo esse comportamento ... espero que alguém tenha uma dica sobre como resolver isso.

Eu aceito qualquer conselho ou sugiro que você tenha!

Eu até ficaria feliz em ler mais documentações, isso explica isso - mas eu simplesmente não encontrei as corretas ... tudo que encontrei me leva de volta a systemd.resource-control , systemd.exec e systemd/ControlGroupInterface que não me levou mais longe do que acabar aqui:)

    
por rohr 16.01.2018 / 00:30

0 respostas