Mem: 8176880k total, 8059736k used, 117144k free, 93040k buffers
Swap: 1004052k total, 108k used, 1003944k free, 7257056k cached
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
4992 mysql 20 0 291m 115m 5380 S 65 1.4 739:54.71 mysqld
20260 apache 20 0 43032 18m 3964 S 27 0.2 0:02.50 apache2
20154 apache 20 0 41588 16m 3964 S 10 0.2 0:00.40 apache2
<snip>
Это: Mem: всего 8176880к, б / у 8059736к; есть о чем беспокоиться !?
А идеи?
большое спасибо
изменить: забыл сказать, что я ничего не знаю о серверах, я приземлился с этим ...
ответ:
> free -m
total used free shared buffers cached
Mem: 7985 7665 320 0 89 6942
-/+ buffers/cache: 633 7352
Swap: 980 0 980
не похоже, что у меня все-таки проблема с памятью
Это нормально - значение VIRT часто бывает около этой цифры при использовании prefork.c
(что я предполагаю, что вы):
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
10385 apache 15 0 376m 48m 3932 R 20.3 1.2 0:01.34 httpd
10423 apache 16 0 376m 46m 4576 S 15.0 1.2 0:01.09 httpd
10153 apache 15 0 337m 61m 4672 S 11.6 1.6 0:03.94 httpd
10419 apache 15 0 383m 54m 4696 S 11.6 1.4 0:01.00 httpd
Значение, которое вы хотите отслеживать, - RES - это размер наибольшего объема памяти, который использует дочерний поток (в моем случае PHP запускается как часть этого потока, отсюда "раздувание" при загрузке библиотек и данных) . Поток не освободит выделенную память, однако, когда процесс apache убивает поток после его maxrequests в соответствии с
<IfModule prefork.c>
MaxRequestsPerChild 1000
поток вернется к своему собственному потреблению памяти.
Чтобы снизить эти значения, убедитесь, что вы загружаете только те модули apache, которые вам нужны, и отслеживайте потоки apache, пока вы запускаете очень большой скрипт PHP (ini_set('memory_limit', '128M');
затем рекурсивно загрузить данные в массив - это должно сработать). Затем, при использовании в реальном мире, уменьшайте значение MaxRequestsPerChild, пока не увидите свой apache RES
на разумном уровне.
Вот несколько полезных статей о настройке параметров:
Все нормально. Свободная память означает оперативную память, которая не используется системами, приложениями и кешем. Вы можете рассматривать «Буферы» и «Кэширование» как еще одну свободную RAM. Итак, у вас есть около 7 ГБ свободной оперативной памяти. С помощью команды:
free
Вы можете увидеть "реальную" свободную RAM в строке: - / + buffers / cache. Также вы можете использовать htop.