Buckminster
(usa Debian)
Enviado em 23/02/2023 - 15:30h
americoxavier escreveu:
Salve Galera !
Pessoal esta aparecendo um JOB para instalar um servidor MYSQL, montar é tranquilo, O Problema que o cliente tem uma demanda de 1500 conexões ao banco de dados , leitura e gravação, e estou vendo como dimensionar tal server, alguem da comunidade ja passou algo desse porte, hoje em dia HD não é problema, o que vejo nesse cenario é memoria e processamento, como dimensionar um projeto desse .
Obrigado
Depende o que você entende por conexões simultâneas. Caso você esteja falando de acessos, por exemplo, 500 clientes acessando um site, basta o banco de dados ter um limite de 25 a 30 conexões simultâneas.
O que se entende por conexão simultânea é, grosso modo, que você pode executar 25 comandos para o banco simultâneamente, caso você configurar para 25 o limite máximo. Uma pesquisa, uma inserção, edição simples, por exemplo, em uso normal demora meros milissegundos e normalmente é executado poucas vezes em cada acesso, liberando rapidamente essa conexão para servir outro cliente.
Caso for real o que você falou, 1.500 conexões simultâneas (não acessos), então terá que ter uma boa quantidade de memória e um bom processamento nesse servidor.
Influencia também o tipo de conexão, por exemplo, caso a maioria delas forem somente texto e não trabalhar com imagens e/ou vídeos não pesa muito. Leve em conta também que se você realizar uma requisição ao banco de dados e, após a consulta, por exemplo, não fechar as conexões, você as deixará abertas causando o problema de conexões simultâneas. Sempre deve fechar a conexão na aplicação.
O Mysql não sei se tem limite máximo de conexões. No SQL Server o limite é de 32.767 (absurdamente grande) conexões e no SQL Server o limite é por instância e não por banco de dados.
O PostgreSQL, por exemplo, aloca uma quantidade de memória por conexão, geralmente em torno de 5 a 10 MB por conexão. É importante considerar a quantia total de memória que está disponível para sua implementação antes de aumentar o limite de conexão. Para aumentar o limite de conexão, talvez você queira, primeiro, escalar sua implementação para assegurar que tenha memória suficiente para acomodar mais conexões, ou seja, quanto maior o limite de conexões mais memória RAM, o que é óbvio. Ainda no Postgres, caso você colocar o limite máximo de conexões em 215, terá de ter pelo menos 2 GB de RAM só para o banco de dados. Sei que é o Mysql, mas é só para ter uma idéia, pois os bancos de dados são parecidos no tocante ao gerenciamento de memória com algumas diferenças específicas para cada banco, claro.
O MySQL tem o recurso de pool de conexões, porém, é mais interessante deixar a aplicação gerenciar o pool de conexões:
https://dev.mysql.com/doc/x-devapi-userguide/en/connecting-connection-pool.html
Otimizações:
https://dev.mysql.com/doc/refman/8.0/en/data-size.html
Veja aqui nesse link:
https://www.fabriciolima.net/blog/2010/12/25/casos-do-dia-a-dia-diminuindo-um-problema-de-memoria-no...
Segundo o autor (é de 2010) tinha 1500 conexões simultâneas e o servidor tinha 4GB de memória e o SQL Server utilizava 2.51 GB para manipular 200GB de dados.
Apesar de ser SQL server dá para você ter uma boa base, mas hoje em dia 4GB em um servidor que deve ser robusto não dá nem para o cheiro. No mínimo uns 12 GB de RAM.
Claro, se for Linux aí pode considerar 8 ou 10GB de RAM, mas lembrando que memória RAM num servidor é sempre bom deixar uma margem a mais, pois deve se levar em conta se terá outras aplicações como firewall, DHCP, etc, além do próprio sistema operacional.
________________________________________________
Always listen the Buck!