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

VPS: Как работать с серверами без свопа?

Я недавно развернул Java-приложение на VPS, но оно продолжает давать сбой, потому что через некоторое время JVM заканчивается нехватка памяти. У меня никогда не было этой проблемы на других серверах с «малым объемом памяти» благодаря свопу, но на этом VPS все по-другому: нет свопа, и только 50% фактических 512 мегабайт оперативной памяти «могут быть использованы» (они говорят, что 256 мегабайт гарантировано) . Есть ли способ ограничить потребление памяти? Я пробовал использовать переменные xms, но это не сильно помогло. Я также пытался поместить подкачку в файл, но это явно не разрешено.

заранее спасибо

Да, вы можете ограничить потребление памяти Java. См., Например, здесь: http://viralpatel.net/blogs/2009/01/jvm-java-increase-heap-size-setting-heap-size-jvm-heap.html

Но 256M - это очень мало для мира Java. Предлагаю вам получить лучше vps.

Вы можете ограничить доступную для виртуальной машины память в параметрах запуска виртуальной машины. При этом сказано, что если приложению нужен 1 ГБ, ему нужен 1 ГБ. Ограничение виртуальной машины не поможет (приложение может аварийно завершить работу из-за нехватки памяти).

512мб в наши дни ОЧЕНЬ мало. 256Мб даже меньше. В зависимости от приложения лучшим решением будет «получить сервер, способный запускать приложение».

Похоже, вы используете VPS на базе OpenVZ или Virtuozzo. Если это так, вероятно, стоит добавить «ulimit -s 1024» в / etc / profile и в сценарии запуска /etc/init.d/*. Учет памяти OpenVZ и Virtuozzo считает, что память для копирования при записи, зарезервированная для стека, фактически используется, а значение по умолчанию для зарезервированной памяти стека довольно велико (от 8 до 10 МБ в зависимости от вашего дистрибутива).