![Почему мой сервер использует только 3 ГБ памяти?](https://rvso.com/image/959231/%D0%9F%D0%BE%D1%87%D0%B5%D0%BC%D1%83%20%D0%BC%D0%BE%D0%B9%20%D1%81%D0%B5%D1%80%D0%B2%D0%B5%D1%80%20%D0%B8%D1%81%D0%BF%D0%BE%D0%BB%D1%8C%D0%B7%D1%83%D0%B5%D1%82%20%D1%82%D0%BE%D0%BB%D1%8C%D0%BA%D0%BE%203%20%D0%93%D0%91%20%D0%BF%D0%B0%D0%BC%D1%8F%D1%82%D0%B8%3F.png)
На сервере 24 ГБ памяти и 4 четырехъядерных процессора. Он запускает загруженный веб-сайт на apache/MySQL/php и иногда выдает сообщение о том, что нагрузка на сервер слишком высока. Когда я смотрю логи, он никогда не использует больше 3 ГБ памяти, что тоже кажется мне странным. Это может быть настройка MySQL или apache.
Вот некоторые данные
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
Как вы видите, здесь указано, что используется 20 ГБ. Но когда я смотрю на top/htop, там никогда не превышается использование 3092. Процессоры не очень активны, средняя загрузка составляет 0,9. Могу ли я как-то увеличить объем памяти, используемой Apache и/или MySQL, чтобы посмотреть, может ли он использовать всю память?
Извините, меня некоторое время не было... Вот вывод команды 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
Значение memory_limit для PHP составляет 128 МБ.
Я вижу этот предел в 3 ГБ в нескольких ситуациях. Fi Htop, top и когда я вхожу в Webmin в статусе сервера. (да, я использую Webmin, так как много управляю со своего iPad ;))
Я попробую добавить скриншот сюда...
решение1
Вы используете 20951 из 24153. Приложения не запрашивают больше 3092, поэтому ядро использует остаток для кэша и буферов. Поскольку вашим приложениям требуется больше памяти, ядро уменьшит кэш, чтобы удовлетворить новые требования приложений.
Настройка конфигурации MySQL и Apache для оптимальной производительности зависит от приложения. В некоторых случаях, например, для статических веб-сайтов, большой кэш файловой системы — это здорово. Однако динамический сайт с интенсивным взаимодействием с базой данных выиграет от нескольких изменений в конфигурации MySQL по умолчанию.
У Percona есть отличный инструмент, который поможет вам начать работу с конфигурацией MySQL.http://tools.percona.com/wizardПосле того, как вы разобрались с основами, вы можете внести дальнейшие изменения в соответствии со спецификой вашего приложения.
Конфигурация Apache зависит от объема трафика и размера запросов. Не зная ничего, трудно рекомендовать что-то, выходящее за рамки значений по умолчанию.
решение2
Если я прав, у вас 32-битный сервер.
32-битная версия ограничена 4 ГБ памяти, если вы не используете образ pae:
32-битный компьютер имеет размер слова 32 бита, что теоретически ограничивает память 4 ГБ. Этот барьер был расширен за счет использования «Расширения физического адреса» (или PAE), которое увеличивает предел до 64 ГБ, хотя доступ к памяти свыше 4 ГБ будет немного медленнее.
Я не могу найти, включен ли pae в образ ядра.
вы можете попробовать сделать apt-get install linux-image-generic-pae
если это так, перезагрузите компьютер и посмотрите, используете ли вы больше памяти.
ELse рассмотрите возможность установки 64-битного сервера