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

На моем сервере заканчивается память, несмотря на то, что все свопы свободны

Я использую Debian 6 (Squeeze). На сервере 4 ГБ памяти и 8 ГБ подкачки. Я начинаю получать ошибки выделения памяти при высокой загрузке приложения, но с помощью команды top:

Mem:   4055944k total,  3915436k used,   140508k free,    10444k buffers
Swap:  7999480k total,        0k used,  7999480k free,  3604496k cached

Система даже не пытается использовать своп?

Почему это могло происходить? Я хотел бы обновить основную память, но сейчас это невозможно.

Спасибо.

По запросу ошибка / исключение:

terminate, вызываемый после создания экземпляра 'std :: bad_alloc' what (): std :: bad_alloc ·

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

Кроме того, вот результат команды 'free -m':

             total       used       free     shared    buffers     cached
Mem:          3960       3334        625          0         19       2847
-/+ buffers/cache:        467       3493
Swap:         7811          0       7811

Однако сейчас система не находится под большой нагрузкой.

Это результат сверху. Посмотрите на следующий результат

free -m

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

Я уверен, что у вас осталось много свободной памяти.