Desempenho

From MoodleDocs

Local:Administração> Servidor> desempenho


Moodle pode ser feito para desempenhar muito bem, em pequenos níveis de utilização ou de se expandir até muitos milhares de usuários. Os fatores envolvidos no desempenho são basicamente os mesmos que para qualquer base de dados PHP-impulsionada sistema. Ao tentar otimizar seu servidor, tentar centrar-se no elemento que vai fazer a diferença mais para o usuário. Por exemplo, se você tem relativamente mais do que os usuários navegando acessando o banco de dados, olhar para melhorar o desempenho webserver.


Obter uma base de referência

Antes de tentar qualquer otimização, você deve obter uma base de referência do componente do sistema que está tentando melhorar. Para experimentar o Linux LBS e para usar o Windows desempenho Monitor. Assim que tiver dados quantitativos sobre o modo como o sistema está executando atualmente, você será capaz de determinar se a alteração que você fez como tem qualquer impacto real.

O objectivo global de ajustes para melhorar o desempenho é a utilização de RAM (cacheing) e para reduzir disco baseado em atividade. É particularmente importante tentar eliminar swap file uso, tanto quanto é possível. Se o sistema começa a trocar, este é um sinal de que você precisa de mais memória RAM.

O 'otimização fim preferência' é geralmente: primária armazenagem (mais RAM), armazenamento secundário (mais rápido discos rígidos ou melhorados disco rígido configuração), processador (e mais rápido).

Escalabilidade

Moodle do design (com clara separação das camadas aplicação) permite uma forte escalável configurações. (Confira a lista de grandes instalações Moodle).

Grandes sites normalmente separado do servidor e banco de dados para servidores separados, embora de menor dimensão instalações este não é normalmente necessário.

É possível carregar um equilíbrio-Moodle instalação, por exemplo, utilizando mais do que um servidor. Os servidores devem separar consulta a mesma base e referem-se ao mesmo filestore área, mas por outro lado a separação das camadas pedido está completo o suficiente para fazer este tipo de agrupamento viável. Do mesmo modo, a base de dados poderia ser um cluster de servidores (por exemplo, uma MySQL cluster), mas esta não é uma tarefa fácil e que você deve procurar suporte especializado, por exemplo, De um Parceiro Moodle.

'Ver também' :

A configuração do hardware == == 'Nota: O mais rápido e eficaz mudança que você pode fazer para melhorar a desempenho é a 'aumentar a quantidade de memória RAM em seu servidor web - get tanto quanto possível (por exemplo, 4GB). Aumento primário memória irá reduzir a necessidade de processos de swap para o disco e permitirá que o seu servidor para lidar com mais usuários.

  • Melhor desempenho é adquirida pela obtenção do melhor 'processador capacidade', é possível, ou seja, dupla ou processadores dual core. Um moderno BIOS deverá permitir-lhe permitam hyperthreading, mas sim verificar se esta faz a diferença para o desempenho geral dos processadores utilizando-se uma CPU ferramenta benchmarking.
  • Se você puder pagar-lhes, use 'SCSI discos duros', em vez de unidades SATA. Unidades SATA irá aumentar a sua utilização do sistema CPU, que têm os seus próprios drives SCSI integrados transformadores e entrar em seu próprio quando tiver várias unidades. Se você tem de unidades SATA, verifique se sua placa mãe e as unidades próprias apoio NCQ (Native Command Queuing).
  • Compra discos rígidos com um 'baixa procurar tempo'. Isso irá melhorar a velocidade de seu sistema, especialmente quando acessar os relatórios do Moodle.
  • Seu tamanho 'swap file' corretamente. O conselho geral é a defini-la para 4 x físicas RAM.
  • Use uma 'sistema RAID disk'. Embora existam muitos diferentes configurações RAID você pode criar, o seguinte geralmente funciona melhor:
    • Instalar um controlador RAID de hardware (se você puder)
    • O sistema operacional e swap drive em um conjunto de discos configurado como RAID-1.
    • Moodle, servidor Web e servidor de Dados sobre um outro conjunto de discos configurado como RAID-5.
  • Use 'gigabit ethernet' para melhorar a latência e throughput. Isso é especialmente importante quando você tem seu servidor e banco de dados no servidor separados em diferentes hosts.
  • Verifique as configurações do seu 'placa de rede'. Você pode obter uma melhoria na desempenho, aumentando o uso de amortecedores e transmitir / receber descritores (equilíbrio com este processador e memória despesas gerais) e off-carregando TCP checksum cálculo para o cartão, em vez de o sistema operacional.
  • Leia esta Case Study em um servidor stress teste com 300 usuários. [1]
  • Veja este relatório de acompanhamento sobre o tráfego de rede e servidores cargas. [2]

Sistema Operacional

  • Você pode usar Linux (recomendado), baseado em Unix, Windows ou Mac OS X para o servidor 'sistema operacional'. * Nix sistemas operacionais geralmente exigem menos memória do que o Mac OS X ou Windows servidores para fazer a mesma tarefa como o servidor está configurado com apenas um shell interface. Adicionalmente Linux não têm taxas de licenciamento junto, mas pode ter um grande aprendizado curva se você é utilizado para outro sistema operacional. Se você tem um grande número de processadores executando SMP, você também pode querer considerar usando um sistema operacional altamente sintonizado como Solaris.
  • Verifique o seu próprio sistema operacional e 'vendedor instruções específicas' para otimização etapas.
    • Para Linux olhar para o Linux desempenho Team site.
    • Para Linux investigar o comando hdparm, por exemplo, Hdparm-d1-m16 pode ser usada para permitir leitura / gravação em múltiplos sectores e DMA. Montar discos com o async e noatime opções.
    • Para o Windows definir o separam de ser otimizado para aplicações de rede (Painel de Controle, Conexões de rede, conexão LAN, Properties, File & Printer Sharing for Microsoft Networks, Properties, Optimization). Você também pode pesquisar o Microsoft TechNet site para otimização documentos.

Web server desempenho

Instalando Firefox e os [https: / / addons.mozilla.org/en-US/firefox/addon/1843 firebug] prorrogação permitirá que você assista o tempo Que leva para cada página componente de carga. Além disso, o [https: / / addons.mozilla.org/en-US/firefox/addon/5369 Yslow] extensão irá avaliar a sua página contra Yahoo's 14 regras (video), para carregamento rápido websites.

PHP desempenho

  • Está fortemente recomendada para usar um 'PHP acelerador' para aliviar CPU load, como APC (recomendado), Accelerator.co.uk / PHPA, Xcache ou eAccelerator. (Tome cuidado para escolher um acelerador PHP que é conhecida por funcionar bem com a sua versão do PHP e nota que Turck MMCache é deixou de ser mantido e podem causar falhas com PHP 5). Coloque o cache PHP páginas de um TMPFS filesystem.
  • Desempenho de PHP é melhor quando instalado como um 'Apache / IIS ISAPI módulo' (em vez de um CGI).
  • Verifique também o 'memory_limit' em php.ini, reduzi-la a 16M de Moodle versão mais cedo do que 1,7 (Ver este fórum Discussão). Moodle para 1,7 ou mais tarde, é recomendado que o valor da memory_limit deve ser 40M.

Apache desempenho

  • Defina o 'MaxClients' directiva corretamente. Use esta fórmula para ajudar (que utiliza 80% da memória disponível para deixar espaço para pouparem):
 MaxClients = Total memória disponível * 80% / Max uso da memória apache processo 
Memória uso do apache processo é normalmente 10MB, de modo geral uma regra de ouro é a dividir sua memória disponível em megabytes por 10 para obter o valor de MaxClients. Para encontrar o máximo uso da memória apache processos ler o valor a partir do comando shell:
 # Ps-ylC httpd - sort: rss 
Se for necessário aumentar o valor de 'MaxClients para além do 256, você também precisará definir o 'ServerLimit directiva.
'Atenção': Não se tentado a definir o valor da MaxClients superior à sua memória disponível no seu servidor irá consumir mais do que RAM disponível e começar a swap em disco.
  • Considere reduzir o 'número de módulos' Apache que carrega no arquivo httpd.conf ao minumum necessário reduzir a memória necessária.
  • Use o 'versão mais recente do Apache' - Apache 2 tem uma melhor memória modelo, que reduz ainda mais memória.
  • Para Unix / Linux, considerar redução 'MaxRequestsPerChild' em httpd.conf para um valor tão baixo quanto 20-30 (se você configurá-lo a qualquer menor sobrecarga de forking começa a superam os benefícios).
  • Para uma pesadamente carregado servidor, considerar a definição 'KeepAlive Off (fazer isso apenas se o seu Moodle páginas não contêm links para recursos ou imagens carregadas) ou baixar o 'KeepAliveTimeout para entre 2 e 5 . O padrão é 15 (segundos) - quanto maior for o valor mais o servidor processos serão mantidos à espera que possivelmente ocioso conexões. Um valor mais precisos para KeepAliveTimeout é obtido pela observação quanto tempo leva seus usuários o download de uma página. Depois de alterar qualquer uma das variáveis KeepAlive, monitorar sua CPU utilização como pode haver uma sobrecarga adicional na preparação mais trabalhador processos / threads.
  • Como uma alternativa para usar KeepAlive Off, considerar a definição de um 'Reverse Proxy server' infront do Moodle servidor de cache arquivos HTML com imagens. Você pode então retornar ao Apache usando manter-alives no servidor Moodle.
  • Se você não usar um arquivo. Htaccess arquivo, definir o 'AllowOverride' variável para AllowOverride None para impedir. Htaccess pesquisas.
  • Configure 'DirectoryIndex' correctamente, de modo a evitar a negociação de conteúdo. Aqui está um exemplo de uma produção servidor:
 DirectoryIndex index.php index.html index.htm 
  • A menos que você esteja fazendo desenvolvimento trabalho do servidor, definir 'ExtendedStatus Off' e desativar mod_info bem como mod_status.
  • Deixe 'HostnamesLookups Desligado' (como padrão) DNS para reduzir a latência.
  • Considere reduzir o valor de 'Time_Out' para entre 30 a 60 (segundos).
  • Para o 'Opções directiva', evitar Opções Multiviews como este desempenha um diretório scan. Para reduzir disco I / O aproveitamento posterior
 Opções-índices FollowSymLinks 
  • 'Armazenamento em cache' - Apache pode ser dito para fazer páginas carregar uma forma muito mais rápida, especificando que o navegador deve cache alguns diferentes elementos da página, como imagens e reutilizar-los da memória local, em vez de pedir-lhes novamente a cada vez que uma página É solicitada. Como fazer isto varia ligeiramente entre OSes mas existem duas etapas básicas:
  1. Instalar e ativar mod_expires - referir-se a documentação ou homem páginas
  2. Adicione esse código para o servidor virtual config file dentro da seção <diretorio> para o diretório raiz (ou dentro do. Htaccess arquivo se AllowOverrides está On):
 <IfModule Mod_expires.c> 
  ExpiresActive On 
  ExpiresDefault "acesso mais 1 segundos" 
  ExpiresByType text / html "acesso mais 1 segundos" 
  ExpiresByType imagem / gif "acesso mais 1 semana" 
  ExpiresByType image / jpeg "acesso mais 1 semana" 
  ExpiresByType image / png "acesso mais 1 semana" 
  ExpiresByType text / css "acesso mais 1 semana" 
  ExpiresByType text / javascript "acesso mais 1 semana" 
  ExpiresByType aplicação / x-javascript "acesso mais 1 semana" 
  ExpiresByType text / xml "acesso mais 1 segundos" 
 </ IfModule> 

O efeito é fazer tudo ficar na memória cache exceto HTML e XML, que mudam dinamicamente. É possível obter uma diminuição nos vários cem por cento carga vezes desta maneira. Ajustar o cache vezes, de acordo com a freqüência com suas imagens etc mudança.

Mais info: www.metaskills.net

  • Se preferir, você pode aumentar a desempenho do servidor web usando o 'light-weight webserver' lighttpd em combinação com PHP em fastCGI-mode, em vez de Apache. Lighttpd tem um menor consumo de memória do que o Apache. Um único apache processo requer mais do que toda a RAM lighttpd com todos os seus processos-fastCGI juntos. Note que Lighttpd é relativamente difícil de configurar e administração assume uma posição mais tempo.

IIS desempenho

Todos alterar esta localização no registro:

 HKLM \ SYSTEM \ CurrentControlSet \ Services \ Inetinfo \ Parameters \ 
  • O equivalente a KeepAliveTimeout é 'ListenBackLog' (IIS - registro local é HKLM \ SYSTEM \ CurrentControlSet \ Services \ Inetinfo \ Parameters). Defina esta opção para entre 2 a 5.
  • Mudar o 'MemCacheSize' valor para ajustar a quantidade de memória (Mb) IIS que irá utilizar para os seus arquivos cache (50% da memória disponível por padrão).
  • Mudar o 'MaxCachedFileSize' para ajustar o tamanho máximo de um arquivo em cache no arquivo cache em bytes. Padrão é 262144 (256K).
  • Criar um novo DWORD chamado 'ObjectCacheTTL' para alterar o intervalo de tempo (em milissegundos) que objetos no cache são mantidas na memória. Padrão é de 30000 milisegundos (30 segundos).

Database desempenho

Moodle contém um script que exibe algumas chaves de dados estatísticos do desempenho ADOdb desempenho monitor. Execute o script em seu navegador, como no seguinte exemplo:

 Http://www.mymoodle.com/admin/dbperformance.php 

Use os dados mostrados como um guia para ajustar e melhorar o desempenho da sua base de dados servidor.

MySQL desempenho

A seguir estão MySQL configurações específicas que podem ser ajustados para obter um melhor desempenho no seu my.cnf (my.ini no Windows). O arquivo contém uma lista de definições e os seus valores. Para ver os valores actuais usar esses comandos

 SHOW STATUS; 
 SHOW VARIÁVEIS; 

'Importante': Você deve fazer backups da sua base de dados antes de tentar alterar qualquer servidor MySQL configuração. Após qualquer alteração ao my.cnf, reinicie o mysqld.

  • Ativar o 'cache' com
 Query_cache_type = 1. 

Para a maioria dos Moodle instala, defina o seguinte:

 Query_cache_size = 36M 
 Query_cache_min_res_unit = 2K. 

O cache vai melhorar o desempenho se você está fazendo algumas atualizações no banco de dados.

  • Defina o 'tabela cache' corretamente. Para definir 1,6 Moodle
 Table_cache = 256 

(Min), e para 1,7 Moodle conjunto

 Table_cache = 512 

(Min). A tabela cache é utilizado por todos os threads (conexões), a fim de verificar o valor opened_tables para mais ajustar - se opened_tables> 3 * table_cache então aumentar table_cache upto seu SO limite. Note também que o valor de table_cache também vai mudar, dependendo do número de módulos e plugins que você tenha instalado. Localize o número de seu servidor executando o mysql declaração abaixo. Olhe para o número devolvido e definir table_cache a este valor.

 Mysql> SELECT COUNT (table_name) FROM information_schema.tables ONDE table_schema = 'yourmoodledbname'; 
  • Defina o 'thread cache' corretamente. Ajustar o valor de modo a que a sua utilização é thread cache mais próximo de 100% quanto possível por esta fórmula:
 Tópico cache utilização (%) = (threads_created / conexões) * 100 
  • O 'chave tampão' pode melhorar a velocidade de acesso Moodle's consultas SELECT. O tamanho correto depende do tamanho do índice arquivos (. Myi) e no Moodle 1,6 ou posterior (sem módulos adicionais e plugins), a recomendação para este valor é key_buffer_size = 32M. O ideal seria que você deseja que o banco de dados para a leitura do disco uma vez para cada 100 pedidos tão monitor que o valor é adequado para a sua instalação, ajuste o valor de key_buffer_size para que as seguintes fórmulas são verdadeiras:
 Key_read / key_read_requests <0,01 
 Key_write / key_write_requests <= 1,0 
  • Defina o 'número máximo de conexões', para que seus usuários não verá um "Excesso de conexões" mensagem. Tenha cuidado para que esta possa ter um impacto sobre o total de memória usada. MySQL ligações costumam durar milisegundos, por isso é invulgar, mesmo para um servidor pesadamente carregado para este valor deve ser superior a 200.
  • Gerir 'alta rebentamento atividade'. Se a sua instalação Moodle utiliza uma série de testes e você estiver enfrentando problemas desempenho (por verificar o valor do acompanhamento threads_connected - ele não deve ser a subir) pense em aumentar o valor das back_log.
  • 'Otimizar os seus quadros semanais e após a actualização do Moodle'. É também uma boa prática para otimizar seus quadros após realizar um grande exercício supressão de dados, por exemplo, No final de seu semestre ou ano acadêmico. Isso irá garantir que o índice arquivos estão actualizados. Backup de seu banco de dados primeiro e, em seguida, use:
 Mysql> CHECK TABLE mdl_tablename; 
 Mysql> OPTIMIZE TABLE mdl_tablename; 
As tabelas comuns em Moodle para verificar se mdl_course_sections, mdl_forum_posts, mdl_log e mdl_sessions (se estiver usando dbsessions). Quaisquer erros precisam ser corrigidos utilizando REPAIR TABLE (veja o MySQL manual e esta Mod / forum / discuss.php? D = 58208 # p279638 fórum script).
  • 'Manter a chave distribuição'. Todo mês ou por isso é uma boa idéia para parar o mysql servidor e execute estes comandos myisamchk.
 # Myisamchk-a-S / pathtomysql / dados / moodledir / *. MYI 
'Atenção': Você deve parar o processo mysql database (mysqld) antes de executar qualquer comando myisamchk. Se não o fizer, corre o risco de perda de dados.
  • Reduzir o número de 'tabelas temporárias salvos no disco'. Verifique isso com o created_tmp_disk_tables valor. Se este é relativamente grande (> 5%) aumentar tmp_table_size até ver uma redução. Note-se que isso terá um impacto sobre a utilização de RAM.
  • Moodle as tabelas estão no formato MyISAM, por isso 'vire InnoDB off', não há como ganhar desempenho. Adicionar skip-innodb </ code> ao seu my.cnf </ code> file. Se você precisa usar InnoDB, você deve converter todas as tabelas de Moodle. Para fazer isto execute o innodb script:
 Http://www.mymoodle.com/admin/innodb.php 

Outros dados === desempenho links ===

Moodle Admin configurações

  • Em Moodle 1,7 ou mais tarde, defina o 'Cache tipo' para seu servidor: Site Admin -> Servidor -> Desempenho -> Cache tipo. Existem várias opções disponíveis.
* Se você ainda não tem eaccelerator ou mmemcached instalado, escolha "interna" (que faz uso do registro / cache interno - veja o próximo ponto).
* Se você tiver um único servidor e ter compilado 'eaccelerator com memória partilhada apoio', defina o tipo de cache para o eaccelerator opção.
* Se você tem um 'separada memcached servidor', defina o tipo de cache e memcached digite um csv lista de endereços IP de servidores de.
  • Ativar o 'record / cache interno': Site Admin -> Servidor -> Desempenho -> Record cache = True. Definir a quantidade máxima de memória alocada para o cache no Int Cache Max caixa. Isto irá permitir uma primário cache de registros de dados, sem utilizar qualquer mecanismo de cache de dados, por exemplo, MySQL / PostgreSQL cache. Veja este Tracker entrada para uma ampla discussão.
  • Ativar o 'língua cache'.
  • Grande arquivos de registro pode causar desempenho global a degradar ao longo do tempo. Se você observar que o site foi-se progressivamente mais lento got carregando páginas no browser, 'reduzir sua vida Log tempo' configuração (Administração / Server / Cleanup).
  • O desempenho pode ser substancialmente melhoradas, permitindo Moodle para usar o sistema 'zip / unzip comandos (em vez de PHP à base de bibliotecas zip) - visitar Administração / Server / Sistema Caminhos e digite o caminho para os executáveis. (Do mesmo modo, o enchimento, no caminho para 'du irá melhorar Moodle da velocidade na lista diretório conteúdo.)
  • Observe que, usando 'web conexões seguras' ( 'https ao invés de 'http) exerce uma maior carga de transformação, tanto para o servidor eo cliente - especialmente porque cacheing não pode ser Utilizados de forma tão eficaz, de modo que o número de pedidos arquivo é susceptível de aumentar dramaticamente. Por este motivo usando https para todos Moodle páginas, não é recomendada. Você pode ativar https apenas para tela de login, basta partir do Moodle config página.
  • Verifique o seu 'filtros'. Tendo demasiados filtros activos pode ter efeitos graves no servidor carga, especialmente em sistemas de menor efeito. O número de filtros activa tem um efeito directo sobre a percepção latência do seu site, que é o tempo necessário para cada página impressão.
  • Ativar o 'textocache ", mas não" Filtrar todas as cordas ", a menos que você tenha uma necessidade específica. Se estiver em dúvida perfil do desempenho, e ver como as alterações afetam o tempo de processamento.
  • Verifique o seu 'anti-vírus' medidas no servidor. Apesar de serem úteis para a prevenção de segurança buracos serem explorados, alguns "On-Demand" scanners pode afectar o desempenho pela digitalização conteúdo da página (word, ppt arquivos etc).
  • Se houver problemas carregando desempenho naturalmente páginas, verificar o 'Resource módulo definições'. A configuração é conhecida resource_filterexternalpages ao abrandamento do crescimento naturalmente páginas e deve ser ajustado para 'Não' para obter um melhor desempenho.
  • Verifique o seu 'fórum configurações'. Para melhorar o desempenho conjunto forum_trackreadposts = Não e Sim forum_usermarksread = (isto terá um impacto sobre a conveniência de seus usuários "fórum experiência). Igualmente analisar a possibilidade de fixar o tempo do dia, quando postagens antigas são apagadas do leia tabela (forum_cleanreadtime) para quando seu site estiver menos ocupada.

Desempenho dos diferentes módulos Moodle

Moodle da actividade módulos, filtros e outros plugins pode ser activada / desactivada. Se necessário, você pode desejar desativar algumas funções (como o chat) se não for necessária - mas isso não é necessário. Algumas notas sobre o desempenho de alguns módulos:

  • O 'Chat módulo é disse a ser uma hog em termos de frequentes solicitações HTTP para o servidor principal. Isto pode ser reduzida através da configuração do módulo de usar'Streamed atualizações, ou, se você estiver usando um servidor baseado em Unix, por correr o bate-papo no modo daemon. Quando estiver a utilizar o módulo Chat usar as configurações para sintonizar a sua espera para carregar. Uma atenção especial à chat_old_ping'e'chat_refresh parâmetros como estes podem ter maior impacto no servidor carga.
  • O 'Quiz' módulo é conhecida a esticar database desempenho. Experimente a optimizar o seu servidor de dados pelo tuning. Veja por um breve relatório sobre o desempenho de 55 estudantes simultaneamente usando quizzes
    • Ver este Case Study de uma extensa servidor stress test quiz com 300 usuários. [3] E este relatório de acompanhamento sobre o tráfego de rede e servidores cargas. [4]
  • O Moodle 'Cron tarefa é desencadeada por chamar o script cron.php'. Se este é chamado no HTTP (por exemplo, usando wget ou dobras), pode ter uma grande quantidade de memória em grandes instalações. Se ele for chamado pela invocando directamente o php comando (por exemplo,php-f / caminho / para / moodle / diretório / admin / cron.php) eficiência pode ser muito melhorado.

Ver também

Tem havido uma série de discussões sobre moodle.org sobre desempenho superior, aqui estão algumas das mais interessantes e úteis (potencialmente) queridos:

Categoria: Desempenho