Я смотрю на использование памяти приложением Rails (оно использует фоновые процессы через Resque), и, поскольку общий ответ на вопрос «сколько рабочих слишком много» был «проверить и посмотреть», я выполнил несколько команд памяти и задался вопросом если кто-то может помочь выяснить, достаточно ли уже используется память, или я все еще могу добавить дополнительных рабочих ..
итак (это все при максимальной нагрузке):
$ free -t -m
total used free shared buffers cached
Mem: 1756 1532 223 0 12 229
-/+ buffers/cache: 1291 464
Swap: 895 10 885
Total: 2652 1543 1108
$ vmstat
procs -----------memory---------- ---swap-- -----io---- -system-- ----cpu----
r b swpd free buff cache si so bi bo in cs us sy id wa
0 0 10588 156172 13400 326476 1 6 4 0 5 4 1 0 99 0
Если есть дополнительная информация, которую я могу предоставить, чтобы ответить на этот вопрос, я буду рад это сделать. Если вопрос в чем-то странный, дайте мне знать, я буду рад исправить и т. Д.
Очевидно, что если вы активно меняете местами, у вас их слишком много. Замена использование не означает, что вы активно меняете местами. Swap I / O означает, что вы активно меняете местами.
Однако активная подкачка - не единственный способ, которым чрезмерное использование памяти приложения может навредить вам. Каждый байт памяти, который активно используют приложения, - это один байт памяти, который нельзя использовать в качестве дискового кеша. Если ваше приложение не слишком сильно касается диска, это не имеет значения. Но если это произойдет, вы можете столкнуться с очень низкой производительностью из-за низкой скорости попадания в кеш, даже если нет подкачки.
Первое, на что нужно обратить внимание, это сколько памяти либо свободно, либо используется в качестве кеша. Если это слишком мало, вы рискуете поменяться местами. В данном случае это около 400 МБ. Так что вы не рискуете обменять местами.
Второе, на что следует обратить внимание, - подходит ли дисковый кеш для вашего приложения. Один из сложных моментов - считать ли свободную память частью дискового кеша. В вашем случае свободная память, вероятно, нужна для оттока памяти. То есть его нельзя использовать в качестве дискового кеша, потому что кэш постоянно сжимается по мере того, как использование памяти приложениями увеличивается или уменьшается. Итак, ваш дисковый кеш составляет около 200 МБ.
Достаточно ли этого, зависит от того, как ваше приложение использует диск. Но если это не так, раздачей будет чрезмерный дисковый ввод-вывод и низкая производительность.
Вам следует проверить файл / proc / meminfo. Он содержит подробные ответы на то, что вы ищете. Имейте в виду, что кеш и буфер - это, по сути, свободная память, за исключением грязных страниц в кеше.
Когда файл читается с диска, он кэшируется в памяти. В системе существует две копии одного и того же файла, одна кэшируется, а другая на диске. Следовательно, когда есть необходимость освободить память, легче очистить кеш, чем очистить блочную память или подкачку.
В вашем сценарии есть небольшой своп. Своппинг - это неплохо, если только он не перебивает ситуацию. Похоже, у вас нет проблем с ресурсами памяти, и было бы хорошо, если бы вы могли фиксировать вывод / proc / meminfo и архитектуру системы, когда использование системы находится на самом высоком уровне.
Судя по тому, что вы указываете, я вижу небольшое свидетельство подкачки, но не очень высокое на снимке. Я мог бы остановиться на настройках, которые вы сейчас используете, и немного отступить. Одна вещь, которую вы действительно хотите избежать, - это подкачка, которая в основном указывает на истощение памяти.