![Por que meu servidor usa apenas 3 GB de memória](https://rvso.com/image/959231/Por%20que%20meu%20servidor%20usa%20apenas%203%20GB%20de%20mem%C3%B3ria.png)
O servidor possui 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 está muito alta. Quando olho os logs, ele nunca usa mais de 3 GB de memória, o que também me parece estranho. Esta pode ser uma configuração do MySQL ou 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 diz que há 20 GB em uso. Mas quando olho para top/htop, nunca ultrapassa o uso de 3.092. Os processadores não estão realmente ativos, a carga média é de 0,9. Posso 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, estive ausente 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 limite de memória do php é 128M
Vejo esse limite de 3 GB em diversas situações. Fi Htop, top e quando faço login no Webmin no status do servidor. (sim, eu uso o Webmin, pois faço muito gerenciamento no meu iPad;))
Vou tentar adicionar uma captura de tela aqui ...
Responder1
Você está usando 20951 de 24153. Os aplicativos não estão solicitando mais do que 3092, então o kernel está usando o restante para cache e buffers. À medida que 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 obter desempenho ideal depende do aplicativo. Em alguns casos, como sites estáticos, um grande cache do sistema de arquivos é ótimo. Um site dinâmico, porém com muita interação com o banco de dados, se beneficiaria com algumas alterações na configuração padrão do MySQL.
Percona tem uma ótima ferramenta para você começar a configurar o MySQL.http://tools.percona.com/wizardDepois que o básico estiver definido, você poderá ajustar ainda mais as especificidades da sua aplicação.
A configuração do Apache depende da quantidade de tráfego e do tamanho das solicitações. Sem saber nada, é difícil recomendar além dos padrões.
Responder2
Se estiver correto, você está executando um servidor de 32 bits
32 bits são limitados a 4 GB de memória, 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. Esta barreira foi estendida através do uso de 'Extensão de Endereço Físico' (ou PAE) que aumenta o limite para 64GB embora o acesso à memória acima de 4GB seja um pouco mais lento.
não consigo descobrir se a imagem do kernel tem pae incluído.
você pode tentar fazer um apt-get install linux-image-generic-pae
se for isso, reinicie e veja se você usa mais memória.
ELse considere instalar um servidor de 64 bits