Skocz do zawartości
  • 👋 Witaj na MPCForum!

    Przeglądasz forum jako gość, co oznacza, że wiele świetnych funkcji jest jeszcze przed Tobą! 😎

    • Pełny dostęp do działów i ukrytych treści
    • Możliwość pisania i odpowiadania w tematach
    • System prywatnych wiadomości
    • Zbieranie reputacji i rozwijanie swojego profilu
    • Członkostwo w jednej z największych społeczności graczy

    👉 Dołączenie zajmie Ci mniej niż minutę – a zyskasz znacznie więcej!

    Zarejestruj się teraz

Rekomendowane odpowiedzi

Opublikowano

Cześć, mam problem. Postawiłem serwer na VPS, cały zrobiłem bez skryptu startowego a tu na sam koniec prac problem. Mianowicie, kiedy używam skryptu ./start.sh to po crashu nie wyłącza się w procesach proces Javy, co za tym idzie serwer nie może się odpalić bo jest za mało wolnego ramu. Jak to rozwiązać? Może jakoś da się dodać do skryptu startowego że w momencie gdy nie ma żadnego screena czyli serwer nie chodzi automatycznie przed ponownym uruchomieniem serwera będzie zabijał proces Javy? Pomocy, bo nie wiem jak to rozwiązać

20221216_141112.jpg

Opublikowano
Godzinę temu, Helios1993 napisał:

Pokaż ten skrypt.

Jednak nie tylko skrypt tak robi, jak sie samoistnie wywali po wlaczeniu samą komendą startową to też ciągle java jest w procesach i zużywa cały ram przez co dopiero musze zabić proces javy i dopiero odpalić serwer, nie mniej jednak skrypt poniżej 

 

#!/bin/sh

cd /home/mc

while true; do
  java -Xms6216M -Xmx6516M -jar mc.jar
  sleep 5
done

Opublikowano (edytowane)

No bo tak przecież działa skrypt który pokazałeś. To jest niekończąca się pętla, która pilnuje, żeby proces javy zawsze działał. Jak padnie to po upływie 5s pętla się zamyka i proces jest ponownie uruchamiany. Proponuję drobną zmianę - najpierw ubijamy wszystkie ew. działające procesy javy i dopiero wtedy startujemy serwer:

 

#!/bin/sh

cd /home/mc

while true; do

  killall -9 java
  java -Xms6216M -Xmx6516M -jar mc.jar
  sleep 5

done

 

I rozumiem, że masz to uruchomione na screenie, który następnie detachujesz. Oczywiście jak odpalasz z palca to też najpierw ubijamy, a potem startujemy:

 

killall -9 java && java -Xms6216M -Xmx6516M -jar mc.jar

 

 

Edytowane przez monsune
Opublikowano
13 minut temu, monsune napisał:

No bo tak przecież działa skrypt który pokazałeś. To jest niekończąca się pętla, która pilnuje, żeby proces javy zawsze działał. Jak padnie to po upływie 5s pętla się zamyka i proces jest ponownie uruchamiany. Proponuję drobną zmianę - najpierw ubijamy wszystkie ew. działające procesy javy i dopiero wtedy startujemy serwer:

 

#!/bin/sh

cd /home/mc

while true; do

  killall -9 java
  java -Xms6216M -Xmx6516M -jar mc.jar
  sleep 5

done

 

I rozumiem, że masz to uruchomione na screenie, który następnie detachujesz. Oczywiście jak odpalasz z palca to też najpierw ubijamy, a potem startujemy:

 

killall -9 java && java -Xms6216M -Xmx6516M -jar mc.jar

 

 

tylko zauważyłem że bez skryptu startowego dzieje się to samo, java ciągle działa po crashu gdy włączam po prostu komendą 

Opublikowano
Teraz, monsune napisał:

Przeczytaj raz jeszcze moją odpowiedź. Do samego końca i ze zrozumieniem.

Rozumiem że robi się pętla która ciągle odpala jave, jak najbardziej tylko że wciąż nie odpowiada mi to na pytanie dlaczego gdy skryptu startowego nie ma, uruchamiam serwer za pomocą komendy java -Xms6524M -Xmx6524M -jar mc.jar i dalej po crashu proces javy pozostaje - próbuje teraz jeszcze faktycznie z poprzednim zabijaniem javy które zaproponowałeś ale pytanie brzmi czy to normalne że ten proces zostaje że trzeba go zabijać

Opublikowano (edytowane)

Wyjaśniłem wcześniej, że gdy odpalasz z palca, tzn. bez skryptu, to jest taka sama sytyuacja jak ze skryptu, który jedynie pełni funkcję auto restartera po crashu. Java zostaje bo przecież ona nie crashuje, to tylko jar serwera crashuje. Jest to generalnie przykre, że trzeba ubijać środowisko za każdym razem, no ale to nie jest jakiś wielki problem nad którym warto się rozwodzić. A biorąc pod uwagę specyfikę działania Javy - tak jest wręcz lepiej.

 

 

Edytowane przez monsune
Opublikowano

Procesem jest JVM (wirtualna maszyna, w której działa Minecraft), a nie Java (język). Każdy crash nie crashuje samego serwera mc, a właśnie JVM, więc proces znika i pętla uruchamia nowy. Zabijanie procesu może prowadzić do stałych uszkodzeń plików, powinno się to robić jedynie w ostateczności.

Opublikowano

Nikt tu nie pisze o języku Java tylko o środowisku cały czas. I nie mówimy o JVM tylko o JRE, którego JVM jest komponentem. Nie każdy crash serwera oznacza crash środowiska, owszem, środowisko może ulec crashowi gdy np. zabraknie zasobów i pociągnie za sobą serwer, ale najczęściej to serwer crashuje sam z siebie i to jest chyba oczywiste, np. jako efekt bugów w pluginach, hacków, itp. Po takim crashu nie ma innej możliwości niż zabić środowisko, a uszkodzenia plików, o ile wystąpią, to stanie się to już w momencie crasha. Dlatego tak ważne są regularne backupy.

Opublikowano

Środowisko nie ma z tym żadnego związku, proces to tylko wirtualna maszyna i tylko ona może crashować od tego, co się w niej znajduje. W przypadku błędu w kodzie silnika/pluginu JVM crashuje, w przypadku zablokowania głównego wątku serwer jest wyłączany przez watchdoga, a w przypadku gdy zabraknie zasobów (ramu dla systemu) proces JVM jest zabijany przez system. Jeśli serwer mc dostaje crasha to proces znika i w normalnych warunkach nie ma możliwości by nadal tam został.

Opublikowano

No i właśnie o procesie JVM cały czas mowa. O co jeszcze chodzi tym razem? Jest chyba oczywiste na podstawie opisu sytuacji, że człowiekowi crashuje serwer, a nie że pada JVM w środowisku skoro przychodzi i pyta o "wiszący" proces JVM powszechnie zwany javą bo tak nazywa się ten proces. Trzeba to skillować przed ponownym startem serwera, a jak znasz inny sposób to powiedz jak to zrobić zamiast drążyć niewiadomo co i po co.

Jeśli chcesz dodać odpowiedź, zaloguj się lub zarejestruj nowe konto

Jedynie zarejestrowani użytkownicy mogą komentować zawartość tej strony.

Zarejestruj nowe konto

Załóż nowe konto. To bardzo proste!

Zarejestruj się

Zaloguj się

Zaloguj się poniżej.

Zaloguj się
×
×
  • Dodaj nową pozycję...