![¿Por qué mi servidor sólo usa 3 GB de memoria?](https://rvso.com/image/959231/%C2%BFPor%20qu%C3%A9%20mi%20servidor%20s%C3%B3lo%20usa%203%20GB%20de%20memoria%3F.png)
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.