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

Сокет и пространство подкачки

У меня есть система, в которой не хватает памяти и много открытых подключений. но мое пространство подкачки используется не так уж и много.

Могут ли файловые дескрипторы сокета / сокета использовать пространство подкачки?

Кстати, это для системы Linux.

Спасибо

Что касается замены ядра собственной памятью: я бы пошел с ответом Кубанчика здесь. Что касается общего вопроса о нехватке памяти: убедитесь, что вы выполнили команду 'free' и посмотрите строку '- / + buffers / cache', которая сообщит вам более точную информацию о фактической используемой / свободной памяти.

По поводу использования сокета. При большой нагрузке (в зависимости от вашего приложения, конечно) он может съесть довольно много вашей памяти. Вот как вы можете рассчитать текущее использование памяти для ваших сокетов:

getconf PAGESIZE

Вероятно, он скажет вам «4096», что составляет 4 КБ. Теперь давайте узнаем, сколько страниц используется для текущих сокетов:

cat /proc/net/sockstat

Вы получите информацию о текущем использовании сокетов в системе, примерно так (это при большой нагрузке):

sockets: used 250755
TCP: inuse 5 orphan 0 tw 0 alloc 250873 mem 895545
UDP: inuse 4 mem 2
UDPLITE: inuse 0
RAW: inuse 0
FRAG: inuse 0 memory 0

Нас интересует «mem 895545», который сообщает нам количество использованных страниц. Итак, чтобы рассчитать использование памяти для сокетов на коробке, мы умножаем размер страницы на это значение mem:

4096 * 895545 ~= 3.5Gb

Сокет не использует много памяти: есть только ссылка на структуру ядра и несколько буферов в пользовательском пространстве. Ядро должно поддерживать окно передачи и приема для сетевых сокетов и небольшой буфер для сокетов файловой системы. Но существование сокета подразумевает какой-то процесс взаимодействия с кодом и данными. Но вы не сказали, каковы связи.

Возможности для решения этой проблемы могут быть в зависимости от того, в каком состоянии находятся сокеты, что они делают и какие процессы открывают сокеты, но из-за отсутствия дополнительной информации это невозможно дать совет.

Кубанчик может быть прав - ты уверен, что твоя память действительно исчерпала себя?

Недостаточно памяти, но подкачка используется мало? Я думаю, это случай linuxatemyram.com как в этот вопрос.

После быстрого поиска в Интернете кажется, что ядро ​​Linux вообще не выполняет подкачку (подкачку) своей собственной памяти, которая также включает дескрипторы сокетов.