如何在具有 1GB RAM 的 Centos7 中运行 XWiki?

如何在具有 1GB RAM 的 Centos7 中运行 XWiki?

根据 XWiki 文档,1GB 足以运行 XWiki。

https://www.xwiki.org/xwiki/bin/view/Documentation/AdminGuide/Performances/#HMemory

适用于 Java 8(即 XWiki >= 8.1)。请注意,Java 8 中不再有 permgen:小型和中型安装:最小 1024MB(-Xmx1024m)

我根据文档安装并配置了 Tomcat。

https://www.xwiki.org/xwiki/bin/view/Documentation/AdminGuide/Installation/InstallationWAR/InstallationTomcat/

我有(在conf/tomcat.conf

JAVA_OPTS="-Djava.security.egd=file:/dev/./urandom -Djava.awt.headless=true -Xmx750m -XX:MaxPermSize=125m -XX:+HeapDumpOnOutOfMemoryError"

有时

JAVA_OPTS="-Djava.security.egd=file:/dev/./urandom -Djava.awt.headless=true -Xmx1024m -XX:MaxPermSize=192m -XX:+HeapDumpOnOutOfMemoryError"

而且它随机崩溃。我甚至无法添加其他用户。这是转储文件的第一部分hs_err_pid11420.log

# There is insufficient memory for the Java Runtime Environment to continue.
# Native memory allocation (mmap) failed to map 105709568 bytes for committing reserved memory.
# Possible reasons:
#   The system is out of physical RAM or swap space
#   The process is running with CompressedOops enabled, and the Java Heap may be blocking the growth of the native heap
# Possible solutions:
#   Reduce memory load on the system
#   Increase physical memory or swap space
#   Check if swap backing store is full
#   Decrease Java heap size (-Xmx/-Xms)
#   Decrease number of Java threads
#   Decrease Java thread stack sizes (-Xss)
#   Set larger code cache with -XX:ReservedCodeCacheSize=
#   JVM is running with Unscaled Compressed Oops mode in which the Java heap is
#     placed in the first 4GB address space. The Java Heap base address is the
#     maximum limit for the native heap growth. Please use -XX:HeapBaseMinAddress
#     to set the Java Heap base and to place the Java Heap above 4GB virtual address.
# This output file may be truncated or incomplete.
#
#  Out of Memory Error (os_linux.cpp:2766), pid=11420, tid=0x00007fcd0d720700
#
# JRE version: OpenJDK Runtime Environment (8.0_212-b04) (build 1.8.0_212-b04)
# Java VM: OpenJDK 64-Bit Server VM (25.212-b04 mixed mode linux-amd64 compressed oops)

我没有使用 HSQLDB。我在同一台服务器上使用 Postgresql。

CentOS Linux 版本 7.6.1810(核心)、XWiki 10.11.8

答案1

我通过添加交换文件修复了这个问题。

https://www.digitalocean.com/community/tutorials/how-to-add-swap-on-centos-7

dd if=/dev/zero of=/swapfile count=125 bs=1MiB # 125 MB
chmod 600 /swapfile
mkswap /swapfile
swapon /swapfile
sysctl vm.swappiness=10
sysctl vm.vfs_cache_pressure=50

我将 Tomcat 缩小到 750MB(对于一个空的 wiki 来说,这个大小似乎太高了)。

conf/tomcat.conf
JAVA_OPTS="-Djava.security.egd=file:/dev/./urandom -Djava.awt.headless=true -Xmx750m -XX:MaxPermSize=125m -XX:+HeapDumpOnOutOfMemoryError"

现在我的top节目几乎没有免费的,但它不会崩溃。

%Cpu(s):  0.0 us,  0.0 sy,  0.0 ni,100.0 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
KiB Mem :  1015008 total,    67244 free,   844308 used,   103456 buff/cache
KiB Swap:   127996 total,        0 free,   127996 used.    18232 avail Mem

  PID USER      PR  NI    VIRT    RES    SHR S %CPU %MEM     TIME+ COMMAND
13409 tomcat    20   0 3065908 741928   3724 S  0.3 73.1   2:30.68 java

相关内容