Назад | Перейти на главную страницу

Вопрос памяти для сервера Apache

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.