¿Por qué mi servidor sólo usa 3 GB de memoria?

¿Por qué mi servidor sólo usa 3 GB de memoria?

El servidor tiene 24 GB de memoria y 4 CPU de cuatro núcleos. Ejecuta un sitio web ocupado en Apache/MySQL/php y, a veces, muestra un mensaje de que la carga del servidor es demasiado alta. Cuando miro los registros, nunca usa más de 3 GB de memoria, lo que también me parece extraño. Esta podría ser una configuración de MySQL o Apache.

Aquí algunos datos

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 puede ver, aquí dice que hay 20 GB en uso. Pero cuando miro top/htop nunca supera el uso de 3092. Los procesadores no están realmente activos, la carga media es de 0,9. ¿Puedo aumentar de alguna manera la memoria que usa Apache y/o MySQL para ver si puede usar toda la memoria?


Lo siento, estuve fuera por un tiempo... Aquí está el resultado del 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

El límite de memoria de PHP es 128M

Veo ese límite de 3 gb en varias situaciones. Fi Htop, top y cuando inicio sesión en Webmin en el estado del servidor (sí, uso Webmin ya que hago mucha administración desde mi iPad;))

Intentaré agregar una captura de pantalla aquí...

Respuesta1

Estás utilizando 20951 de 24153. Las aplicaciones no solicitan más de 3092, por lo que el kernel utiliza el resto para caché y buffers. A medida que sus aplicaciones necesiten más memoria, el kernel reducirá el caché para adaptarse a los nuevos requisitos de la aplicación.

Ajustar la configuración de MySQL y Apache para obtener un rendimiento óptimo depende de la aplicación. En algunos casos, como los sitios web estáticos, un caché de sistema de archivos grande es excelente. Sin embargo, un sitio dinámico con una gran interacción con la base de datos se beneficiaría de algunos cambios en la configuración predeterminada de MySQL.

Percona tiene una buena herramienta para comenzar con la configuración de MySQL.http://tools.percona.com/wizardUna vez que tenga los conceptos básicos, puede modificar aún más los detalles específicos de su aplicación.

La configuración de Apache depende de la cantidad de tráfico y del tamaño de las solicitudes. Sin saber nada, es difícil recomendar más allá de los valores predeterminados.

Respuesta2

Si estoy en lo cierto, estás ejecutando un servidor de 32 bits.

32 bits están limitados a 4 gb de memoria a menos que uses la imagen pae:

Una computadora de 32 bits tiene un tamaño de palabra de 32 bits, esto limita teóricamente la memoria a 4 GB. Esta barrera se ha ampliado mediante el uso de la 'Extensión de dirección física' (o PAE), que aumenta el límite a 64 GB, aunque el acceso a la memoria por encima de 4 GB será ligeramente más lento.

No puedo encontrar si la imagen del kernel tiene pae incluido.

puedes intentar hacer un apt-get install linux-image-generic-pae

Si no es así, reinicie y vea si usa más memoria.

De lo contrario, considere instalar un servidor de 64 bits.

información relacionada