LINUX.ORG.RU

Java, web и memory

 , , ,


0

2

Доброго времени суток, продолжается мое обучение Java в вебе и столкнулся с такой ситуацией. На vds(ubuntu 16. 04.1, 1gb ram) устанавливаю wildfly, создаю приложение (spring MVC) очень простое несколько страниц и запускаю его на сервере. Захожу через несколько дней в консоль системы, а там закончилась озу. Это так и должно быть или я что то не так сделал? И сколько вообще требуется для таких приложений озу?

512M должно хватить. Может быть утечка где-то, может быть в твоём приложении, сложно сказать. Настраивай JVM на дамп памяти после OOM, разбирай дамп, смотри, куда память ушла.

Ещё смутно припоминаю проблемы с Java и виртуализацией типа OpenVZ, как раз с памятью были какие-то проблемы. На всякий случай убедись, что виртуализация через KVM сделана.

Legioner ★★★★★ ()
Последнее исправление: Legioner (всего исправлений: 1)
Ответ на: комментарий от unt1tled

У нас всё в порядке с памятью, например. Другое дело что если налабал сайт размером со страничку, толку от поиска утечек - никакого. Вон PHP вообще каждую страничку заново рестартица, всё тормозит ппц, но живут же люди.

stevejobs ★★☆☆☆ ()
Ответ на: комментарий от chrisred

Wildfly - это application server. По сути полная реализация спецификации Java EE. Если тебе нужно слабать простое веб-приложение, то посмотри в сторону Spring Boot. Или деплой свое Spring приложение ручками в Tomcat или какой-нибудь Undertow. Потребление памяти будет на порядок ниже.

anonymous ()

pom.xml

<packaging>war</packaging>
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>1.4.2.RELEASE</version>
    </parent>

    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-thymeleaf</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-devtools</artifactId>
            <optional>true</optional>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-tomcat</artifactId>
            <scope>provided</scope>
        </dependency>
    </dependencies>

    <properties>
        <java.version>1.8</java.version>
    </properties>


    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>


Стандартный пример на spring mvc, гайд был взят с сайта самого спринга.

chrisred ()
Ответ на: комментарий от unt1tled

у нас коллеги есть, у которых ровно за сутки память утекает так, что заканчивается на топовом сервере. Они просто рестартуют незадолго до того, как закончится память (гигабайт за 5 до конца)

stevejobs ★★☆☆☆ ()
Ответ на: комментарий от stevejobs

Это томкат так кушает? Или спринг? Или они настолько криворуки, что на даже на жабе умудряются писать огромные утечки?

ps: щас для смеха рестартанул томкат (было заюзано около 2 гигов), потребление упало до 600МБ и сайт стал в разы быстрее отзываться. Через 5 минут правда опять выжрал гигабайт, но вроде работает шустро пока.

Так что твоя шутка про рестарт сервера по ночам — не такая и шутка.

unt1tled ★★★★ ()
Последнее исправление: unt1tled (всего исправлений: 1)

А ты хоть ограничения на xms, xmx, perm/metaspace выставил? Если нет, ставь срочно, чтобы были меньше твоего гига (минус рама на ведро линукса)

stevejobs ★★☆☆☆ ()