Ir para conteúdo

Otimizando Server Save - Limites Do Otserv (100% Linux)


Posts Recomendados

  • Administrador

Otimizando Server Save - Limites do OTserv

 

Fiz esse tutorial a pedido da galera que esta procurando otimizar o server save do seu OT. Nesse tutorial nós usamos o mysql tuner que é mais fácil, mas se você quiser estudar mysql e aprender como ele trabalha, como funciona cada variável, engine de tabela, storage e etc.. seria muito melhor pro seu servidor.

 

Note que estamos usando Linux aqui, pois eu não rodo otserver em windows (não gosto, da problema, é ruim ...). Não sei se o mysql tuner roda em windows, se alguém ai souber posta nesse tópico ou cria um outro tutorial usando windows

:D

 

Por que o server save laga?



A Cipsoft faz um grande save 1x por dia, mas como nossos sistemas, gestão é mais amadora que eles é um risco muito grande para um otserver trabalhar com save diário, por isso, a maioria das pessoas escolhe usar server save a cada 15, 30 ou 60 minutos.

 

Quando o sistema faz um server save ele despeja todos os dados que estão em memória no banco de dados e aqui temos uma grande carga de IO (disco). Para melhorar isso vamos aprender abaixo como otimizar um pouco o mysql para ele fazer mais cache e assim usar mais a memória RAM que é milhares de vezes mais rápida que o acesso a disco e também, já que não temos saída, como melhorar nosso IO (é caro isso).

 

1- Otimizando Mysql

Linux apenas, se alguém souber como usá-lo em windows poste aqui que atualizo

 

O que é Mysql Tuner?

Um programa desenvolvido em perl que vai ler seu mysql e propor melhorias na configuração dele para otimizar o uso do cache e entender onde estão seus problemas.

 

Download & Install mysql tuner


wget http://mysqltuner.com/mysqltuner.pl
chmod +x mysqltuner.pl
./mysqltuner.pl

 

Nota: Recomendo que deixe o mysql por 24 horas+ ligado para que ele consiga ser mais preciso na análise.

 

Entendendo o Software e fazendo modificações

Após você rodar o mysql tuner pelo comando (./mysqltuner.pl) você vai ver uma tela parecida com isso

 

>> MySQLTuner 0.9.8 - Major Hayden <major@mhtx.net>

>> Bug reports, feature requests, and downloads at http://mysqltuner.com/

>> Run with '--help' for additional options and output filtering

Please enter your MySQL administrative login:<-- root

Please enter your MySQL administrative password:<-- yourrootsqlpassword

 

-------- General Statistics --------------------------------------------------

[--] Skipped version check for MySQLTuner script

[!!] Your MySQL version 4.1.11-Debian_etch1-log is EOL software! Upgrade soon!

[OK] Operating on 32-bit architecture with less than 2GB RAM

 

-------- Storage Engine Statistics -------------------------------------------

[--] Status: +Archive -BDB -Federated +InnoDB +ISAM -NDBCluster

[--] Data in MyISAM tables: 301M (Tables: 2074)

[--] Data in HEAP tables: 379K (Tables: 9)

[!!] InnoDB is enabled but isn't being used

[!!] ISAM is enabled but isn't being used

[!!] Total fragmented tables: 215

 

-------- Performance Metrics -------------------------------------------------

[--] Up for: 12d 18h 33m 30s (1B q [1K qps], 185K conn, TX: 3B, RX: 377M)

[--] Reads / Writes: 78% / 22%

[--] Total buffers: 2.6M per thread and 58.0M global

[OK] Maximum possible memory usage: 320.5M (20% of installed RAM)

[OK] Slow queries: 0% (17/1B)

[OK] Highest usage of available connections: 32% (32/100)

[OK] Key buffer size / total MyISAM indexes: 16.0M/72.3M

[OK] Key buffer hit rate: 99.9%

[OK] Query cache efficiency: 99.9%

[!!] Query cache prunes per day: 47549

[OK] Sorts requiring temporary tables: 0%

[!!] Temporary tables created on disk: 28%

[OK] Thread cache hit rate: 99%

[!!] Table cache hit rate: 0%

[OK] Open file limit used: 12%

[OK] Table locks acquired immediately: 99%

[!!] Connections aborted: 20%

 

-------- Recommendations -----------------------------------------------------

General recommendations:

Add skip-innodb to MySQL configuration to disable InnoDB

Add skip-isam to MySQL configuration to disable ISAM

Run OPTIMIZE TABLE to defragment tables for better performance

Enable the slow query log to troubleshoot bad queries

When making adjustments, make tmp_table_size/max_heap_table_size equal

Reduce your SELECT DISTINCT queries without LIMIT clauses

Increase table_cache gradually to avoid file descriptor limits

Your applications are not closing MySQL connections properly

Variables to adjust:

query_cache_size (> 16M)

tmp_table_size (> 32M)

max_heap_table_size (> 16M)

table_cache (> 64)

 

Note que na parte "recommendations" (recomendações) ele já propor a alteração de algumas variáveis do mysql, certo? Faça-as e vá testando e experimentando!

 

Alterando configurações mysql

Dependendo da sua distro o arquivo fica em locais diferentes, eu uso debian 6.0 e o meu local é /etc/my.cnf.

 

pico /etc/my.cnf

 

2- VPS ou Dedicado? Sim, isso influencia no server save!

As empresas confiáveis hoje usam sistemas de virtualização chamados VMware, OpenVZ, HyperV etc... Todos esses softwares são muito bons, mas quando estamos falando de muitos players on-line e um sistema (otserver) que só consegue trabalhar com 1 CPU (núcleo) por limitações de desenvolvimento, temos um grande problema.

 

Começar um otserver com VPS é tranquilo, mais barato, mas quando você crescer... POR FAVOR! Use o dinheiro de VIP, que seus players doam com tanto suor, para melhorar seu produto para eles. Isso é o MÍNIMO que vocês podem fazer para garantir uma qualidade descente.

 

Todos esses sistemas de VPS limitam o IO (taxa de trocas de dado entre a memória e o disco), pois rodam 2~8 otservers em uma máquina física. Então acho que já entenderam né?

 

VPS apenas para servidores que estão começando (até 100 online), se você quiser otimizar seu server save, mude para um servidor dedicado!

 

3- Segurança para contratar seu dedicado? Tenho que falar sobre isso.

Tomem muito cuidado ao contratar a empresa do seu servidor, o xtibia.com ficou 1 semana offline pois uma empresa usava os dedicados dos clientes para nos atacar e isso é CRIME, tivemos que mover pedidos de desligamento para datacenters e provavelmente os clientes foram prejudicados por isso.

 

Ter uma empresa de hosting hoje é muito fácil, qualquer um pode ter, mas estar no mercado há anos que é o difícil. Por isso recomendo só 1 empresa aqui no brasil para vocês terem seu VPS e depois seu dedicado, serversoft.com.br!

 

Sendo muito sincero com vocês, o globalwar hoje hospeda direto com datacenters americanos, pois temos esse conhecimento na equipe, se você não é nenhum especialista em servidores e não tem ninguém para isso, hospede com uma revenda aqui no brasil (serversoft.com.br), não vai pagar mais caro por isso e ainda terá suporte em português e toda a ajuda deles.

 

Agora vocês entendem, por que proibimos anúncios de outras empresas aqui né? Cada dia uma empresa diferente vem pedir para anunciar aqui conosco, mas como é um mercado muito complicado, eu prefiro proteger vocês usuários ganhando menos com publicidade mas mantendo uma empresa que eu confio como patrocinadora.

 

3- HD Sata -> SSD? A grande sacada...

Se você chegou até aqui e seguiu meus passos, meus parabéns! Espero que aqui você já esteja com um dedicado ou pelo menos pensando (rsrs, prefiro a palavra convencido) em alugar um o mais rápido possível!

 

Os servidores dedicados normais vêem hoje com hds SATA que possuem uma velocidade mecânica de 7200RPM, nós precisamos de mais performance, por isso, você deve solicitar que inclua um HD SSD 32GB para o seu dedicado, nesse HD só vai rodar o mysql, pois ele precisa de performance e fica tranquilo que seu OTserver não vai ter 32GB de banco de dados, pois ele pararia de funcionar primeiro se você não der clean de vez em quando na database...

 

Veja a tabela de comparação:

- HD SATA: 150mb/s (mecânico)

- HD SATAII: 300mb/s (mecânico)

- HD SSD: 3gb/s (memória volátil - eletrônico)

 

O preço de um HD SSD custará um adicional entre $40~$70 por mês para seu dedicado!

 

4- Onde chegamos com isso?

- O server save de 10s com 300 online, caiu para 1.5s

 

5- Demais Dicas? Enviadas por usuários em comentários ou e-mails.

 

Christian Letti Say's:

Desfragmentar Tabelas do Mysql
mysqlcheck -p --auto-repair --check --optimize --all-databases

 

 

Créditos da Solução:

- tunning mysql & hd ssd (dark bart)

- mysql tuner: Kydrai & christian (pstorm.net)

 

 

Espero ter ajudado, perguntas???

21nl25z.png

Link para o comentário
Compartilhar em outros sites

  • Respostas 41
  • Created
  • Última resposta

Top Posters In This Topic

As maiores dificuldades que tivemos foram relacionadas a servidores, coisas como estabilidade, save, segurança e ataques.

Isso é fundamental para se manter um servidor online.

São ótimas dicas e é um assunto que está em falta nos fóruns de open tibia.

Editado por kydrai
Link para o comentário
Compartilhar em outros sites

Ótimo tutorial, realmente é um assunto que deve ser discutido.... Como foi citado pelo amigo acima, estabilidade, segurança e boa jogabilidade, são pontos necessários e se bem oferecidos, torna o servidor popular e claro, muito divertido :)

Link para o comentário
Compartilhar em outros sites

  • Administrador

Galera, descobri que ele roda em windows também

https://blueprints.launchpad.net/mysqltuner/+spec/windows-support

 

Quem puder testar ai seria legal, posta aqui que eu adiciono no tutorial lá em cima para outros usuários serem ajudados.

Link para o comentário
Compartilhar em outros sites

Ótimo tutorial Gustavo... eu utilizei outro Modo para optimizar meu Banco de dados mais o seu é bem mais eficiente, Parabéns e Reputado.

Link para o comentário
Compartilhar em outros sites

Maioria dos lags no serve save demora pela grande quantidade de tabelas que é feito o save, ou seja eu excluir algumas tabela do server save, deixando só as importantes, as insignificantes eu salvo normalmente a cada 80 Minutos, mais também eu não deixo para salva as tabelas importantes somente o serve save, eu dou um save nela a cada 3 Horas também, até

Link para o comentário
Compartilhar em outros sites

Uma vez eu fiz uma coisa esqisita no meu evolutions quando era 8.0 nuss aquele save era uma merda auhauha

Ai eu dividi o save em partes, e o save passou muito mais eficiente.

 

Ground Cache já não faz um papel semelhante?

Mesmo asism excelente tutorial

Editado por Tryller
Link para o comentário
Compartilhar em outros sites

Bom quem puder postar para windows vai ser de grande ajuda, eu uso windows pois não sei nada de linux, meu server agora está pesando no save, demorando em torno de 20 segundos "tempo de mais" com isso agora está causando kicks coisa que player detesta. Se alguém puder ajudar vai ser muito bom pois creio que 80% dos ots são rodados em windows, valeu

Link para o comentário
Compartilhar em outros sites


×
×
  • Criar Novo...