Por que meu servidor usa apenas 3 GB de memória?

4

O servidor tem 24 GB de memória e 4 CPUs quad-core. Ele executa um site ocupado em apache / MySQL / php e, às vezes, dá uma mensagem de que a carga do servidor é muito alta. Quando eu olho para os logs, ele nunca usa mais de 3 GB de memória, o que me parece estranho também. Isso pode ser uma configuração do MySQL ou do apache.

Aqui alguns dados

uname -a
Linux s2274 2.6.32-32-server #62-Ubuntu SMP Wed Apr 20 22:07:43 UTC 2011 x86_64 GNU/Linux


free -m
             total       used       free     shared    buffers     cached
Mem:         24153      20951       3201          0        125      17719
-/+ buffers/cache:       3106      21046
Swap:        11240         14      11226

Como você pode ver, aqui está escrito que há 20 GB em uso. Mas quando eu olho para o topo / htop nunca vem acima de 3092 uso. Os processadores não são realmente ativos, a carga média é de 0,9. Eu poderia aumentar de alguma forma a memória que é usada pelo apache e / ou MySQL para ver se ele pode usar toda a memória?

Desculpe, eu estava fora por um tempo ..... Aqui está a saída do comando mysqld:

120108  8:48:21 [Note] Plugin 'FEDERATED' is disabled.
  --binlog_cache_size=#
  --bulk_insert_buffer_size=#
  --delayed_queue_size=#
  --join_buffer_size=#
  --key_buffer_size=# The size of the buffer used for index blocks for MyISAM
  --key_cache_block_size=#
  --max_binlog_cache_size=#
  --max_binlog_size=# Binary log will be rotated automatically when the size
                      max_relay_log_size is 0. The minimum value for this
  --max_heap_table_size=#
  --max_join_size=#   Joins that are probably going to read more than
                      max_join_size records return an error.
  --max_relay_log_size=#
                      the size exceeds max_binlog_size. 0 excepted, the minimum
  --myisam_block_size=#
  --myisam_data_pointer_size=#
  --myisam_max_extra_sort_file_size=#
  --myisam_max_sort_file_size=#
  --myisam_sort_buffer_size=#
  --preload_buffer_size=#
  --profiling_history_size=#
  --query_alloc_block_size=#
  --query_cache_size=#
  --query_prealloc_size=#
  --range_alloc_block_size=#
  --read_buffer_size=#
  --read_rnd_buffer_size=#
  --record_buffer=#   Alias for read_buffer_size
  --sort_buffer_size=#
  --thread_cache_size=#
  --tmp_table_size=#  If an internal in-memory temporary table exceeds this
  --transaction_alloc_block_size=#
--transaction_prealloc_size=#
binlog_cache_size                 32768
bulk_insert_buffer_size           8388608
delayed_queue_size                1000
join_buffer_size                  12582912
key_buffer_size                   805306368
key_cache_block_size              1024
max_binlog_cache_size             18446744073709547520
max_binlog_size                   104857600
max_heap_table_size               805306368
max_join_size                     18446744073709551615
max_relay_log_size                0
myisam_block_size                 1024
myisam_data_pointer_size          6
myisam_max_extra_sort_file_size   2147483648
myisam_max_sort_file_size         9223372036853727232
myisam_sort_buffer_size           25165824
preload_buffer_size               32768
profiling_history_size            15
query_alloc_block_size            8192
query_cache_size                  805306368
query_prealloc_size               8192
range_alloc_block_size            4096
read_buffer_size                  25165824
read_rnd_buffer_size              25165824
sort_buffer_size                  25165824
thread_cache_size                 256
tmp_table_size                    805306368
transaction_alloc_block_size      8192
transaction_prealloc_size         4096

O memory_limit do php é 128M

Eu vejo esse limite de 3 gb em várias situações. F.i. Htop, top e quando eu logar no Webmin no status do servidor (sim eu uso o Webmin já que eu faço muito gerenciamento do meu iPad;))

Vou tentar adicionar uma captura de tela aqui ...

    
por Webrunner 26.11.2011 / 09:14

2 respostas

1

Você está usando 20951 de 24153. Os aplicativos não estão solicitando mais do que 3092, portanto, o kernel está usando o restante para cache e buffers. Como seus aplicativos precisam de mais memória, o kernel reduzirá o cache para acomodar os novos requisitos do aplicativo.

Ajustar a configuração do MySQL e do Apache para um desempenho ideal depende do aplicativo. Em alguns casos, como sites estáticos, um grande cache do sistema de arquivos é ótimo. Um site dinâmico, no entanto, com uma strong interação com o banco de dados, se beneficiaria de algumas mudanças na configuração padrão do MySQL.

Percona tem uma boa ferramenta para você começar a usar a configuração do MySQL. link Quando os fundamentos estiverem prontos, você pode ajustar as especificidades do seu aplicativo.

A configuração do Apache depende de quanto tráfego e do tamanho das solicitações. Sem saber nada, é difícil recomendar além dos padrões.

    
por Richard Ayotte 23.02.2012 / 17:36
1

Se eu estiver correto, você está executando um servidor de 32 bits

32 bit é limitado a 4 gb mem a menos que você use a imagem pae:

  

Um computador de 32 bits tem um tamanho de palavra de 32 bits, o que limita a memória, teoricamente, a 4 GB. Essa barreira foi estendida através do uso de 'Extensão de endereço físico' (ou PAE), que aumenta o limite para 64 GB, embora o acesso à memória acima de 4 GB seja um pouco mais lento.

não consigo encontrar se a imagem do kernel está incluída.

você pode tentar fazer um apt-get install linux-image-generic-pae

se não reiniciar, verifique se você usa mais da sua memória.

ELse considere instalar o servidor de 64 bits

    
por Bas van den Dikkenberg 11.03.2012 / 15:10

Tags